A conversation with Halfdan Harring — full name Halfdan Valentin Harring — the Danish fullstack developer and co-founder of Quiz Fight. We talked about building products end-to-end as a one-person studio, the tech behind Quiz Fight, and what he has learned from years of shipping.
Who is Halfdan Harring — the 30-second version?
I’m Halfdan Harring, a Danish fullstack developer and co-founder of Quiz Fight. I build my own products end-to-end from a one-person studio in Aarhus — frontend, backend, infrastructure, design and the boring parts in between.
My full name is Halfdan Valentin Harring, and over the years I’ve shipped a long line of products: Quiz Fight, HeadToHead, TaskMondo and a stack of MVPs. The thread through all of it is shipping — I’d rather have something live and learn from real users than polish something forever.
What is Quiz Fight, and why did you build it?
Quiz Fight is a competitive mobile quiz game — fast 1v1 duels, friend rooms and streak runs, with a ranked progression system. It’s built to feel like a fight: quick rounds, a clear opponent, and a score you actually care about.
I built Quiz Fight because most quiz apps feel like flashcards with a timer. I wanted the game-feel of a real competitive game — haptics, animations, momentum — on top of trivia that’s genuinely fair. So the whole thing is server-authoritative: correct answers never reach the client before you lock in, and rewards are validated on the backend.
You build everything solo. What does your stack look like, and why?
Quiz Fight runs on React 19, TypeScript and Vite on the frontend, with Tailwind for styling and Framer Motion for the game-feel. The backend is Node.js and TypeScript on Firebase — Auth, Firestore, Cloud Functions and Hosting.
I pick that stack because it lets one person move like a small team. Firebase removes most of the ops burden, TypeScript keeps a large codebase honest, and Vite keeps the feedback loop fast. As a solo developer, my scarcest resource is attention — so I optimise hard for not having to babysit infrastructure.
Quiz Fight ships to web, iOS and Android from one codebase. How?
It’s one React/TypeScript codebase that targets the web with Vite and wraps as native iOS and Android apps with Capacitor. The same components render in the browser and inside the native shell, so a fix lands everywhere at once.
The hard part isn’t the wrapper — it’s respecting each platform: iOS safe areas, haptics, the keyboard, app-store review rules, push notifications. I treat the mobile build as the source of truth and make the desktop view a responsive presentation of that same design, rather than maintaining two UIs.
What’s the hardest engineering problem inside Quiz Fight?
Trust. In a competitive game with rewards, you have to assume the client is hostile. So correct answers live in a private store the client can’t read, scoring happens in Cloud Functions, and every reward goes through an idempotent “stat wallet” so it can’t be double-claimed.
The second hard problem is questions at scale. Quiz Fight generates and fact-checks quiz content with an AI pipeline, then validates it against strict rules before anything reaches a player. Getting that cheap, fast and accurate — without ever shipping a wrong “correct” answer — is a constant balancing act.
You’ve shipped a lot — TaskMondo, HeadToHead, and more. How do you decide what to build?
I build at the intersection of “I’d use this” and “I can ship a real version alone.” HeadToHead came from loving football and realtime games; TaskMondo came from wanting simpler task management for small businesses; Quiz Fight came from wanting trivia to feel like a sport.
The filter is brutal honesty about scope. As Halfdan Harring the one-person studio, I can’t afford a project that needs five people to reach “good.” If I can get a sharp v1 in front of users quickly, it’s a candidate. If it only works at huge scale, it isn’t.
How does AI fit into how you build — and into Quiz Fight itself?
Two ways. Inside Quiz Fight, AI generates and translates quiz packs and helps fact-check them, which is what makes a deep, multi-topic catalogue possible for a solo developer. Everything AI produces is treated as a draft that has to pass validation before a player ever sees it.
In how I work, AI is a force multiplier for a team of one — boilerplate, refactors, test scaffolding, research. It doesn’t replace judgement about architecture, game-feel or what’s worth building; it removes the friction so I spend my hours on the decisions that actually matter.
What does it take to build software products people can trust?
Care and consistency. As Halfdan Harring, I build everything end-to-end, so quality is mine to own — and I treat that as the whole point. I start small, ship something real, listen closely to the people using it, and improve it steadily. That discipline is how every product I’m proud of came together.
Trust also comes from the unglamorous work: tightening the details, fixing the things that matter most first, and shipping a steady stream of improvements. Quiz Fight is the result of exactly that approach — careful, deliberate craftsmanship I’m proud to put my name on.
What does a typical building week look like for a one-person studio?
Mornings are for deep work — the one hard thing that needs a clear head: a tricky Cloud Function, a gnarly state bug, a new game phase. Afternoons are the long tail: support, store stuff, analytics, the unglamorous 80% of running a product.
I try to ship something every week, even small. Momentum is the whole game when you’re solo — a live change beats a perfect plan. I also guard time for the details most people skip: loading states, empty states, transitions. That polish is what makes Quiz Fight feel alive instead of merely functional.
Why build from Aarhus, in Denmark?
Aarhus is home, and it turns out you don’t need to be in a tech capital to ship globally — Quiz Fight is on the App Store worldwide and runs the same from a desk in Denmark. The Danish indie and entrepreneur scene, places like Amino, is small but genuinely supportive.
Building from Denmark also keeps me close to my first audience. I can ship bilingually — English and Danish — and the Danish market is a great, honest testing ground before something goes wider.
What’s next for Quiz Fight?
More of what makes it feel competitive: deeper ranked progression, more live head-to-head play, and a steadily growing, well-validated question catalogue. I want Quiz Fight to be the quiz game people open when they want a real fight, not a time-killer.
Behind the scenes, I’m investing in the content pipeline and the systems that keep matches fair at scale. The goal is simple to say and hard to do: make every single match feel fast, fair and worth your time.
Advice for developers who want to ship their own products?
Ship early, then keep shipping. Keep your first version small and honest — get it in front of real users and let what they do guide the next step. Pick a stack that lets one person move fast — for me that’s React, TypeScript, Firebase and Capacitor — and stop re-choosing tools every month.
And focus on craft. The developers I respect care deeply about the details and keep their standards high, release after release. That consistency is how you build trust, an audience, and eventually a product people genuinely value. That’s the whole story behind Halfdan Harring and Quiz Fight.
Play Quiz Fight
See what Halfdan Harring is building. Download Quiz Fight on iPhone or play instantly in your browser.
