Department of Software Engineering
Nepal College of Information Technology (NCIT)
Pokhara University
Name | Roll Number | Role |
---|---|---|
Laxman Khatri | 221623 | Fullstack |
Denisha Adhikari | 221651 | Backend Dev |
Abhishek Bhattarai | 221605 | Frontend Dev |
This project is a web-based College Management System that enables secure and efficient handling of student data, department records, and enrollment operations using modern cloud-based and containerized web technologies.
It addresses the need for lightweight, fast, and scalable solutions in academic institutions to reduce manual paperwork and streamline record keeping, especially relevant in todayβs cloud-native education systems.
The project demonstrates RESTful service design, secure user authentication, and full CRUD operations for students, courses (departments), and enrollments using a modular FastAPI backend and a dynamic HTML/JS frontend.
- Challenge: Manual student, department, and enrollment record systems are prone to errors and inefficiency.
- Context: Digitizing these operations in a cloud-deployable app improves accessibility, reliability, and efficiency.
- Impact: Helps academic institutions better manage administrative operations while introducing students to containerized and secure cloud-native application development.
- Build a secure, cloud-deployable web application using FastAPI and PostgreSQL.
- Provide CRUD functionality for Students, Departments, and Enrollments.
- Use OAuth2 JWT-based authentication to protect sensitive endpoints.
- Containerize the application using Docker for portable deployment.
- Maintain a clean and interactive UI using HTML, CSS, and JavaScript.
Frontend (index.html)
|
|---> REST API (FastAPI)
|-- Authentication (JWT)
|-- Student Routes
|-- Department Routes
|-- Enrollment Routes
|
---> PostgreSQL Database (via SQLAlchemy ORM)
- Docker, Docker Compose
- Deployed on AWS EC2
- Python
- HTML5, CSS3
- JavaScript
- PostgreSQL
- FastAPI
- SQLAlchemy
- asyncpg
- python-jose
- passlib
- Jinja2
- Modular FastAPI backend (
students
,courses
,enrollments
routers) - HTML form authentication using
OAuth2PasswordRequestForm
- JWT-based token issuance and verification
- Middleware to protect endpoints and allow session-based visibility
- Dynamic HTML page (
index.html
) that shows/hides content post-login
- Tested routes via Swagger UI (
/docs
) - Login and authentication validated with token
- Frontend tested in modern browsers
- Dockerized deployment validated on local and remote EC2
college-management-system/
β
βββ auth.py # Authentication logic (JWT, password hash)
βββ main.py # FastAPI app entry point
βββ database.py # DB engine and config
βββ models.py # SQLAlchemy models
βββ routers/
β βββ students.py
β βββ courses.py
β βββ enrollments.py
βββ templates/
β βββ index.html # Main HTML frontend
βββ static/ # CSS, JS files
βββ requirements.txt # Python dependencies
βββ Dockerfile
βββ docker-compose.yml
βββ README.md
git clone https://github.com/your-username/college-management-system.git
cd college-management-system
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
pip install -r requirements.txt
Set up a PostgreSQL DB and update connection string in database.py
.
uvicorn main:app --reload
docker-compose up --build
http://localhost:8080
Username: laxman
Password: secret
You can change this in
auth.py
.
- Add Update/Delete for Students, Departments, Enrollments
- Export data as CSV
- Add Admin Dashboard Analytics
- Extend with React frontend (coming soon)
- Develop additional REST APIs for advanced filtering and reporting
- Implement role-based access control (RBAC)
- Add user registration page and flow
- Integrate CI/CD pipeline with GitHub Actions
- Enhance security with OAuth2 scopes and refresh tokens
- Add support for bulk data import/export
- Improve UI/UX with responsive design and accessibility features
- NCIT Faculty Mentors
- Open Source FastAPI Docs
- Contributors to FastAPI, Docker, SQLAlchemy