This system is a professional-grade solution designed to manage university identities (Students, Faculty, Staff, and External). In a university, thousands of people join every year. This system ensures every person gets a Unique Permanent ID that never changes, even if a student later becomes a professor.
- Immutable Identity: IDs like
STU20260001are generated automatically and stay with the person forever. - Clean Data Architecture: Using "One-to-One" relationships to separate Student data (like High School grades) from Professor data (like Research areas).
- Audit Trail: Every status change (e.g., from Pending to Active) is logged in a history table for security.
- Modern Collaboration: Built using a Dockerized Monorepo for seamless teamwork via GitHub.
We chose these technologies to ensure the system is fast, secure, and industry-standard:
- Frontend:
React.js+TypeScript(For a responsive, interactive User Interface). - Backend:
Node.js+TypeScript(For type-safe, high-performance logic). - Database:
PostgreSQL(A robust relational database for structured data). - DevOps:
Docker&Docker Compose(To run the entire system in any environment with one command). - ORM:
Prisma(To communicate safely between the code and the database).
The project is organized into a Structured Monorepo. Here is what each folder does:
This is where the logic happens.
src/api/controllers: Receives requests from the Frontend (e.g., "Create a Student").src/core/services: The Logic Center. This generates the Unique IDs ([TYPE][YEAR][NUMBER]) and checks business rules.src/data/models: Defines the PostgreSQL tables (Identity, StudentProfile, etc.).prisma/: Contains the Database Schema and migration files.
This is the visual part the university staff interacts with.
src/pages/: Full screens like the Search Dashboard and Creation Form.src/services/: Handles AJAX calls (using Axios or fetch) to talk to the Backend.src/components/: Reusable UI parts like Navbars and Buttons.
docker-compose.yml: The "Manager" that starts Postgres, Backend, and Frontend together..env: Stores secret keys and database passwords.
You don't need to install Database software manually. We use Docker to make it easy.
- Install Docker: Download and install Docker Desktop.
- Clone the Repo:
git clone [https://github.com/aymendja/ISM.git](https://github.com/aymendja/ISM.git) cd ISM - Start the System:
docker-compose up --build
- Access the App:
- Frontend:
http://localhost:3000 - Backend API:
http://localhost:5000
- Frontend:
We use a One-to-One (1:1) Specialization pattern.
- Identity Table: Stores shared data .
- Profile Tables: (Student, Faculty, Staff, External) store only what is relevant to that specific role.