
För precis ett år sen ville jag se hyllade föreställningen Arv på Dramaten. Åtta timmar av magisk teater. Men tiden var knapp, det var inte många veckor kvar innan den skulle tas ner från repertoaren. Jag satte upp en bevakning via en webbtjänst som skickade SMS när bokningssidan ändrades och ordet “slutsåld” försvann. Jag såg Arv två gånger.
Det fröet låg kvar.
Torsdag, lunch
Den 30 januari installerade jag Claude Code i terminalen och pekade den mot en tom mapp på datorn. Jag har jobbat med webb sedan 1995, som redaktör, produktägare, konceptutvecklare, men aldrig skrivit kod. Jag är nybörjare på det här, både på att utveckla och på att ta hjälp av AI för att göra det. Men jag ville testa att bygga något på riktigt. Som en webbsnickare som får hjälp med bygget.
Hemma hade jag en Raspberry Pi 4, julklapp från barnen. Stod i bokhyllan. Jag frågade Claude om den kunde installera det som behövdes där.
Det gick bra.
“Kan du ta reda på biljettstatus på Dramaten?”
Ungefär min första fråga. Ingen spec, ingen wireframe.
Claude utforskade dramaten.se, hittade att föreställningsdata låg inbäddad i sidans HTML, och frågade om jag ville spara det i en databas. Ja. Om jag ville kunna bevaka föreställningar. Ja. Så rullade det vidare.
“Jag vill skicka notiser via mejl när det finns biljetter, kan du kolla vilka tjänster som är bra för det?” Claude kom tillbaka med alternativ och rekommenderade Resend – gratis, enkelt API. Jag sa kör.
“Kan du göra en tillgänglighetsgranskning?” Claude körde en, hittade problem, åtgärdade.
“Är vi artiga mot deras servrar när vi skrapar?” Claude la in pauser mellan anropen.
Så gick det till. Jag vet vad jag behöver fråga om. Claude vet hur man bygger det.
Vid kvällen hade jag en fungerande webbapp. Skrapning, inloggning, bevakning, mejlnotiser. På julklappen i bokhyllan.
Dag 2–4
Dag två: SMS-notiser. Changelog. Välkomstguide. Jag bestämde att man loggar in innan man bevakar – färre felstavade mejladresser.
Dag tre: fler teatrar. Kulturhuset Stadsteatern visade sig köra Tixly som biljettsystem. Liksom Uppsala, Scala, Malmö, Helsingborg, Borås och Göteborg. Sju av åtta teatrar, samma system. En dag, åtta teatrar.
Dag fyra: flytt från Raspberry Pi till en riktig server. Egen domän – biljettkoll.se. Google-inloggning. Och städning – 1 500 rader kopierad kod ersatt med gemensamma moduler. Varje skraper hade byggts som en kopia under de snabba dagarna. Jag sa att det behövde göras om.
I takt med att projektet växte föreslog Claude att vi skulle ta fram en plan innan vi började bygga. Dag ett hade allt vuxit fram organiskt. Men åtta teatrar och en refaktorering behövde struktur. Jag gick på det.
Under helgen fick några vänner testa och komma med förslag på förbättringar. Ovärderlig hjälp som alltid.
CLAUDE.md
Det gick inte alltid smidigt. Claude föreslog vid ett tillfälle att jag borde optimera för Google med köplänkar så att folk kunde hitta biljetter via min sajt. Då satte jag ner foten. Det här ska aldrig vara ett ställe att köpa biljetter på. Det ska bara vara till för att upptäcka föreställningar som byter status. Då fick jag ett ödmjukt “förlåt, du har rätt, jag ska aldrig…” tillbaka.
Den typen av gränsdragningar hamnade i en fil som heter CLAUDE.md i roten av projektet. Claude läser den varje gång den börjar jobba. Där har Claude noterat mina krav: följ Web Sustainability Guidelines, var artig mot teatrarnas servrar när vi skrapar, alla textelement ska fungera i mörkt läge med tillräcklig kontrast.
Det är i grunden min erfarenhet, fast nedskriven så att Claude följer den varje gång.
Dag 5
Feber skrev om biljettkoll.se Tjänsten var fyra dagar gammal och domänen en dag. En ironisk sak jag tänkt på är att jag har byggt ett verktyg som gör det svårare för mig själv att få tag i biljetter, men lättare för alla.
Vad jag lärde mig
Det är inte magi och det är inte kodning. Man behöver veta vad man vill bygga och varför. Man behöver kunna ge tydlig feedback på resultatet. Jag bestämmer vart vi ska, Claude bygger vägen dit.
Jag snickrar redan på nästa idé, inspirerad av Johan Hallberg, “man borde köra en MVP* i veckan”. Domänen är ledig. Byggstarten har börjat.
* MVP = bygg den enklaste versionen av din produkt som faktiskt fungerar, släpp den, lär dig av användarna, förbättra sedan. Istället för att gissa vad folk vill ha i ett halvår. MVP - Minimum Viable Product