Skip to content

carvalho-ra/peer-learning-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

103 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Peer Learning Platform

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

Application Preview

Login

Login


Dashboard

Dashboard


Projects

Projects


Peer Review

Peer Review


Evaluation

Evaluation


Features

Authentication

  • User registration
  • JWT-based authentication
  • Protected API routes
  • Password hashing with bcrypt

Learning Projects

  • Browse available projects
  • View project details
  • Access project evaluation criteria

Submission Flow

  • Submit project solutions
  • Support multiple attempts
  • Track submission history
  • Monitor submission status

Submission statuses:

  • pending_review
  • approved
  • rejected

Peer Review System

  • 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

Learning Progress

  • Track project attempts
  • Display latest submission status
  • Monitor learning progression

Tech Stack

Backend

  • Python 3.12
  • FastAPI
  • SQLAlchemy 2.0
  • Alembic
  • PostgreSQL
  • Pydantic v2
  • JWT Authentication

Frontend

  • React
  • Vite
  • React Router

Infrastructure

  • Docker
  • Docker Compose
  • Nginx (reverse proxy)

Architecture

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:


Data Model

The database model is centered around the submission evaluation workflow.

Database Diagram

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.


Core Workflow

Student Flow

  1. Register and log in
  2. Browse available learning projects
  3. Submit a project solution
  4. Track submission history
  5. Follow learning progression

Reviewer Flow

  1. Browse available submissions
  2. Start a peer review
  3. Evaluate each review criterion
  4. Submit the evaluation
  5. System updates the submission status

Authentication

The application uses:

  • JWT Bearer Authentication
  • Stateless sessions
  • Password hashing with bcrypt

API Documentation

Interactive OpenAPI documentation is available at:

/docs

Running the Project

Requirements

  • Docker
  • Docker Compose
  • Make

Start

make

The command builds and starts the complete development environment.

Services:

  • frontend
  • backend
  • postgres
  • nginx

Development Documentation

Additional documentation:


MVP Status

✅ Implemented

  • Authentication
  • Project management
  • Submission workflow
  • Submission history
  • Peer review workflow
  • Review criteria
  • Evaluation rules
  • Learning progression
  • Responsive React frontend
  • Dockerized development environment

Project Goal

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

About

A modern full-stack platform inspired by the peer-to-peer learning model used by School 42. Students progress through learning paths, submit projects, perform peer evaluations, and track their learning journey through an interactive dashboard.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors