Quiz App is a multi-user quiz management platform designed to streamline quiz creation and assessment.
- Admin/Instructor can create new subject, chapters, quizzes and questions in hierarchical manner.
- Admin can view all summary statistics for a particular quiz; e.g. how many students gave the quiz, maximum scores etc.
- Admin can setup deadlines for quizzes which is helpful for reminders related tasks.
- Student will have access to all subjects, chapters, quizzes created by Admin and can attempt quizzes only once, before deadlines.
- Student will recieve email notifications for all upcoming quizzes.
- Student will recieve monthly report of progress through email.
- Student can download progress report as a CSV for his/her usecase.
- Full frontend built using Vue CLI
- Robust API communication, caching, and performance optimization achieved using Redis.
- Background jobs, including scheduled and user-triggered tasks such as reminders and CSV exports acheived using Celery and Redis.
- JWT-based authentication system.
- Clean and scalable RESTful API design
git clone https://github.com/23f2002880/quiz_master_23f2002880.git
cd quiz-app/backendpython -m venv venv
Set-ExecutionPolicy Unrestricted -Scope Process # If aliasing issue occurs
venv\Scripts\activatepython3 -m venv venv
source venv/bin/activatepip install -r requirements.txtUse WSL2 as Redis is Linux-native.
wsl --install
# Restart your computer if promptedRedis is natively supported.
sudo apt-get update
sudo apt-get install redis-server
sudo systemctl start redis-server
sudo apt-get install net-tools
netstat -tlIf
127.0.0.1:6379is listening, Redis is running correctly.
- Visit this link
- Ensure 2-factor authentication is enabled
- Create an App Password (use
flask-appas the app name) - Replace the generated password in
task.py
def send_email(sender,receiver, subject, message, attachment):
#############
smtp_password='<your_pass>'- Update all sender email addresses with your own
@celApp.task
def send_monthly_summary():
################
send_email("<your_email>",user.email, "📊 Your Monthly Quiz Summary Report", message,tmp_path)Modify task.py:
@celApp.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):
sender.add_periodic_task(
crontab(hour=17, minute=11),
send_unattempted_quiz_reminders.s()
)
sender.add_periodic_task(
crontab(day_of_month=30, hour=17, minute=11),
send_monthly_summary.s()
)🕒 Adjust
hour,minute, andday_of_monthas needed
# Terminal 1
python app.py
# Terminal 2
celery -A task beat --loglevel=info
# Terminal 3
celery -A task worker --loglevel=info -P eventlet- Download & install Node.js from nodejs.org
- Restart your system
- Open terminal and run:
cd ../
npm install
npm install @vue/cli -g
vue serve🔗 Open http://localhost:8080/ to use the app
- Username:
admin - Password:
1234
- Username:
user1 - Password:
user1