Quizly is a modern web application that allows users to create, manage, and participate in quizzes. With a clean user interface and robust backend, it provides an engaging platform for both quiz administrators and participants.
- User authentication (login/signup)
- Take quizzes with different difficulty levels
- Real-time score tracking
- Progress tracking for each quiz
- Multiple question types support (radio, checkbox)
- Create and manage quizzes
- Add multiple types of questions
- Delete existing quizzes
- Flask (Python web framework)
- SQLAlchemy (ORM)
- Flask-CORS (Cross-Origin Resource Sharing)
- Flask-Limiter (Rate limiting)
- Marshmallow (Object serialization/deserialization)
- SQLite (local development)
- Vanilla JavaScript
- HTML5
- CSS3
- Font Awesome (Icons)
-
Navigate to the backend directory:
cd backEnd -
Create a virtual environment:
python -m venv venv
-
Activate the virtual environment:
- Windows:
.\venv\Scripts\activate
- Unix/MacOS:
source venv/bin/activate
- Windows:
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python run.py
-
Navigate to the frontend directory:
cd frontEnd -
Open the application in a web browser:
- Open
login.htmlto start using the application - For development, use a local server to serve the frontend files
- Open
├── backEnd/
│ ├── app/
│ │ ├── models/
│ │ ├── routes/
│ │ ├── __init__.py
│ │ ├── config.py
│ │ └── extensions.py
│ ├── instance/
│ ├── requirements.txt
│ └── run.py
├── frontEnd/
│ ├── CSS/
│ ├── Images/
│ ├── JS/
│ │ └── utils/
│ ├── admin.html
│ ├── login.html
│ ├── quiz.html
│ ├── quizCreator.html
│ ├── signup.html
│ └── user.html
└── README.md
- POST
/signup- Register a new user - POST
/login- User login - POST
/logout- User logout
- GET
/getQuizes- Get all available quizzes - GET
/getQuiz/<quizId>- Get a quiz by ID - POST
/addQuiz- Create a new quiz (admin only) - DELETE
/deleteQuiz/<quizId>- Delete a quiz (admin only) - POST
/startQuiz/<quizId>- Start a quiz session - PUT
/updateQuiz/<quizId>- Update a quiz by ID - POST
/nextQuestion- Get next question in quiz - POST
/submitQuiz- Submit quiz answers
- Create an account or login
- Browse available quizzes
- Start a quiz
- Answer questions and submit responses
- View results
- Login with admin credentials
- Create new quizzes
- Manage existing quizzes
- Password hashing
- Schema validation
- Rate limiting on API endpoints
- Session-based authentication
- Admin-only routes protection
Contributions are welcome! Please feel free to submit a Pull Request.