This project is a University Management System developed using a microservices architecture, allowing for modularity, scalability, and maintainability. The project consists of multiple services responsible for managing different university operations such as student creation, semester registration, result creation, payment handling, and more.
- Architecture Overview
- Microservices
- Technologies Used
- Features
- Installation
- Running the Services
- Frontend
- Contributing
- License
The project is developed using a microservices architecture, where each service is responsible for a specific function. The services communicate with each other through REST APIs and use Redis for caching. For data persistence, we use MongoDB and PostgreSQL with Prisma and Mongoose as the Object Relational Mapper (ORM).
The API Gateway serves as the entry point for the system, routing requests to the appropriate services.
- Responsible for routing requests to the correct microservice.
- Handles API versioning, rate limiting, and logging.
- Serves as the central hub for all incoming requests from the frontend.
- Handles authentication and authorization.
- Implements JWT (JSON Web Token) based authentication.
- Manages user roles such as students, teachers, administrators.
- Manages core university functionalities:
- Student creation
- Semester registration
- Result creation
- Assigning teachers to courses
- Classroom assignments
- Administration member assignments
- Manages semester payments and other university-related financial transactions.
- Integrates with payment gateways.
- Frontend: Next.js
- Backend: Node.js, Express.js
- Microservices: Developed in a modular and decoupled manner using Express.js
- Databases:
- MongoDB: Used with the Mongoose ORM for NoSQL database interactions.
- PostgreSQL: Used with Prisma ORM for relational database interactions.
- Cache: Redis
- Authentication: JWT (JSON Web Tokens)
- Code Quality & Pre-commit Hooks: Husky
- Containerization: Docker (for deploying microservices)
- Student Creation: Create and manage student profiles and enrollment.
- Semester Registration: Register students for semesters and courses.
- Result Creation: Manage and publish student results for each semester.
- Teacher Assignment: Assign teachers to specific courses based on their expertise.
- Classroom Assignment: Assign classrooms to courses and scheduling.
- Administration Member Assignment: Add and assign administration members to different roles.
- Semester Payment: Manage student payments for course registration, semester fees, and other related transactions.
- Other Features: Various other functionalities that are typically required in a university management system, such as timetable scheduling, notifications, and more.
To set up this project locally, follow the steps below:
Before you begin, ensure that you have the following software installed:
- Node.js (v16 or later)
- Docker (optional but recommended for running services in containers)
- Redis
- MongoDB
- PostgreSQL
Clone the repository to your local machine using the following command:
git clone https://github.com/your-repo/university-management-system.git
cd university-management-system
Each microservice has its own dependencies, which need to be installed separately:
cd university-management-API-Gateway
npm install
cd university-management-auth-service
npm install