A modern, offline-first computer-based testing (CBT) system built with React and Firebase.
- 🎯 Offline First - Works without internet connection using Firebase offline persistence
- 📝 Question Bank - Manage questions with multiple subjects and difficulty levels
- 📋 Exam Management - Create and configure exams with custom settings
- 👥 Student Management - Track students and their results
- 📊 Real-time Results - Instant grading and detailed analytics
- 🖨️ Printable Reports - Generate result slips for students
- 🌐 Multi-tab Support - Works across multiple browser tabs
- 🔄 Auto-sync - Changes sync automatically when online
- Node.js 20 or higher
- Firebase account (free tier works great!)
-
Install dependencies
npm install
-
Set up Firebase
See QUICKSTART.md for detailed Firebase setup instructions.
Quick version:
- Create Firebase project at https://console.firebase.google.com/
- Enable Firestore Database
- Copy
.env.exampleto.envand add your Firebase config - Run
npm run init-firebaseto create admin user
-
Run the application
npm run dev
-
Login
- Visit http://localhost:5173
- Username:
Admin - Password:
admin123
- QUICKSTART.md - 5-minute setup guide
- FIREBASE_SETUP.md - Detailed Firebase configuration
- FIREBASE_MIGRATION.md - Technical migration details
- React 18 - UI framework
- TypeScript - Type safety
- TailwindCSS - Styling
- Shadcn/ui - Component library
- React Query - Data fetching and caching
- Wouter - Routing
- Firebase Firestore - Database with offline support
- Firebase SDK - Client-side data access
- IndexedDB - Local caching for offline mode
You can bulk-import questions via CSV:
- Go to Question Bank page
- Click "Upload CSV"
- Select your CSV file
- Choose class level and subject
- Review and upload
CSV Format:
- Columns:
questionText,questionType,difficulty,options,correctAnswer,points questionType:multiple-choice,true-false, orshort-answerdifficulty:easy,medium,hardoptions: JSON array["A","B","C"]or pipe-separatedA|B|C- Download template from the app for examples
- Manage Questions - Add questions manually or import via CSV
- Create Exams - Select questions and configure exam settings
- Manage Students - Add students individually or bulk import
- View Results - See all exam results and generate reports
- Login - Use your name and student ID
- Select Exam - Choose from available active exams
- Take Exam - Answer questions with timer
- View Results - See your score and detailed breakdown
The default setup uses test mode for easy development. For production:
- Update Firestore security rules (see QUICKSTART.md)
- Change the default admin password
- Enable Firebase Authentication
- Use environment-specific Firebase projects
npm run build
firebase login
firebase init hosting
firebase deploy- Build:
npm run build - Deploy the
distfolder - Set environment variables
npm run dev # Start development server
npm run build # Build for production
npm run start # Preview production build
npm run check # TypeScript type checking
npm run init-firebase # Initialize Firebase with admin userMIT License
Built for Faith Immaculate Academy using Firebase offline-first architecture.
Made with ❤️ for educational institutions