An interactive quiz card game with role-based access for teachers and students. Built with React, Firebase, and Material-UI.
- Create and manage quizzes with multiple-choice questions
- Edit existing quizzes
- Delete quizzes with confirmation
- Generate unique quiz codes for sharing
- View detailed analytics and student performance
- Track quiz attempts and scores
- Play quizzes using quiz codes
- Interactive card-based answer selection
- Countdown timer for each question
- View score history and statistics
- Compete on leaderboards with rankings
- Track overall performance metrics
- Beautiful gradient backgrounds
- Smooth animations and transitions
- Responsive 2x2 card layout
- Role-based color themes
- Floating logo animations
- Real-time timer with visual feedback
- Frontend: React, Material-UI
- Backend: Firebase (Authentication + Firestore)
- Routing: React Router
- Styling: Styled Components, CSS-in-JS
- Icons: Material-UI Icons
- API Documentation: OpenAPI 3.0 (Swagger)
- Clone the repository:
git clone https://github.com/SaherMahtab/QuizCard.git
cd QuizCard- Install dependencies:
npm install-
Set up Firebase:
- Create a Firebase project at Firebase Console
- Enable Email/Password authentication
- Create a Firestore database
- Copy
src/firebase/config.example.jstosrc/firebase/config.js - Add your Firebase credentials to
config.js
-
Run the development server:
npm start- Open http://localhost:3000 in your browser
- Go to Firebase Console → Project Settings
- Under "Your apps", click the web icon
</> - Copy your Firebase configuration
- Paste it into
src/firebase/config.js
Required Firebase services:
- Authentication (Email/Password)
- Firestore Database
QuizCard includes API documentation using OpenAPI 3.0 (Swagger).
View API Documentation:
# Start interactive Swagger UI on localhost:8080
npm run api-docsThen open http://localhost:8080 in your browser to explore all API endpoints.
Files:
swagger.yaml- OpenAPI 3.0 specificationpostman_collection.json- Import into Postman for API testing
Alternative: Open Swagger Editor and import swagger.yaml
- Sign up with teacher role
- Create a new quiz with questions
- Share the quiz code with students
- Monitor student performance in analytics
- Sign up with student role
- Enter a quiz code on the dashboard
- Play the quiz and answer questions
- View your score and compete on leaderboards
Contributions are welcome! Please read our Contributing Guidelines and Code of Conduct before submitting a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
For more detailed information, see CONTRIBUTING.md.
This project is licensed under the MIT License - see the LICENSE file for details.
Saher Mahtab
- GitHub: @SaherMahtab
- Material-UI for the component library
- Firebase for backend services
- React community for inspiration
Made with ❤️ for educational purposes