Bag om · denne side

Den her side beskriverikke hvad jeg kan. Den er det.

Hver side på brixai.dk er bygget ved at tale med en AI i Claude Code, på min egen maskine — også den du læser nu, og funktionerne der kører mens du gør. Værktøjet kan bygge komponenterne. Det her handler om det, det ikke kan: beslutningerne der afgjorde om siden blev god eller bare endnu en.

Nicolai Brix
Historiefortæller · AI-praktiker
Odense
Scroll

Jeg bygger det hele i Claude Code — en agent på min maskine, jeg taler til. Den skriver koden; jeg træffer de valg en model ikke kan træffe for dig — om smag, om hvornår man siger nej, om hvad der er godt nok. Det er de valg, der er forskellen.

Seks beslutninger

Sådan blev den god
i stedet for generisk

Hver beslutning har et belæg fra den faktiske byggehistorik. Fold "vis processen" ud, så ser du den ægte prompt eller commit bag.

01
Designet

Værktøjet tilbød mig en genvej. Jeg tog den ikke.

Lovable ville helst lægge designet i Tailwind — standardvejen, og præcis dér de fleste sider ender med at ligne hinanden. Jeg holdt på mit eget: ét designsystem med mine egne farver, fonts og afstande. Tailwind ligger der stadig i projektet, fra skabelonen. Ingen af mine komponenter rører den. Forskellen på den her side og en generisk SaaS-side er ikke et plugin — det er det fravalg.

Praktisk AI

AI er ikke magi. Det er håndværk.

Tag en snak
Inter · lilla gradient · runde cards · ikon. Det værktøjet helst vil.
Praktisk AI

AI er ikke magi. Det er håndværk.

