A gamified, local-first PWA to help anyone prepare for the UK's Life in the UK Test.
Features • Live Demo • Quick Start • Scripts • Project Structure • Tech Stack • Deploy • Disclaimer
- 🧠 Mastery system — every examinable fact is tracked as a
KnowledgeItem; questions are interchangeable variants of the same fact, so you can't pass by memorising wording alone - 📊 Readiness score — one honest signal (not ready / almost ready / likely ready) calibrated to the real 75% pass mark, so you book your test with confidence
- 📝 Realistic mock exams — 24-question sessions with a 45-minute countdown and the actual pass threshold
- 🔄 Spaced revision — weak facts resurface in fresh wording until they stick; the harder you find a topic, the more it comes back
- 🔒 Local-first & private — all progress lives in IndexedDB via zustand persist; no account required, no data sent to a server, with export/import for backup
- 📱 Installable PWA — service worker via Serwist, full manifest, installable on mobile and desktop; works offline after the first load
- 🎨 Polished UX — Union-flag colour palette, light/dark themes, an illustrated pixel mascot coach, subtle sounds, reminders, and a responsive layout (mobile bottom-sheet ↔ desktop modal/sidebar)
Non-official — original practice questions only; not affiliated with GOV.UK, the Home Office, or TSO.
No sign-up. Open it, start practising. Install it to your home screen for offline access.
Requires Node.js 20+.
git clone https://github.com/kud/brit-ready.git
cd brit-ready
npm install
npm run devOpen http://localhost:3000. The onboarding flow will walk you through your first session.
| Command | Description |
|---|---|
npm run dev |
Development server with Turbopack |
npm run build |
Production build (next build --webpack — required for Serwist) |
npm run start |
Serve the production build |
npm run lint |
ESLint |
npm run typecheck |
TypeScript type-check (no emit) |
npm run format |
Prettier (write) |
npm run icons |
Generate icons from source |
src/
├── app/ # App Router
│ ├── page.tsx # Landing page
│ ├── about/ # Disclaimer / about
│ └── app/ # App shell
│ ├── dashboard/ # Readiness score overview
│ ├── practice/ # Question-by-question practice
│ ├── mock/ # Timed mock exam
│ ├── revise/ # Spaced revision queue
│ ├── learn/ # Browse knowledge items
│ ├── progress/ # Mastery charts
│ ├── onboarding/ # First-run flow
│ ├── settings/ # Data export/import, preferences
│ └── category/ # Per-topic drill
├── components/ # UI components (mascot, quiz-runner, drawer, date picker…)
├── content/ # Question bank, KnowledgeItems, categories (~150+ questions, 10 topics)
└── lib/ # zustand store, session logic, coach lines, sounds, data transfer
| Library | Role |
|---|---|
| Next.js 16 | App Router, React Server Components, image optimisation |
| React 19 | UI runtime |
| TypeScript | Strict types throughout |
| Tailwind CSS v4 | Utility-first styling |
| zustand + idb-keyval | Local-first state with IndexedDB persistence |
Framer Motion (motion) |
Animations and transitions |
Serwist / @serwist/next |
Service worker, offline caching, PWA |
| vaul | Mobile bottom-sheet drawer |
| next-themes | Light / dark theme |
| lucide-react | Icon set |
| canvas-confetti | Pass celebration effect |
The project is deployed on Vercel. One critical detail: the build command is pinned to next build --webpack in vercel.json. This is intentional — Serwist's service worker generation is webpack-only, and Next.js 16 now defaults to Turbopack. Using the default next build (Turbopack) would silently omit the service worker, breaking offline support and the PWA install prompt.
If you fork and deploy your own instance, ensure your Vercel project's build command matches:
next build --webpack
Brit Ready is an independent, non-official preparation tool created to help people study for the Life in the UK Test.
It is not affiliated with, endorsed by, or produced by GOV.UK, the Home Office, TSO (The Stationery Office), or any official Life in the UK Test provider. All practice questions are original works and do not reproduce real exam questions. Passing this app's mock exams does not guarantee passing the official test.
MIT © kud — Made with ❤️