A web-based quiz application built with Flask that supports user authentication, quiz management, and progress tracking.
- User Authentication: Secure login system with user registration
- Quiz Management: Upload and manage quizzes via CSV files
- Interactive Quiz Engine: Multiple choice questions with immediate feedback
- Progress Tracking: Track quiz history and scores
- Admin Features: Administrative controls for user and quiz management
- Responsive UI: Clean, modern web interface
StreamQuiz/
├── app.py # Main Flask application
├── config.py # Configuration settings
├── requirements.txt # Python dependencies
├── auth/ # Authentication module
│ ├── __init__.py
│ └── authentication.py
├── quiz/ # Quiz engine module
│ ├── __init__.py
│ ├── csv_handler.py
│ └── quiz_engine.py
├── data/ # Data storage
│ ├── auth_config.yaml # Authentication configuration
│ ├── users.json # User data
│ └── user_quizzes/ # User quiz progress
├── static/ # CSS styles
│ ├── quiz_history.css
│ └── styles.css
├── sample_quizzes/ # Example quiz files
│ ├── General Knowledge.csv
│ └── Programming Basics.csv
└── ui/ # UI templates (if any)
-
Clone the repository:
git clone https://github.com/git-maks/st-quizzer.git cd st-quizzer -
Create a virtual environment (recommended):
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python app.py
-
Access the application: Open your browser and navigate to
http://localhost:5000
Quizzes are created using CSV files with the following format:
Question,Option A,Option B,Option C,Option D,Correct Answer
What is 2+2?,3,4,5,6,B- Each row represents a question
- The first column is the question text
- Columns 2-5 are the multiple choice options
- The last column indicates the correct answer (A, B, C, or D)
- Users can register and log in to track their progress
- Admin users have additional privileges for managing quizzes and users
- Quiz history and scores are automatically saved
The application uses several configuration files:
config.py: Main application configurationdata/auth_config.yaml: Authentication settingsdata/users.json: User database (created automatically)
- Quiz Engine: Modify files in the
quiz/directory - Authentication: Update files in the
auth/directory - UI/Styles: Edit CSS files in the
static/directory - Main App: Update
app.pyfor new routes or functionality
export FLASK_ENV=development # On Windows: set FLASK_ENV=development
python app.py- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and commit:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature-name - Submit a pull request
This project is open source and available under the MIT License.
If you encounter any issues or have questions, please open an issue on GitHub.