QuizMaster is a full-stack quiz management application built with Flask REST API and Vue 3 frontend, it provides a comprehensive platform for administrators to manage quizzes and for users to take exams with real-time scoring and analytics.
Key Highlights:
- π JWT Authentication with role-based access control
- π Real-time quiz analytics and performance tracking
- β‘ Background tasks with Celery for email notifications and exports
- π Modern Vue 3 + Bootstrap 5 responsive interface
- π± Optimized for medium-sized laptop screens (demo-ready)
- Quick Start
- Project Overview
- Wireframe
- Tech Stack
- Core Features
- Milestones
- Backend Jobs
- Performance & Caching
- Project Structure
QuizMaster enables:
- Admin: Full management of subjects, chapters, quizzes, questions, and users.
- Users: Quiz participation, score tracking, and performance analytics.
All database tables are created programmatically using Flask-SQLAlchemy. Manual DB creation is not allowed.
- Backend: Flask (REST API), Flask-SQLAlchemy, Celery, Redis, SQLite
- Frontend: VueJS (Composition API), Bootstrap 5
- Other: Jinja2 (entry point only, not for UI), Redis (caching & jobs), Celery (background tasks)
- JWT or Flask-based token authentication
- Role-based access control (Admin/User)
- Single admin (predefined, no registration)
- User registration and login
- Manage Subjects, Chapters, Quizzes, Questions (CRUD)
- View/search users, subjects, quizzes, questions
- Set quiz schedule (date, duration)
- View summary charts
- Browse and attempt available quizzes (MCQ, single correct)
- Quiz timer and instant feedback
- View past attempts and scores
- Export quiz history as CSV
- View summary charts
-
Database Schema Design
- Models: User, Admin, Subject, Chapter, Quiz, Question, Score
- Relationships: Subjects β Chapters β Quizzes β Questions
-
Authentication & RBAC
- Token-based authentication
- Role-based permissions
-
Admin Dashboard
- CRUD for all entities
- User management and search
-
User Dashboard & Quiz System
- List/attempt quizzes
- Timer and feedback
- Score storage
-
Score Management
- Store and display quiz scores and summaries
-
Quiz Scheduling
- Admin sets quiz start date and duration
- Users can only attempt within schedule
- Automatic quiz locking after expiry
-
Backend Jobs
- Daily reminders (G-Chat/SMS/Email)
- Monthly performance reports (email)
- Celery & Redis for background processing
-
Search Functionality
- Admin: search users, subjects, quizzes, questions
- User: search quizzes, subjects
-
Async CSV Export
- User: export quiz history
- Admin: export user performance
- Handled via Celery background tasks
-
API Performance & Caching
- Optimize response times
- Rate-limiting and Redis caching
- Daily Reminders: Notify users of new quizzes or inactivity (configurable time, via G-Chat/SMS/Email)
- Monthly Reports: Email HTML reports with quiz stats, scores, rankings
- Async CSV Export: User/admin-triggered, background job, alert on completion
- Use Redis for API caching and background jobs
- Implement cache expiry and rate-limiting for endpoints
.
βββ Backend
βββ Frontend
βββ LICENSE
βββ Quiz_master wired frame.png
βββ README.md
3 directories, 5 files
Contains the Flask REST API backend with all necessary configurations, models, and routes.
Contains the Vue 3 + Bootstrap 5 frontend application with all necessary configurations, components, and styles.
- Python 3.8+
- Node.js 16+
- Redis (for background tasks and caching)
cd Backend
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python launch_app.py # or python app.pycd Frontend
npm install
cp .env.sample .env
# Update .env with your backend API URL
npm run devFor detailed setup instructions, see:
- Backend: Backend/README.md
- Frontend: Frontend/README.md
- Admin: Default admin credentials are set during first run
- API Documentation: Visit
http://localhost:5000/docsfor Swagger UI - Frontend: Visit
http://localhost:5173/(default Vite dev server)
- Project Summary: Project Summary
