Case study · Citizenship Test
A free citizenship test app, built end to end
People preparing for the Canadian citizenship test deserve good practice material without ads or paywalls. I built and launched canadacitizenshiptest.online on my own, end to end, with agentic, AI-driven development.
- Client
- Own product
- Role
- Sole developer
- Launched
- October 2026
- Platform
- Web, mobile-first
404reviewed practice questions
17sets of 20, like the real test
75%pass mark scoring
Why I built it
The Canadian citizenship test is 20 questions with a 75% pass mark, based on the official Discover Canada guide. I wanted a practice tool that feels like the real thing, explains every answer and stays free, with no ads. It's live at canadacitizenshiptest.online, as an unofficial study aid.
What it offers
- 404 reviewed, deduplicated questions based on Discover Canada.
- 17 mixed sets of 20, the same length as the real test. Each covers every chapter and several eras of history, is scored against the 75% pass mark, and ends with a review of missed questions.
- Dated sets for answers that change over time, such as the prime minister and the premiers.
- Progress that resumes where you left off, with past attempts kept, and a "Report a mistake" link on every question.
- Accounts and admin: email/password and Google sign-in, email verification and password reset, plus an admin dashboard for flagged questions, users, roles and invites.
How it's built
- A React and Vite single-page app with prerendered public pages, so search engines and first-time visitors get real HTML right away.
- A TypeScript API on Hono, running on AWS Lambda behind an edge proxy; the API only accepts requests that come through that proxy.
- PostgreSQL on a serverless host, with versioned migrations applied on every deploy, and email through Resend.
- A question pipeline that drops hyper-local trivia, merges exact and reworded duplicates, tags each question by chapter and era, and deals them into balanced sets. The answer explanations were rewritten as original text.
Security, privacy and quality
Anti-bot protection on the app and API with a human check on sign-up and password reset, privacy-first analytics that collect nothing until the visitor opts in, SEO metadata and structured data, light and dark themes, and a mobile-first layout with no layout shift on the landing page.
Outcome
A complete product, from question data to accounts, admin and deploys, built and launched by one engineer directing AI agents.
Screens