Tag en snak
Fraunces · papir & blæk · accent. Det jeg valgte.
Samme ord. Forskellen er designet — og det er et valg, ikke en standard.
src/index.css åbner med: :root{ --paper:#F1ECE1; --ink:#17140F; --accent:#D83A24 … } commit: "Lag global CSS i index.css" Tailwind (styles.css) findes fra skabelonen — men 0 komponenter bruger utility-klasser.
02
Kontrollen

Jeg bad ikke om et flot design. Jeg bad om mit eget — én til én.

Instruktionen var ikke "lav det pænt". Den var: gengiv præcist det jeg allerede havde bygget, og forbedr ingenting. Jeg gav værktøjet en forbudt-liste — ikke Inter, ikke Roboto, ingen lilla gradients, ingen runde cards, ingen ikoner. At sige nej, præcist, er halvdelen af håndværket. En model gør gerne tingene "bedre", hvis du lader den. Pointen var, at den ikke skulle.

Uddrag af kickoff-prompten til Claude Code: "Din opgave er at gendanne den 1:1 i React — ikke at redesigne. … Forbudt: Inter, Roboto, Space Grotesk. Ingen lilla/blå SaaS-gradients. Ingen runde gradient-cards. Ingen ikoner på cards."
03
Metoden

Ét lille greb ad gangen — og jeg ser ændringen før den gemmes.

Siden er bygget i mange små skridt, ikke i ét stort spring. Én sektion, én tekst, én rettelse — og hver gang ser jeg præcis hvad der ændrer sig, før jeg gemmer det. Det lyder kedeligt. Det er grunden til, at en side bygget af hundredevis af ændringer stadig hænger sammen, i stedet for at skride en lille smule for hver gang.

En detalje: min oprindelige håndbyggede skabelon ligger stadig i projektmappen — men uden for det der bliver lagt online. Referencen ved siden af arbejdet, ikke i vejen for det.

commits (udpluk): "forside — spor 1" · "'prøv promptcoachen gratis' i CTA" · "Fjernede punktum efter AI" 72 commits i alt — kun én bevidst stor ændring (Kursus → Træning). Designkilden gitignored i _design-source/
04
Teksten

Ordene er ikke gemt i koden. De er indhold, jeg styrer.

Al tekst på siden lever som indhold med sine egne navne — adskilt fra koden, der viser den. Så kan jeg rette en formulering, eller skrive hele siden om fra salg til vidensdeling, uden at rode i programmering — og pege værktøjet helt præcist hen på den ene blok, der skal ændres. Samme disciplin som at briefe en fotograf: vær præcis om hvad der skal laves, og lad håndværket ske.

Hver tekstblok har et stabilt ID: HERO-BODY, WAYS-03 Kilden ligger uden for koden, i en separat tekstfil. commit: "omskriv copy til vidensdeling"
05
Agenten

En del af siden skriver og opdaterer sig selv.

Hver uge samler en agent ugens AI-nyt, skriver det, og lægger det live på siden — uden at jeg rører det. Det er ikke en demo af hvad en agent kan. Det er en agent, der gør et fast stykke arbejde, hver uge, mens jeg laver andet. Det du læser i Journal, er skrevet af den og redigeret med omtanke.

n8n-agent → færdig markdown committet til content/blog/ → siden bygger om automatisk. lib/blog.ts læser /content/blog/*.md Flowet er tegnet i agent-n8n-flow.png
06
Disciplinen

Før jeg byggede videre, beviste jeg at røret virkede.

Tidligt lavede jeg én bevidst, ufarlig ændring og fulgte den hele vejen — fra min maskine, gemt, online — bare for at se at kæden holdt. Så slettede jeg den igen. Det er en lille ting. Men det er forskellen på at bygge oven på et fundament man har afprøvet, og at håbe. Man tester røret, før man fylder vand på.

commit: "test: bevis edit-commit-push-kaeden" senere: "chore: fjern kaede-test fra forsiden"

Det der ikke kan ses i koden

Og så det, der gik galt.

Mobilen var ikke rigtig i første hug — menuen og et par afstande måtte rettes bagefter. Der lå dubletter og død kode, jeg ryddede op i. Og agenten skrev på et tidspunkt et indlæg med et forkert filnavn, så jeg måtte slette det og køre igen. Det hører med. En side, der kun viser det polerede resultat, skjuler det eneste, der er værd at lære af.

fix: mobil-navigation (hamburger-menu) chore: ryd dublet meta-description Delete =content/blog/…toke.md — agentens fejl-filnavn, slettet og kørt igen
Prøv det

En sætning bliver til software. Lige her.

Promptcoachen på siden coacher din prompt — og løser aldrig opgaven for dig. Det her gør det modsatte, med vilje: skriv en kort besked om et lille stykke UI, og se det blive bygget og vist med det samme, i sidens egne farver. Med snor i — den laver kun små ting, og kun her.

en rolig "Book et kald"-knapet lille kort med titel og teksten notits-boks med accentkant
Resultat
Skriv noget, eller vælg et forslag — så bygger den det her.
Sådan er værkstedet sat op

Tre værktøjer,
hver med én opgave

Folk spørger hvordan det hænger sammen rent praktisk. Kort fortalt: tre værktøjer, der hver gør én ting.

Værkstedet

Claude Code

Her sker al udviklingen. En agent på min egen maskine, jeg taler til: den skriver koden, retter kirurgisk og kører selv git. Ikke kopiér-indsæt fra en chat — det er her tingene faktisk bliver bygget.

Sandheden i midten

GitHub

Jeg committer og pusher hver ændring hertil. Historik og sikkerhedsnet, intet tabt. Det er sandheden, de to andre taler med. Og ændringer her koster ikke Lovable-credits.

Host + maskinrum

Lovable

Trækker fra GitHub og kører siden live. Det er også her skyen ligger: Supabase-databasen og funktionerne bag fx promptcoachen. Jeg byggede her i starten — nu bygger jeg i Claude Code, og Lovable hoster og holder motoren.

Jeg bygger i Claude Code, GitHub holder sandheden, og Lovable hoster og kører databasen. Det er hele maskinrummet — og det er enklere end det lyder.

Siden er ikke færdig.
Det er hele pointen.

Du står i en case, der stadig bygges. Værktøjerne er blevet gode nok til, at en idé og lidt stædighed rækker langt — og jeg deler hvordan, fordi det er mere brugbart end at lade som om det er magi.