An Express API written in TypeScript; that keeps track of student grades and GPA over the course of an academic year. Data is stored and handled in a PostgreSQL database. This system is a component of a larger university management system.
To run this API, you will need the following:
- Node.js and npm installed
- PostgreSQL
To test the endpoints:
- Clone the repository:
git clone https://github.com/Meko007/grade-management.git
- Install the dependencies:
npm install
- Create a
.envfile in the root directory of the project and follow the sample file
To install PostgreSQL head over to the PostgreSQL webiste and follow the steps to download, install and set it up for your operating system.
After installation, run the npm run prisma-gen, then the npm run prisma-migrate scripts.
Run the npm run dev script to start the development server.
The API will be available at http://localhost:XXXX/api/v1
Designed with pgAdmin (please zoom in for clarity)
| Operation | Route | Auth | Admin Privileges | Description |
|---|---|---|---|---|
| POST | /schools | Required | Yes | Create a new school |
| GET | /schools | Required | No | Retrieve all schools |
| GET | /schools/:id | Required | No | Retrieve school by ID |
| PUT | /schools/:id | Required | Yes | Update school by ID |
| DELETE | /schools/:id | Required | Yes | Delete school by ID |
| GET | /school-depts/:id | Required | No | Retrieve departments for a school |
| Operation | Route | Auth | Admin Privileges | Description |
|---|---|---|---|---|
| POST | /depts | Required | Yes | Create a new department |
| GET | /depts | Required | No | Retrieve all departments |
| GET | /depts/:id | Required | No | Retrieve department by ID |
| PUT | /depts/:id | Required | Yes | Update department by ID |
| DELETE | /depts/:id | Required | Yes | Delete department by ID |
| Operation | Route | Auth | Admin Privileges | Description |
|---|---|---|---|---|
| POST | /sessions | Required | Yes | Create a new session |
| GET | /sessions | Required | No | Retrieve all sessions |
| GET | /sessions/:id | Required | No | Retrieve session by ID |
| DELETE | /sessions/:id | Required | Yes | Delete session by ID |
| Operation | Route | Auth | Admin Privileges | Description |
|---|---|---|---|---|
| POST | /semesters | Required | Yes | Create a new semester |
| GET | /semesters | Required | No | Retrieve all semesters |
| GET | /semesters/:id | Required | No | Retrieve semester by ID |
| DELETE | /semesters/:id | Required | Yes | Delete semester by ID |
| Operation | Route | Auth | Admin Privileges | Description |
|---|---|---|---|---|
| POST | /courses | Required | Yes | Creates a new course |
| GET | /courses | Required | No | Returns all courses |
| GET | /courses/:id | Required | No | Returns course by its id |
| PUT | /courses/:id | Required | Yes | Updates course by its id |
| DELETE | /courses/:id | Required | Yes | Deletes course by its id |
| Operation | Route | Auth | Admin Privileges | Description |
|---|---|---|---|---|
| POST | /grades | Required | Yes | Create a new grade |
| GET | /grades | Required | No | Retrieve all grades |
| GET | /grades/:id | Required | No | Retrieve grade by ID |
| PUT | /grades/:id | Required | Yes | Update grade by ID |
| DELETE | /grades/:id | Required | Yes | Delete grade by ID |
| Operation | Route | Auth | Admin Privileges | Unique User | Description |
|---|---|---|---|---|---|
| POST | /lecturers/register | Optional | No | Yes | Register a new lecturer |
| POST | /lecturers/login | Optional | No | Yes | Login as a lecturer |
| POST | /lecturers/logout | Optional | No | Yes | Logout as a lecturer |
| GET | /lecturers | Required | Yes | No | Retrieve all lecturers |
| GET | /lecturers/:id | Required | Yes | No | Retrieve lecturer by ID |
| PUT | /lecturers/:id | Required | Yes | No | Update lecturer by ID |
| DELETE | /lecturers/:id | Required | Yes | No | Delete lecturer by ID |
| POST | /lecturers/forgot-password | Optional | No | Yes | Forgot password |
| POST | /lecturers/reset-password/:resetToken | Optional | No | Yes | Reset password |
| GET | /lecturer/courses | Required | No | Yes | Retrieve courses for a lecturer |
| POST | /lecturer/scores/:sessionId/:semesterId | Required | No | Yes | Score a student in a session |
| PUT | /lecturer/scores/:sessionId/:semesterId | Required | No | Yes | Update student score in a session |
| GET | /lecturer/scores/:sessionId/:semesterId | Required | No | Yes | View grades for a session |
| Operation | Route | Auth | Admin Privileges | Unique user | Description |
|---|---|---|---|---|---|
| POST | /students/register | Optional | No | Yes | Registers a new student |
| POST | /students/login | Optional | No | Yes | Student login |
| POST | /students/logout | Optional | No | Yes | Student logout |
| GET, PUT | /students | Required | Yes | No | Get all students, Update students |
| POST | /student/my-courses/:semesterId | Required | No | Yes | Student registers for courses |
| GET | /student/my-courses/:level/:semesterId | Required | No | Yes | Get courses for a student |
| GET | /student/view-grades | Required | No | Yes | View grades for a student |
| POST | /students/forgot-password | Required | No | Yes | Forgot password |
| POST | /students/reset-password/:resetToken | Required | No | Yes | Reset password |
| GET, DELETE | /students/:id | Required | Yes | No | Get student by ID, Delete student |
| Operation | Route | Auth | Unique User | Description |
|---|---|---|---|---|
| POST | /admin/register | Optional | Yes | Register a new admin account |
| POST | /admin/login | Optional | Yes | Admin login |
| POST | /admin/logout | Optional | Yes | Admin logout |
| POST | /admin/forgot-password | Optional | Yes | Forgot password |
| POST | /admin/reset-password/:resetToken | Optional | Yes | Reset password |
