- π Overview
- β¨ Key Features
- π Getting Started
- π οΈ Tech Stack
- π Project Structure
- π§ Backend Architecture
- π Environment Configuration
- π§ͺ Testing
- π API Documentation
- π₯ Contributors
- π License
The Student Examination Application is a cutting-edge educational platform designed to revolutionize the way academic institutions handle examinations. Built with modern technologies and a microservices architecture, it offers:
- Streamlined Exam Management: End-to-end solution from exam creation to result analysis
- Paperless Environment: Reduce administrative overhead and environmental impact
- Enhanced Security: Advanced measures to prevent cheating and ensure exam integrity
- For Students: Easy access to exams, instant results, and progress tracking
- For Teachers: Simplified exam creation, automated grading, and detailed analytics
- For Administrators: Comprehensive oversight, detailed reporting, and efficient management
- Modern Architecture: Built with React 19 and FastAPI for optimal performance
- Scalable Design: Microservices approach allows easy scaling and maintenance
- Real-time Updates: Instant result processing and notification system
- Cross-platform: Works seamlessly across desktop and mobile devices
| Feature | Description |
|---|---|
| π Secure Authentication | Complete user management with JWT HTTP-Only cookies |
| π©βπ« Role-Based Access | Separate interfaces for students, teachers, and administrators |
| π Exam Management | Create, assign, take, and grade exams |
| π€ Automatic Evaluation | AI-powered automatic grading of exams |
| π Dark/Light Mode | Customizable UI theme for better user experience |
| β±οΈ Time Zone Handling | Accurate scheduling across different regions |
| π± Responsive Design | Works on desktop and mobile devices |
| π§ Email Notifications | Automated alerts for exam schedules and results |
-
Clone the repository:
git clone https://github.com/LilConsul/hell-app.git cd hell-app -
Start the application:
docker-compose up -d
-
Access the application:
Important
The application runs on self-signed certificates, so you may need to accept the security warning in your browser.
| Service | URL |
|---|---|
| Frontend | https://localhost |
| API Documentation | https://localhost/api/docs |
| Email Testing UI | https://localhost/dev/mailhog |
| Celery Monitoring | https://localhost/dev/flower |
The project includes a test database backup located in the backup directory. To import this database:
docker compose exec backup /backup/backup.shNote
Alternatively, you can use the cli to import the backup, but it is recommended to use the script for convenience.
-
List available backups:
docker compose exec backup /backup/backup.sh list -
Restore a specific backup:
docker compose exec backup /backup/backup.sh restore <backup_name>
src/
βββ backend/ # FastAPI application
β βββ app/
β β βββ admin/ # Admin panel functionality
β β βββ auth/ # Authentication and authorization
β β βββ celery/ # Background task processing
β β βββ core/ # Core utilities and base classes
β β βββ database/ # Database connections and utilities
β β βββ exam/ # Exam management
β β βββ middleware/ # Custom middleware components
β β βββ users/ # User management
β βββ tests/ # Backend tests
βββ frontend/ # React application
β βββ public/ # Static assets
β βββ src/
β βββ components/ # Reusable UI components
β βββ contexts/ # React contexts
β βββ hooks/ # Custom React hooks
β βββ lib/ # Utility functions
β βββ pages/ # Page components
βββ backup/ # Database backup utilities
βββ nginx/ # Nginx configuration and SSL
The backend is built with a clean, maintainable three-layer architecture:
| Layer | Description |
|---|---|
| π΅ Presentation Layer | FastAPI routers and endpoints that handle HTTP requests and responses. This layer validates input data, manages authentication, and serializes responses. |
| π’ Business Logic Layer | Service components that implement core application logic, business rules, and orchestrate workflows between different parts of the system. |
| π‘ Data Access Layer | Repository pattern implementations that abstract database operations, providing a clean interface for data manipulation without exposing database specifics. |
- Dependency Injection: Leveraging FastAPI's dependency system for loose coupling and easier testing
- Repository Pattern: Abstracting database operations behind interfaces for flexibility in data sources
- Middleware Components: Custom middleware for cross-cutting concerns like language localization and timezone handling
- Asynchronous Processing: Using Celery for handling background tasks and scheduled jobs
- JWT Authentication: Secure authentication using HTTP-only cookies with JWT tokens
The modular design enables independent scaling of components and facilitates continuous development without disrupting existing functionality.
The application uses environment variables for configuration through a .env file. Most variables are self-explanatory,
but here are some key ones:
Key Environment Variables
| Variable | Description | Example Value |
|---|---|---|
PROJECT_NAME |
Name of the application | Hell App |
DOMAIN |
Domain name for the application | localhost |
BACKEND_DEBUG |
Enable debug mode for backend | true, false |
| Variable | Description | Example Value |
|---|---|---|
SECRET_KEY |
Secret key for encryption | InsanelySecretKey |
ALGORITHM |
Algorithm used for JWT | HS256 |
ACCESS_TOKEN_EXPIRE_SECONDS |
JWT token expiration time | 36000 |
| Variable | Description | Example Value |
|---|---|---|
ADMIN_EMAIL |
Admin user email | admin@hell-app.com |
ADMIN_PASSWORD |
Admin user password | AdminSecret11 |
These users are used for testing purposes only and should not be used in production. Just leave empty fields if you don't need them.
| Variable | Description | Example Value |
|---|---|---|
STUDENT_EMAIL |
Test student email | Student123@hell-app.com |
STUDENT_PASSWORD |
Test student password | StudentSecret11 |
TEACHER_EMAIL |
Test teacher email | Teacher123@hell-app.com |
TEACHER_PASSWORD |
Test teacher password | TeacherSecret11 |
| Variable | Description | Example Value |
|---|---|---|
MONGO_INITDB_ROOT_USERNAME |
MongoDB root username | admin |
MONGO_INITDB_ROOT_PASSWORD |
MongoDB root password | admin |
MONGO_INITDB_DATABASE |
MongoDB database name | app |
This project includes comprehensive test coverage for backend functionality.
# Run all tests (command should be executed in the backend container)
uv sync --extra "test" # Install test dependencies
uv run pytestdocker exec hell-app-backend-1 uv sync --extra "test" # Install test, run only once
docker exec hell-app-backend-1 uv run pytest- Unit tests verify individual components in isolation
- Integration tests ensure different modules work together correctly
- End-to-end tests validate complete user flows
The API documentation is auto-generated using FastAPI's built-in Swagger UI and ReDoc integration.
| Documentation | URL |
|---|---|
| Swagger UI | https://localhost/api/docs |
| ReDoc | https://localhost/api/redoc |
- /api/auth - Authentication and user management
- /api/exams - Exam creation and management
- /api/students - Student-specific endpoints
- /api/teachers - Teacher-specific endpoints
| Contributor | Role |
|---|---|
Project Maintainer DevOps Engineer Backend Developer |
|
Lead Backend Developer |
|
Frontend Lead Frontend Developer |
|
Intern Frontend Developer |
|
Intern Frontend Developer |





