En samtale med Halfdan Harring — fulde navn Halfdan Valentin Harring — den danske fullstack-udvikler og medstifter af Quiz Fight. Vi talte om at bygge produkter fra ende til anden som et en-mands-studie, teknikken bag Quiz Fight, og hvad han har lært af mange års produktudvikling.
Hvem er Halfdan Harring — 30-sekunders-versionen?
Jeg er Halfdan Harring, en dansk fullstack-udvikler og medstifter af Quiz Fight. Jeg bygger mine egne produkter fra ende til anden fra et en-mands-studie i Aarhus — frontend, backend, infrastruktur, design og alle de kedelige dele midtimellem.
Mit fulde navn er Halfdan Valentin Harring, og gennem årene har jeg sendt en lang række produkter i markedet: Quiz Fight, HeadToHead, TaskMondo og en stak af MVP’er. Den røde tråd er at få tingene live — jeg vil hellere have noget ude og lære af rigtige brugere end at finpudse noget i en evighed.
Hvad er Quiz Fight, og hvorfor byggede du det?
Quiz Fight er et konkurrencepræget mobil-quizspil — hurtige 1v1-dueller, vennerum og streak runs, med et rangsystem. Det er bygget til at føles som en kamp: hurtige runder, en tydelig modstander og en score, du faktisk går op i.
Jeg byggede Quiz Fight, fordi de fleste quiz-apps føles som flashcards med et stopur. Jeg ville have game-feel fra et rigtigt konkurrencespil — haptik, animationer, momentum — oven på trivia, der er reelt fair. Derfor er hele systemet server-autoritativt: de rigtige svar når aldrig frem til klienten, før du har låst dit valg, og belønninger valideres i backenden.
Du bygger alt solo. Hvordan ser din stack ud, og hvorfor?
Quiz Fight kører på React 19, TypeScript og Vite i frontenden, med Tailwind til styling og Framer Motion til game-feel. Backenden er Node.js og TypeScript på Firebase — Auth, Firestore, Cloud Functions og Hosting.
Jeg vælger den stack, fordi den lader én person arbejde som et lille team. Firebase fjerner det meste af driftsbyrden, TypeScript holder en stor kodebase ærlig, og Vite holder feedback-loopet hurtigt. Som solo-udvikler er min mest knappe ressource opmærksomhed — så jeg optimerer hårdt for ikke at skulle passe infrastruktur.
Quiz Fight udkommer på web, iOS og Android fra én kodebase. Hvordan?
Det er én React/TypeScript-kodebase, der rammer web med Vite og pakkes som native iOS- og Android-apps med Capacitor. De samme komponenter renderes i browseren og inde i den native skal, så en rettelse lander alle steder på én gang.
Det svære er ikke selve wrapperen — det er at respektere hver platform: iOS safe areas, haptik, tastaturet, app store-reviewregler, push-beskeder. Jeg behandler mobil-buildet som kilden til sandhed og gør desktop-visningen til en responsiv præsentation af samme design i stedet for at vedligeholde to UI’er.
Hvad er det sværeste tekniske problem i Quiz Fight?
Tillid. I et konkurrencespil med belønninger må du gå ud fra, at klienten er fjendtlig. Så de rigtige svar ligger i et privat lager, klienten ikke kan læse, scoring sker i Cloud Functions, og hver belønning går gennem en idempotent “stat wallet”, så den ikke kan hentes to gange.
Det andet svære problem er spørgsmål i stor skala. Quiz Fight genererer og faktatjekker quizindhold med en AI-pipeline og validerer det så mod strenge regler, før noget når frem til en spiller. At gøre det billigt, hurtigt og præcist — uden nogensinde at sende et forkert “rigtigt” svar ud — er en konstant balancegang.
Du har sendt meget i markedet — TaskMondo, HeadToHead og mere. Hvordan beslutter du, hvad du skal bygge?
Jeg bygger i krydsfeltet mellem “det her ville jeg selv bruge” og “det her kan jeg sende i markedet i en rigtig version alene.” HeadToHead kom af kærlighed til fodbold og realtidsspil; TaskMondo kom af et ønske om enklere opgavestyring til små virksomheder; Quiz Fight kom af et ønske om at få trivia til at føles som en sport.
Filteret er brutal ærlighed om scope. Som Halfdan Harring, en-mands-studiet, har jeg ikke råd til et projekt, der kræver fem mennesker for at blive “godt.” Hvis jeg kan få en skarp v1 ud til brugerne hurtigt, er det en kandidat. Hvis det kun virker i kæmpe skala, er det ikke.
Hvordan passer AI ind i måden, du bygger på — og i Quiz Fight selv?
På to måder. Inde i Quiz Fight genererer og oversætter AI quizpakker og hjælper med at faktatjekke dem, hvilket er det, der gør et dybt katalog med mange emner muligt for en solo-udvikler. Alt, hvad AI’en producerer, behandles som et udkast, der skal bestå validering, før en spiller overhovedet ser det.
I måden, jeg arbejder på, er AI en kraftforstærker for et team på én — boilerplate, refaktorering, teststilladser, research. Den erstatter ikke dømmekraft om arkitektur, game-feel eller hvad der er værd at bygge; den fjerner friktionen, så jeg bruger mine timer på de beslutninger, der faktisk betyder noget.
Hvad skal der til for at bygge softwareprodukter, folk kan stole på?
Omhu og vedholdenhed. Som Halfdan Harring bygger jeg alt fra ende til anden, så kvaliteten er mit ansvar — og det ser jeg som hele pointen. Jeg starter småt, sender noget rigtigt i markedet, lytter tæt til dem, der bruger det, og forbedrer det støt. Den disciplin er måden, hvert produkt, jeg er stolt af, er blevet til.
Tillid kommer også af det uglamourøse arbejde: at slibe detaljerne til, rette det vigtigste først og sende en støt strøm af forbedringer. Quiz Fight er resultatet af præcis den tilgang — omhyggeligt, bevidst håndværk, jeg er stolt af at lægge mit navn på.
Hvordan ser en typisk udviklingsuge ud for et en-mands-studie?
Formiddage er til dybt arbejde — den ene svære ting, der kræver et klart hoved: en drilsk Cloud Function, en grim state-bug, en ny spilfase. Eftermiddage er den lange hale: support, store-ting, analytics, de uglamourøse 80% af at drive et produkt.
Jeg prøver at sende noget i markedet hver uge, også selvom det er småt. Momentum er hele spillet, når man er solo — en live-ændring slår en perfekt plan. Jeg værner også om tid til de detaljer, de fleste springer over: loading states, tomme tilstande, overgange. Den polish er det, der får Quiz Fight til at føles levende i stedet for bare funktionelt.
Hvorfor bygge fra Aarhus i Danmark?
Aarhus er hjemme, og det viser sig, at man ikke behøver at sidde i en tech-hovedstad for at sende produkter ud globalt — Quiz Fight er på App Store verden over og kører lige godt fra et skrivebord i Danmark. Det danske indie- og iværksættermiljø, steder som Amino, er lille men oprigtigt støttende.
At bygge fra Danmark holder mig også tæt på mit første publikum. Jeg kan sende produkter ud på to sprog — engelsk og dansk — og det danske marked er en god, ærlig prøveklud, før noget skaleres bredere ud.
Hvad er det næste for Quiz Fight?
Mere af det, der får det til at føles konkurrencepræget: dybere rang-progression, mere live head-to-head-spil og et støt voksende, velvalideret spørgsmålskatalog. Jeg vil have, at Quiz Fight er det quizspil, folk åbner, når de vil have en rigtig kamp — ikke en tidsrøver.
Bag kulisserne investerer jeg i content-pipelinen og de systemer, der holder kampe fair i stor skala. Målet er nemt at sige og svært at gøre: få hver eneste kamp til at føles hurtig, fair og din tid værd.
Råd til udviklere, der gerne vil sende deres egne produkter i markedet?
Send tidligt, og bliv så ved med at sende. Hold din første version lille og ærlig — få den ud til rigtige brugere, og lad det, de gør, vise vejen til næste skridt. Vælg en stack, der lader én person bevæge sig hurtigt — for mig er det React, TypeScript, Firebase og Capacitor — og hold op med at genvælge værktøjer hver måned.
Og fokusér på håndværket. De udviklere, jeg respekterer, går dybt op i detaljerne og holder deres standarder høje, release efter release. Den vedholdenhed er måden, du bygger tillid, et publikum og til sidst et produkt, folk virkelig værdsætter. Det er hele historien bag Halfdan Harring og Quiz Fight.
Spil Quiz Fight
Se, hvad Halfdan Harring bygger. Hent Quiz Fight på iPhone eller spil med det samme i din browser.
