Skip to content

WeWeBunnyX/OpenFYP

Repository files navigation

OpenFYP - Final Year Project Management & Evaluation System

License Version Status

A comprehensive web-based platform for managing Final Year Projects (FYP), from student registration through final viva evaluation. Built with modern technologies and containerized for easy deployment.

πŸ“‹ Table of Contents

✨ Features

Core Functionality

  • FYP Registration: Students register projects with supervisor assignment
  • Registration Approval Workflow: Multi-stage verification (Student β†’ Supervisor β†’ Coordinator)
  • Progress Tracking: Students submit 12 progress logs throughout the academic year
  • Proposal Evaluation: Supervisors evaluate and provide feedback on proposals
  • Interim Evaluations: Two-stage interim evaluation (Stage 1 & 2) with independent committee member marks
  • Final Evaluation & Viva: Complete committee assignment, rubric configuration, weighted average calculation, and results publication
  • Scheduling Management: Defense and evaluation schedule creation and management
  • Role-Based Access Control: 4 distinct user roles with specific permissions

Technical Features

  • βœ… Light/Dark Theme: Persistent theme preference with localStorage
  • βœ… Responsive Design: Mobile and desktop friendly UI
  • βœ… Real-time Updates: Instant feedback and data synchronization
  • βœ… JSON Data Flexibility: Nested data storage (committees, rubrics, marks)
  • βœ… File Upload Support: Progress log attachments and proposal documents
  • βœ… Automatic Calculation: Weighted average calculation from committee marks
  • βœ… Docker Containerization: Complete containerized stack ready for deployment

πŸ—οΈ Technology Stack

Frontend

  • React 19.2.0 - UI library
  • TypeScript - Type-safe JavaScript
  • Vite - Lightning-fast build tool
  • Tailwind CSS - Utility-first CSS framework
  • Shadcn/ui - High-quality accessible components
  • Radix UI - Headless component primitives
  • React Hook Form - Efficient form management
  • Lucide Icons - Beautiful icon library

Backend

  • FastAPI - Modern async Python web framework
  • SQLModel - Type-safe ORM (SQLAlchemy + Pydantic)
  • Pydantic - Data validation using Python type hints
  • PostgreSQL - Relational database (production)
  • SQLite - Lightweight database (development)
  • Uvicorn - ASGI server

DevOps & Infrastructure

  • Docker - Container runtime
  • Docker Compose - Multi-container orchestration
  • Git - Version control

πŸ›οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Frontend (React)                          β”‚
β”‚              Running on Port 5173                            β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚ HTTP Requests
                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Backend (FastAPI)                               β”‚
β”‚              Running on Port 8000                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  Routes: Registration, Scheduling, Progress, etc.   β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                       β”‚ SQL Queries
                       β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Database (PostgreSQL)                           β”‚
β”‚              Running on Port 5432                            β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚  11 Core Tables + JSON Columns                       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

3-Tier Architecture:

  • Presentation Tier: React SPA with Tailwind & Shadcn/ui
  • Application Tier: FastAPI RESTful API with async operations
  • Data Tier: PostgreSQL with SQLModel ORM

πŸ“¦ Prerequisites

Option 1: Docker (Recommended - No Manual Setup)

  • Docker Desktop / Docker Engine
  • Docker Compose 2.0+

Option 2: Local Development

  • Node.js 20+ LTS
  • Python 3.11+
  • PostgreSQL 15+ (or use SQLite for dev)

πŸš€ Installation

Quick Start with Docker (Recommended)

  1. Clone the repository
git clone https://github.com/WeWeBunnyX/OpenFYP.git
cd OpenFYP
  1. Build and start all services
docker-compose up --build
  1. Access the application
Frontend: http://localhost:5173
Backend API: http://localhost:8000
API Docs: http://localhost:8000/docs
Database: localhost:5433

That's it! βœ… No manual setup needed. Docker handles everything.

Local Development Setup

Frontend Setup

# Install Node.js dependencies
npm install

# Start development server
npm run dev
# Accessible at http://localhost:5173

Backend Setup

# Create virtual environment
python -m venv venv

# Activate virtual environment
# On Linux/macOS:
source venv/bin/activate
# On Windows:
venv\Scripts\activate

# Install Python dependencies
pip install -r backend/requirements.txt

# Navigate to backend
cd backend

# Start FastAPI server
uvicorn app.main:app --reload --port 8000
# Accessible at http://localhost:8000

Database Setup (Development)

# PostgreSQL (if using Docker for DB only)
docker run -d \
  -e POSTGRES_USER=openfyp \
  -e POSTGRES_PASSWORD=example \
  -e POSTGRES_DB=fypdb \
  -p 5433:5432 \
  postgres:15

# Or use SQLite (included, no setup needed)

βš™οΈ Configuration

Environment Variables

Backend (.env or environment setup)

DATABASE_URL=postgresql+psycopg2://openfyp:example@localhost:5433/fypdb
# Or for SQLite:
DATABASE_URL=sqlite:///./dev.db

