← Back to blog
EngineeringMarch 11, 2026 · 7 min read

How We Built Spylled: Our Tech Stack Explained

For the engineers and curious minds out there, here's a look at the technology behind Spylled.

Frontend: Next.js with App Router

We use Next.js 14 with the App Router. The quiz game itself is a client component (it needs interactivity, timers, and real-time state), but the landing page, blog, and informational pages are server-rendered for SEO and performance.

We chose Next.js because it gives us the best of both worlds: fast server-rendered pages for Google crawlers and a rich interactive experience for players.

API layer: tRPC

Our API is built with tRPC, which gives us end-to-end type safety between the server and client. When we add a new field to a quiz question, TypeScript catches any mismatches at build time. This has saved us from countless bugs.

Database: PostgreSQL on Supabase

All our data lives in PostgreSQL hosted on Supabase. We use Prisma as our ORM for schema management and type-safe queries. The quiz questions, user submissions, leaderboard scores, and historical data all live in the same database.

Authentication: Better Auth

We recently migrated from Lucia to Better Auth for our authentication system. Better Auth gives us email/password login with an admin plugin for role-based access. The admin panel for managing daily questions is protected behind an admin role check.

Hosting: Vercel

The site is deployed on Vercel with automatic deployments from our GitHub repository. Every push to main triggers a production build. Vercel's edge network means fast load times globally.

Internationalization: next-intl

Spylled supports English and Danish using next-intl. All UI text is stored in JSON translation files, and questions in the database have locale-specific fields for both languages.

Why we kept it simple

We deliberately avoided over-engineering. No microservices, no message queues, no Kubernetes. A monolithic Next.js app with a PostgreSQL database handles everything we need. We can always add complexity later if scale demands it, but right now simplicity means we ship features fast and debug issues in minutes, not days.

Play Today's QuizMore Articles