QuickTest is a Vite + React mock examination platform with student and admin flows.
- Subject-based exams (Ethics, Understanding the Self, Contemporary World, STS)
- Question limits (5, 20, 35, 50) and optional Time Attack mode
- Auto-save exam progress in local storage
- Results page with score analytics and answer review
- Leaderboard view for top results
- Admin login and dashboard for question/result management
- Basic exam integrity signals (tab switches, focus changes, timing anomalies, duplicate-session lock)
- React + Vite
- React Router
- Firebase Auth + Firestore
- Chart.js (
react-chartjs-2) - ESLint
src/StudentSite.jsx- student landing and exam settings modalsrc/pages/ExamPage.jsx- exam runner, session lock, submission flowsrc/pages/ResultsPage.jsx- post-exam analytics and reviewsrc/pages/LeaderboardPage.jsx- leaderboardsrc/pages/AdminLogin.jsx- admin authenticationsrc/AdminDashboard.jsx- admin controls for datasrc/data/seedQuestions.js- local fallback question bankscompile_quizzes.js- converter for files inquizzes/toseedQuestions.js
npm installCopy .env.example to .env and fill in Firebase values:
VITE_FIREBASE_API_KEY=
VITE_FIREBASE_AUTH_DOMAIN=
VITE_FIREBASE_PROJECT_ID=
VITE_FIREBASE_STORAGE_BUCKET=
VITE_FIREBASE_MESSAGING_SENDER_ID=
VITE_FIREBASE_APP_ID=
VITE_ADMIN_EMAIL=admin@yourdomain.comnpm run devnpm run dev- start local dev servernpm run build- production buildnpm run preview- preview production build locallynpm run lint- run ESLint
If you update files under quizzes/, regenerate fallback seeds:
node compile_quizzes.jsThis rebuilds src/data/seedQuestions.js from the source quiz files.
- Firestore rules are in
firestore.rules - Firestore indexes are in
firestore.indexes.json - App uses Firestore collections such as
questionsandresults - If Firestore is unavailable, exam questions can fall back to
seedQuestions.js
This repo includes vercel.json with SPA routing fallback to index.html.
Typical deployment flow:
- Set required
VITE_...environment variables in Vercel - Build command:
npm run build - Output directory:
dist
/- student home/exam/:subject- exam page/results- results (requires navigation state)/leaderboard- leaderboard/admin/login- admin login/admin/dashboard- protected admin dashboard
- Package name in
package.jsonis currentlyzonal-astro; UI branding isQuickTest. - Admin demo credentials are supported in demo mode (
admin@mockexam.com/admin123).