PORT=8000
APP_TITLE=OpenFYP
DEBUG=True

Frontend (Vite)

VITE_API_URL=http://localhost:8000  # Local development
# Docker: http://backend:8000 (internal)

Docker Compose Configuration

Edit docker-compose.yml to customize:

  • Port mappings
  • Database credentials
  • Environment variables
  • Volume mounts

πŸ“– Usage

Login Credentials (Test Account)

Role Email Password
Student student@example.com password
Supervisor supervisor@example.com password
Coordinator coordinator@example.com password
Committee committee@example.com password

User Role Workflows

πŸ‘¨β€πŸŽ“ Student

  1. Register FYP project
  2. Upload proposal document
  3. Submit 12 progress logs
  4. View evaluations and results

πŸ‘¨β€πŸ« Supervisor

  1. Verify student registrations
  2. Evaluate proposals
  3. Review and grade progress
  4. Submit interim and final marks

πŸ“‹ Coordinator

  1. Approve/reject registrations
  2. Create defense schedules
  3. Assign committee members
  4. Manage grading rubrics
  5. Approve marks and publish results

πŸ‘₯ Committee Member

  1. View assigned evaluations
  2. Submit interim marks (Stage 1 & 2)
  3. Submit final viva marks with feedback

🐳 Docker Deployment

What Docker Provides

βœ… Complete Isolation: Each service in its own container βœ… Auto-management: All dependencies handled βœ… Easy Scaling: Add more backend instances if needed βœ… Database Persistence: Data survives container restarts βœ… Hot Reload: Code changes reflect instantly (dev mode) βœ… No Local Setup: Run production-like environment anywhere

Docker Commands

# Build and start all services
docker-compose up --build

# Start in background
docker-compose up -d

# View logs
docker-compose logs -f

# View specific service logs
docker-compose logs -f backend

# Stop all services
docker-compose stop

# Stop and remove containers
docker-compose down

# Remove everything including volumes
docker-compose down -v

# Restart services
docker-compose restart

# Rebuild specific service
docker-compose build --no-cache backend

Production Deployment

For production, consider:

  1. Kubernetes: Use Helm charts for complex deployments
  2. AWS ECS: Elastic Container Service for managed containers
  3. Azure Container Instances: Serverless container deployment
  4. DigitalOcean App Platform: Simple container hosting
  5. Docker Swarm: Simple orchestration on VMs

See OpenFYP_Software_Design_Specification.docx for detailed deployment scenarios.

πŸ“š API Documentation

Interactive API Docs

Main Endpoints

Authentication

POST /login
  Request: { email, password }
  Response: { user: { email, name, role } }

Registration

POST /registrations - Create registration
GET /registrations - List registrations
PATCH /registrations/{id}/verify - Supervisor verify
PATCH /registrations/{id}/approve - Coordinator approve

Scheduling

POST /schedule - Create defense schedule
GET /schedules - List schedules
DELETE /schedules/{id} - Delete schedule

Progress

POST /api/progress/logs - Upload progress log
GET /api/progress/logs - List student progress
GET /api/progress/logs/{id}/download - Download file

Final Evaluation

POST /api/final-evaluation - Create evaluation
GET /api/final-evaluation/coordinator - List all
POST /api/final-evaluation/{id}/committee - Add committee
POST /api/final-evaluation/{id}/committee/{member_id}/marks - Submit marks
PATCH /api/final-evaluation/{id}/approve - Approve marks
POST /api/final-evaluation/{id}/publish - Publish results

For complete API specification, see the interactive docs at /docs

πŸ’Ύ Database Schema

Core Tables (11 Total)

Table Purpose
User Authentication & user profiles
Registration FYP registration tracking
Attachment File uploads for registrations
Notification System notifications
Scheduling Defense schedule management
InterimScheduling Interim evaluation schedules
ProposalEvaluation Proposal evaluation records
ProgressLog Student progress submissions (12 per student)
ProgressGrading Supervisor progress grading
InterimEvaluationMarks Two-stage interim marks
FinalEvaluationViva Final viva with committee marks

Key Features

  • JSON columns for nested data (committees, rubrics, marks)
  • Automatic timestamps (created_at, updated_at)
  • Role-based data filtering
  • Cascading operations (approval creates final eval)

πŸ” User Roles & Permissions

πŸ‘¨β€πŸŽ“ Student

  • βœ“ Register FYP
  • βœ“ Submit 12 progress logs
  • βœ“ View evaluations (read-only)
  • βœ“ Access settings (theme, profile)

πŸ‘¨β€πŸ« Supervisor

  • βœ“ Verify registrations
  • βœ“ Evaluate proposals
  • βœ“ Grade progress (12 submissions)
  • βœ“ Submit interim marks (Stage 1, 2)
  • βœ“ View supervised students' results

πŸ“‹ Coordinator

  • βœ“ Approve/reject registrations
  • βœ“ Create schedules (defense, interim)
  • βœ“ Assign committee members
  • βœ“ Configure grading rubric
  • βœ“ Approve and publish marks
  • βœ“ View system statistics

