Quiz Master is a multi-user application designed as an exam preparation site for multiple courses. It supports two roles: Admin and User. The Admin manages the application, while Users can register, log in, and attempt quizzes.
- Create Virtual ENV: python3 -m venv venv
- Enter into existing virtual ENV: .\venv\Scripts\activate
- Install required dependency: pip install -r requirements.txt
- Run the application locally: python app.py
- Backend: Flask
- Frontend: Jinja2 templating, HTML, CSS, Bootstrap
- Database: SQLite
- Root access with no registration required
- Manages users, subjects, chapters, and quizzes
- Creates subjects and chapters
- Adds quiz questions under chapters
- Admin dashboard for management tasks
- Registers and logs in
- Attempts quizzes
- Views quiz scores
- User dashboard for quiz attempts and scores
id: VARCHAR(100), Primary keyemail: VARCHAR(100), Unique, Not nullpassword: VARCHAR(100), Not nullfull_name: VARCHAR(100), Not nullqualification: VARCHAR(100), Not nulldob: DATE, Not nullisActive: Boolean, Default True, Not nulluser_type: Enum('admin', 'user'), Not nullcreated_at: TIMESTAMP, Not nullupdated_at: TIMESTAMP, Not null
id: VARCHAR(100), Primary keyname: VARCHAR(100), Not nulldescription: VARCHAR(100), Not nullcreated_at: TIMESTAMP, Not nullupdated_at: TIMESTAMP, Not nullcode: VARCHAR(100), Not null
id: VARCHAR(100), Primary keyname: VARCHAR(100), Not nulldescription: VARCHAR(100), Not nullsubject_id: VARCHAR(100), Foreign key to Subject, Not nullcreated_at: TIMESTAMP, Not nullupdated_at: TIMESTAMP, Not nullchapter_number: Integer, Not nullcode: VARCHAR(100), Not nullpages: Integer, Not null
id: VARCHAR(100), Primary keyquiz_title: VARCHAR(100), Not nullchapter_id: VARCHAR(100), Foreign key to Chapter, Not nulldate_of_quiz: DATE, Not nulltime_duration_hr: Integer, Not nulltime_duration_min: Integer, Not nullremarks: VARCHAR(100), Not nullcreated_at: TIMESTAMP, Not nullupdated_at: TIMESTAMP, Not nullis_active: Boolean, Default True, Not nulluser_id: VARCHAR(100), Foreign key to User, Nullabletotal_marks: Integer, Not null
id: VARCHAR(100), Primary keyquiz_id: VARCHAR(100), Foreign key to Quiz, Not nullquestion_title: VARCHAR(100), Not nullquestion_statement: VARCHAR(100), Not nulloption_1: VARCHAR(100), Not nulloption_2: VARCHAR(100), Not nulloption_3: VARCHAR(100), Not nulloption_4: VARCHAR(100), Not nullcreated_at: TIMESTAMP, Not nullupdated_at: TIMESTAMP, Not nullcorrect_option: Integer, Not nullmarks: Integer, Not null
id: VARCHAR(100), Primary keyquiz_id: VARCHAR(100), Foreign key to Quiz, Not nulluser_id: VARCHAR(100), Foreign key to User, Not nullattempt_number: Integer, Not nullquestion_attempted: Integer, Not nullquestion_corrected: Integer, Not nullquestion_wronged: Integer, Not nulltotal_scored: Integer, Not nullcreated_at: TIMESTAMP, Not nullupdated_at: TIMESTAMP, Not nullunique_user_quiz_attempt: Unique constraint onquiz_id,user_id, andattempt_number
id: VARCHAR(100), Primary keyquiz_id: VARCHAR(100), Foreign key to Quiz, Not nulluser_id: VARCHAR(100), Foreign key to User, Not nullscore_id: VARCHAR(100), Foreign key to Score, Not nullquestion_id: VARCHAR(100), Foreign key to Question, Not nullactual_answer: Integer, Not nullattempted_answer: Integer, Not nullattempt_number: Integer, Not nullcreated_at: TIMESTAMP, Not nullupdated_at: TIMESTAMP, Not null
- Admin login
- Create, edit, delete subjects and chapters
- Create, edit, delete quizzes and questions
- Search users, subjects, quizzes
- View summary charts
- User registration and login
- Attempt quizzes with a timer
- View quiz scores and history
- View summary charts