A full-stack web platform inspired by peer-to-peer learning systems and project-based education environments.
The platform allows users to learn through structured projects, submit solutions, and evaluate peers using project-specific review criteria.
The MVP focuses on a complete learning workflow:
Project → Submission → Peer Review → Evaluation Result → Progression
- User registration
- JWT-based authentication
- Protected API routes
- Password hashing with bcrypt
- Browse available projects
- View project details
- Access project evaluation criteria
- Submit project solutions
- Support multiple attempts
- Track submission history
- Monitor submission status
Submission statuses:
pending_reviewapprovedrejected
- Review submissions from other users
- Evaluate submissions using predefined review criteria
- Store evaluation answers
- Consolidate review results
Review rules:
- Prevent self-review
- Prevent duplicated reviews
- Validate project criteria ownership
- Track project attempts
- Display latest submission status
- Monitor learning progression
- Python 3.12
- FastAPI
- SQLAlchemy 2.0
- Alembic
- PostgreSQL
- Pydantic v2
- JWT Authentication
- React
- Vite
- React Router
- Docker
- Docker Compose
- Nginx (reverse proxy)
The project follows a modular monolith architecture designed for simplicity, clarity and maintainability.
Main principles:
- Clear separation between API, business logic and persistence
- Domain rules handled in the service layer
- No unnecessary architectural complexity
Structure:
backend/
└── app/
├── api/ HTTP routes
├── services/ Business logic
├── models/ SQLAlchemy entities
├── schemas/ Pydantic schemas
├── core/ Configuration and security
├── dependencies/ FastAPI dependencies
└── main.py
frontend/
└── src/
├── components/
├── layouts/
├── pages/
├── routes/
└── services/
More details:
The database model is centered around the submission evaluation workflow.
Core entities:
- User
- Project
- Submission
- ReviewCriterion
- PeerReview
- PeerReviewAnswer
The main domain decision is that:
Submission is the central entity of the evaluation flow.
Each submission represents a user's attempt on a learning project and can receive one or more peer reviews composed of criterion-based answers.
- Register and log in
- Browse available learning projects
- Submit a project solution
- Track submission history
- Follow learning progression
- Browse available submissions
- Start a peer review
- Evaluate each review criterion
- Submit the evaluation
- System updates the submission status
The application uses:
- JWT Bearer Authentication
- Stateless sessions
- Password hashing with bcrypt
Interactive OpenAPI documentation is available at:
/docs
- Docker
- Docker Compose
- Make
makeThe command builds and starts the complete development environment.
Services:
- frontend
- backend
- postgres
- nginx
Additional documentation:
- Authentication
- Project management
- Submission workflow
- Submission history
- Peer review workflow
- Review criteria
- Evaluation rules
- Learning progression
- Responsive React frontend
- Dockerized development environment
This project was built as a portfolio piece to demonstrate the design and implementation of a modern full-stack web application, including:
- REST API development with FastAPI
- Relational database modeling
- Authentication with JWT
- Business rule implementation
- React frontend integration
- Docker-based development workflow
- Modular monolith architecture





