Real-Time-Quiz-Application / README_GITHUB.md
ruslanmv's picture
Create README_GITHUB.md
3e247c1

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

  1. Clone the repository:

    git clone https://github.com/ruslanmv/Real-Time-Quiz-Application.git
    cd Real-Time-Quiz-Application
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Run the application:

    python app.py
    

4. Access the application:

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: