Logo Lanfrica

donne4real/exam-prep-ng

Domaine:

education

Type de record:

softwaretools
Créateur:
don
Hôte:
Exam Prep Nigeria # Nigerian Exam Prep (PWA) An offline-first Progressive Web App for practising past questions for **BECE**, **NECO**, and **JAMB** exams. Built with Vite + React + TypeScript, Tailwind CSS, Zustand, React Router, and `vite-plugin-pwa`. The app is designed to run fast on cheap Android phones (Tecno, Infinix) and to work offline once the user installs it. --- ## Features - **6 routes**: Home, Subjects, Years, Test Runner, Results, Dashboard - **PWA install** with custom install banner (`InstallPrompt`) - **Offline support** via Workbox service worker (cache-first for assets, stale-while-revalidate for `data/questions.json`) - **Dark mode** — auto / light / dark, persisted in `localStorage` - **Progress tracking** — attempts, average score, weak topics, day streak - **Timed tests** with auto-submit on expiry - **Friendly empty state** when `data/questions.json` is not yet available - **Mobile-first** — 44px minimum tap targets, large readable typography ## Tech stack | Concern | Choice | | -------------- | ----------------------------------------- | | Bundler | Vite 5 | | UI framework | React 18 + TypeScript 5 | | Styling | Tailwind CSS 3 | | State | Zustand 4 (persisted to `localStorage`) | | Routing | React Router 6 | | PWA / SW | `vite-plugin-pwa` (Workbox under the hood)| | Fonts | Inter (Google Fonts) with system fallback | ## Project structure ``` exam-prep-ng/ ├── index.html ├── package.json ├── postcss.config.js ├── tailwind.config.js ├── tsconfig.json ├── vite.config.ts ├── public/ │ ├── favicon.svg │ ├── manifest.json │ └── robots.txt └── src/ ├── App.tsx ├── main.tsx ├── components/ │ ├── InstallPrompt.tsx │ ├── OptionButton.tsx │ ├── ProgressRing.tsx │ ├── QuestionCard.tsx │ ├── Shell.tsx │ └── Timer.tsx ├── data/ │ └── loader.ts ├── …

Languages