πŸ‘₯ Committee Member

  • βœ“ Submit interim marks
  • βœ“ Submit final viva marks
  • βœ“ Write-once policy (can't modify)

πŸ“ Project Structure

OpenFYP/
β”œβ”€β”€ src/                                 # Frontend (React)
β”‚   β”œβ”€β”€ components/                     # UI Components
β”‚   β”‚   β”œβ”€β”€ Sidebar.tsx                # Navigation
β”‚   β”‚   β”œβ”€β”€ DashboardHome.tsx           # Welcome page
β”‚   β”‚   └── ui/                         # Shadcn/ui components
β”‚   β”œβ”€β”€ dashboards/                     # Role-based dashboards
β”‚   β”‚   β”œβ”€β”€ StudentDashboard.tsx
β”‚   β”‚   β”œβ”€β”€ CoordinatorDashboard.tsx
β”‚   β”‚   β”œβ”€β”€ SupervisorDashboard.tsx
β”‚   β”‚   └── CommitteeDashboard.tsx
β”‚   β”œβ”€β”€ features/                       # Feature modules
β”‚   β”‚   β”œβ”€β”€ registration/
β”‚   β”‚   β”œβ”€β”€ Scheduling/
β”‚   β”‚   β”œβ”€β”€ ProgressTracking/
β”‚   β”‚   β”œβ”€β”€ FinalEvaluationandVivas/
β”‚   β”‚   β”œβ”€β”€ Interim_Evaluation/
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ contexts/                       # React Context (Auth)
β”‚   β”œβ”€β”€ App.tsx                         # Main app component
β”‚   └── main.tsx                        # Entry point
β”‚
β”œβ”€β”€ backend/                            # Backend (FastAPI)
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ main.py                    # FastAPI app
β”‚   β”‚   β”œβ”€β”€ models.py                  # SQLModel definitions
β”‚   β”‚   β”œβ”€β”€ routes_registrations.py    # Auth & registration
β”‚   β”‚   β”œβ”€β”€ routes_scheduling_evaluation.py
β”‚   β”‚   β”œβ”€β”€ routes_progress.py
β”‚   β”‚   β”œβ”€β”€ routes_interim_marks.py
β”‚   β”‚   β”œβ”€β”€ routes_final_evaluations_viva.py
β”‚   β”‚   └── utils.py                   # Helpers
β”‚   β”œβ”€β”€ requirements.txt
β”‚   └── Dockerfile
β”‚
β”œβ”€β”€ docker-compose.yml                 # Docker orchestration
β”œβ”€β”€ Dockerfile.frontend                # Frontend container
β”œβ”€β”€ package.json
β”œβ”€β”€ vite.config.ts
β”œβ”€β”€ tsconfig.json
└── README.md

πŸ› οΈ Development

Running Tests

# Frontend (if tests added)
npm run test

# Backend (if tests added)
pytest backend/

Building for Production

# Frontend
npm run build
# Output: dist/

# Backend
# Dockerize and deploy
docker build -f backend/Dockerfile -t openfyp-backend .

Code Quality

# Lint frontend
npm run lint

# Format code
npm run format

πŸ“– Documentation

  • Software Design Specification: OpenFYP_Software_Design_Specification.docx
  • Class Diagrams: OpenFYP_Complete_Diagram.puml
  • API Documentation: http://localhost:8000/docs (when running)

πŸ› Troubleshooting

Docker Issues

Containers won't start

# Check logs
docker-compose logs

# Restart everything
docker-compose down && docker-compose up --build

Port already in use

# Change ports in docker-compose.yml
ports:
  - "5174:5173"  # Frontend
  - "8001:8000"  # Backend
  - "5434:5432"  # Database

Database connection errors

# Ensure DB service is running
docker-compose up db

# Check database credentials in docker-compose.yml

Frontend Issues

API calls returning 404

  • Ensure VITE_API_URL is set correctly
  • For Docker: http://backend:8000
  • For local: http://localhost:8000

Theme not persisting

  • Check browser localStorage (DevTools > Application)
  • Clear cache and reload

Backend Issues

Import errors

# Reinstall dependencies
pip install -r backend/requirements.txt

Database migrations failed

# Drop and recreate tables (dev only)
# Update models.py and restart

🀝 Contributing

We welcome contributions! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit changes (git commit -m 'Add amazing feature')
  4. Push to branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

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

πŸ‘₯ Authors

πŸ“ž Support

For issues, questions, or suggestions:

  • Open an issue on GitHub
  • Check existing issues for solutions
  • Review API documentation at /docs

πŸŽ“ About OpenFYP

OpenFYP is designed to streamline the Final Year Project lifecycle in academic institutions. It provides a complete solution for managing student projects from registration through final evaluation, with role-based access control and comprehensive tracking capabilities.


Last Updated: December 2025
Version: 1.0.0
Status: Production Ready βœ…

Made with ❀️ for academic excellence

About

A containarized web based FYP Management Portal

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •