Skip to content

Quiz Boot is a comprehensive, enterprise-grade quiz management platform built with Spring Boot 3.5.4 and Java 21. This system provides a scalable, secure, and maintainable solution for creating, managing, and taking quizzes with advanced features including real-time analytics, role-based access control, and modular architecture.

License

Notifications You must be signed in to change notification settings

Omar-Mega-Byte/QuizBoot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

98 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🧠 QuizBoot

QuizBoot Logo

A Modern, Scalable Quiz Management System Built with Spring Boot

Spring Boot Java MySQL Maven License

πŸš€ Quick Start β€’ πŸ“– Documentation β€’ πŸ› οΈ API Reference β€’ 🀝 Contributing


✨ Features

🎯 Quiz Management

  • Multi-category quiz creation with flexible question types
  • Real-time quiz sessions with timer functionality
  • Advanced scoring algorithms with instant feedback
  • Quiz publishing workflow with approval system

πŸ‘₯ User Experience

  • Role-based access control (Admin, Instructor, Student)
  • JWT-based authentication with refresh tokens
  • Progress tracking and analytics dashboard
  • Responsive web interface for all devices

πŸ”’ Security & Performance

  • Spring Security 6.x integration
  • BCrypt password hashing
  • Rate limiting and CORS protection
  • Database optimization with proper indexing

πŸ—οΈ Modern Architecture

  • Spring Modulith for modular design
  • Clean Architecture principles
  • RESTful API with OpenAPI documentation
  • Production-ready with monitoring support

πŸš€ Quick Start

Prerequisites

Before you begin, ensure you have the following installed:

  • β˜• Java 21 or higher (Download)
  • 🐬 MySQL 8.0+ (Download)
  • πŸ“¦ Maven 3.8+ (included via Maven Wrapper)
  • πŸ”§ Git (Download)

πŸƒβ€β™‚οΈ Running Locally

  1. Clone the repository

    git clone https://github.com/Omar-Mega-Byte/QuizBoot.git
    cd QuizBoot
  2. Set up the database

    CREATE DATABASE quizdb;
    CREATE USER 'quizuser'@'localhost' IDENTIFIED BY 'quizpassword';
    GRANT ALL PRIVILEGES ON quizdb.* TO 'quizuser'@'localhost';
    FLUSH PRIVILEGES;
  3. Configure environment variables (optional)

    export MYSQL_HOST=localhost
    export MYSQL_PORT=3306
    export MYSQL_DB=quizdb
    export MYSQL_USER=quizuser
    export MYSQL_PASSWORD=quizpassword
    export SERVER_PORT=8080
  4. Run the application

    ./mvnw spring-boot:run
  5. Access the application


🐳 Docker Setup

# Build and run with Docker Compose (coming soon)
docker-compose up -d

# Or build manually
docker build -t quizboot .
docker run -p 8080:8080 --env-file .env quizboot

πŸ› οΈ API Reference

QuizBoot provides a comprehensive RESTful API. Here are some key endpoints:

πŸ” Authentication

POST /api/v1/auth/register     # User registration
POST /api/v1/auth/login        # User login
POST /api/v1/auth/refresh      # Token refresh

πŸ“ Quiz Management

GET    /api/v1/quizzes         # List all quizzes
POST   /api/v1/quizzes         # Create new quiz
GET    /api/v1/quizzes/{id}    # Get quiz details
PUT    /api/v1/quizzes/{id}    # Update quiz
DELETE /api/v1/quizzes/{id}    # Delete quiz

πŸƒβ€β™‚οΈ Quiz Sessions

POST /api/v1/sessions              # Start new quiz session
PUT  /api/v1/sessions/{id}/answers # Submit answer
POST /api/v1/sessions/{id}/submit  # Submit entire session

πŸ“Š Analytics

GET /api/v1/analytics/users/{id}   # User analytics
GET /api/v1/analytics/quizzes/{id} # Quiz analytics
GET /api/v1/reports/user-progress  # Progress reports

πŸ“š Full API Documentation: Available at /swagger-ui.html when running the application


πŸ—οΈ Architecture

QuizBoot follows a modern modular architecture using Spring Modulith:

πŸ“¦ com.example.quiz_boot
β”œβ”€β”€ πŸ‘€ user/              # User Management Module
β”œβ”€β”€ πŸ“ quiz/              # Quiz Management Module  
β”œβ”€β”€ πŸƒ session/           # Session Management Module
β”œβ”€β”€ πŸ“Š analytics/         # Analytics & Reporting Module
└── πŸ”§ shared/            # Shared Components & Utilities

Key Technologies

Category Technology Purpose
Framework Spring Boot 3.5.4 Main application framework
Security Spring Security 6.x Authentication & authorization
Database MySQL 8.0+ & Hibernate Data persistence
Architecture Spring Modulith Modular application design
Documentation OpenAPI/Swagger API documentation
Monitoring Spring Actuator Application monitoring

πŸ” Detailed Architecture: See PROJECT_ARCHITECTURE.md for comprehensive technical documentation


πŸ”§ Development

Building the Project

# Compile
./mvnw compile

# Run tests
./mvnw test

# Package
./mvnw package

# Skip tests (for faster builds)
./mvnw package -DskipTests

Code Quality

We maintain high code quality standards:

  • βœ… 80%+ test coverage requirement
  • πŸ” SonarQube integration for code analysis
  • πŸ“ Google Java Style Guide compliance
  • πŸ”’ Mandatory code reviews for all changes

Development Profiles

Profile Purpose Database
default Local development MySQL
test Testing H2 in-memory
staging Pre-production MySQL cluster
production Production MySQL with replication

🌟 Contributing

We welcome contributions! Here's how you can help:

πŸ› Reporting Issues

  • Use our issue template
  • Include detailed steps to reproduce
  • Add relevant logs and screenshots

πŸš€ Submitting Changes

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes following our coding standards
  4. Add tests for new functionality
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

πŸ“‹ Development Setup

# Clone your fork
git clone https://github.com/YOUR_USERNAME/QuizBoot.git

# Add upstream remote
git remote add upstream https://github.com/Omar-Mega-Byte/QuizBoot.git

# Create development branch
git checkout -b feature/your-feature-name

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Spring Team for the amazing Spring Boot framework
  • Contributors who help make this project better
  • Open Source Community for inspiration and support

πŸ“ž Support


Made with ❀️ by the QuizBoot Team

⭐ Star this repo if you find it useful! ⭐

πŸ” Back to Top

About

Quiz Boot is a comprehensive, enterprise-grade quiz management platform built with Spring Boot 3.5.4 and Java 21. This system provides a scalable, secure, and maintainable solution for creating, managing, and taking quizzes with advanced features including real-time analytics, role-based access control, and modular architecture.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •