Problemet
På många orter är väntetiden till uppkörning lång. Tider blir lediga när andra avbokar, men de bokas snabbt igen. Den som vill ha en tidigare tid måste därför logga in och söka om och om igen, även på kvällar och helger. Det tar tid och fungerar dåligt för den som har jobb eller skola.
Vi ville att det arbetet skulle göras automatiskt men ändå ske i kundens namn. Kunden ska äga sin bokning och identifiera sig med sitt eget BankID. Uppkörningstid är en fristående tjänst och har ingen koppling till Trafikverket.
Vad vi byggde
På uppkorningstid.se väljer kunden ort, körkortskategori, provtyp och datumintervall. Sedan identifierar hen sig med BankID. Därefter sköts sökningen på vår sida, och kunden kan stänga webbläsaren. Kunden väljer också vad som ska hända när en tid dyker upp. Tjänsten kan boka tiden direkt, reservera den eller bara meddela via SMS och e-post. Har kunden redan en tid släpps den gamla när en tidigare bokas.
Enligt sajten täcker tjänsten 80+ orter och alla körkortskategorier, både körprov och kunskapsprov. Den kostar 299 kr i månaden utan startavgift eller bindningstid.
Tekniska utmaningar och hur vi löste dem
Arkitektur: webb, kö och worker
Allt ligger i ett monorepo med Turborepo och Bun. Webbappen är byggd i Next.js och sköter sajt, konto, kassa och admin. Bevakningarna körs av en separat worker. Den hämtar jobb från en kö i BullMQ som ligger på Redis. Databasen är PostgreSQL med Prisma, och schemat delas mellan webb och worker. När sökningarna körs i en egen process påverkas de inte av att sajten driftsätts eller får mycket trafik.
Bevakning som tar hänsyn till källan
Workern kontrollerar regelbundet om det finns lediga tider för de kombinationer av ort och provtyp som kunderna bevakar. Kunder som vill ha samma sak delar på samma kontroll, så att antalet anrop följer efterfrågan och inte antalet kunder. Takten anpassas till tid på dygnet. När en tid hittas jämförs den med varje kunds önskemål, och bokningen görs i den kundens egen inloggade session.
BankID och sessioner som tar slut
Kunden loggar in med sitt eget BankID, och bokningen görs i hens namn. Vi hanterar aldrig kortuppgifter eller lösenord till Trafikverket. Enligt sajten loggar Trafikverket sedan hösten 2026 ut sessioner efter 30 minuter. Vi byggde därför ett flöde där kunden får en inloggningslänk när sessionen har gått ut. Bevakningen fortsätter när kunden har loggat in igen. Den här typen av yttre förändringar är vardag för en tjänst som bygger på ett system som någon annan äger. Det måste gå att anpassa sig snabbt utan att kunderna tappar sina bevakningar.
Notiser, betalning och support
SMS och e-post går via kö, och e-posten byggs med React Email och skickas via Resend. Prenumerationerna sköts av Stripe, som hanterar kort och Klarna. Kortuppgifterna stannar hos Stripe och når aldrig oss. Admin har vyer för användare, sökningar, prenumerationer, utskick, statistik, driftstatus och support. Vi har också byggt ett internt verktyg för support och drift. Där kan en AI-agent slå upp ett kundärende och se hela historiken, med åtkomstregler som avgör vad den får göra.
SEO och innehåll
De flesta kunder hittar tjänsten via Google. Därför har sajten egna sidor för körprov, kunskapsprov, lediga tider och enskilda orter, plus en blogg om väntetider och provbokning. Sitemapen anger när varje sida senast ändrades, och nya sidor anmäls direkt till sökmotorer via IndexNow. Det finns också en llms.txt för AI-sökmotorer och delningsbilder som genereras per sida. Varje ortsida har innehåll som gäller just den orten, så att den inte blir en mall där bara stadsnamnet byts ut.
Vad vi lärde oss
- Bygg för att omvärlden ändras. När en tjänst bygger på ett system som någon annan äger måste den klara att regler, sessioner och flöden ändras utan förvarning.
- Kör bakgrundsjobb för sig. När sökningar körs i en egen worker med kö kan webben driftsättas när som helst utan att bevakningarna avbryts.
- Var ärlig i texterna. Vi lovar ingen tid, eftersom det beror på ort och avbokningar. Den ärligheten minskar antalet supportärenden och ger färre missnöjda kunder.
- SEO är en del av produkten. Sidor per ort med eget innehåll och bra teknisk grund ger trafik som inte kostar per klick.
Vad det betyder för dig som kund
Uppkörningstid visar att vi kan bygga och driva en tjänst med prenumerationer, bakgrundsjobb, BankID och SMS dygnet runt, och få den att synas på Google. Om ditt projekt behöver en webbapp med inloggning, betalningar, köer eller ett seriöst SEO-arbete kan vi utgå från det vi redan vet fungerar. Läs mer om webbutveckling och SEO, eller mejla info@luxegroup.se.