Real-Time Quiz Application
A Python-based real-time quiz application designed to mimic the functionality of Mentimeter, allowing a host to control the quiz and participants (clients) to join, answer questions, and receive immediate feedback. The application is built using Flask and Socket.IO for seamless web-based interaction, and it offers a clean, responsive front-end using HTML, CSS, and Bootstrap.
Features
- Real-Time Communication: Uses Socket.IO for instant updates between the host and clients.
- Participant Management: Tracks connected clients, showing their usernames and responses in real time.
- Interactive Host Control: The host can change questions, see live results, and control the flow of the quiz.
- Simple and Responsive Front-End: Clean design using Bootstrap for a pleasant user experience across devices.
- Scalable Design: Easily expandable to support more questions, features, and visualizations.
Project Structure
Real-Time-Quiz-Application/
β
β
βββ app.py # Main Flask application
βββ backend.py # Backend logic for loading and managing exams
βββ templates/
β βββ index.html # Main index page with client and host buttons
β βββ client.html # Client interface
β βββ host.html # Host interface
βββ static/
β βββ style.css # Custom styles to mimic the OnVUE exam appearance
β βββ script.js # JavaScript for real-time interactions
βββ questions/ # Folder containing exam JSON files
β βββ exam1.json # Example JSON file for exam 1
β βββ exam2.json # Example JSON file for exam 2
βββ requirements.txt # Python dependencies
βββ README.md # Project documentation
Requirements
Ensure you have Python 3.6+ installed. The required dependencies are listed in requirements.txt
:
- Flask: The web framework used for developing the application.
- Flask-SocketIO: Enables real-time WebSocket communication between the server and clients.
Install dependencies with:
pip install -r requirements.txt
How to Run the Application
Clone the repository:
git clone https://github.com/ruslanmv/Real-Time-Quiz-Application.git cd Real-Time-Quiz-Application
Install dependencies:
pip install -r requirements.txt
Run the application:
python app.py
- Host interface: http://127.0.0.1:5000/host
- Client interface: http://127.0.0.1:5000/client
Application Overview
Host Interface
The host controls the flow of the quiz:
- View Questions: See the current question and available options.
- Next Question: Advance to the next question.
- Live Results: View participant responses and statistics in real time.
Client Interface
Participants join the quiz and interact with the questions:
- Join the Quiz: Enter a temporary username to participate.
- Receive Questions: Answer questions as they appear, with four possible options.
- Live Feedback: See the result of each question based on group responses.
Demonstration
For demonstration purposes, this version includes only two questions. The questions are stored in app.py
as follows:
questions = [
{"question": "What is the capital of France?", "options": ["Paris", "London", "Berlin", "Rome"]},
{"question": "What is the largest planet?", "options": ["Earth", "Mars", "Jupiter", "Saturn"]}
]
Adding More Questions
To add more questions, simply update the questions
list in app.py
. Ensure each question follows the structure:
{"question": "Your question here?", "options": ["Option1", "Option2", "Option3", "Option4"]}
Scaling the Application
This application is built to be easily scalable:
- Add More Features: Integrate additional features such as timed questions, answer explanations, or leaderboard tracking.
- Expand Real-Time Visuals: Enhance client-side interactivity with more detailed results or progress tracking.
- Deploy the App: Use services like Heroku, AWS, or Docker to deploy the application for larger audiences.
Dependencies
Ensure you have the following dependencies installed, as listed in requirements.txt
:
Flask
Flask-SocketIO
Installing Dependencies
pip install -r requirements.txt
Troubleshooting
- No participants showing up: Ensure all participants join the
/client
interface and submit their usernames correctly. - WebSocket issues: Make sure your firewall or browser settings are not blocking WebSocket connections.
- Server not starting: Check that Flask and Flask-SocketIO are installed correctly.
Contributing
Contributions are welcome! Feel free to submit a pull request or open an issue to improve the functionality, design, or documentation of this application.
License
This project is open-source and licensed under the MIT License.
Contact
For any inquiries or suggestions, please reach out to:
- Name: Ruslan Magana Vsevolodovna
- Email: contact@ruslanmv.com
- GitHub: https://github.com/ruslanmv