This Node.js API is built with Express and NeonDB (PostgreSQL) for managing user authentication, course enrollment, and email sending functionalities. It utilizes JSON Web Tokens (JWT) for role-based token authentication.
- User management (creation, authentication)
- Superuser management
- Course management (creation, enrollment)
- Token-based authentication with JWT
- Email sending (resending feature)
CREATE TABLE users (
user_id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
profile_picture VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE courses (
course_id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
description TEXT,
category VARCHAR(100),
level VARCHAR(50),
popularity INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE superadmins (
superadmin_id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
profile_picture VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE user_enrollments (
enrollment_id SERIAL PRIMARY KEY,
user_id INT NOT NULL,
course_id INT NOT NULL,
enrollment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users(user_id),
CONSTRAINT fk_course FOREIGN KEY (course_id) REFERENCES courses(course_id),
CONSTRAINT unique_enrollment UNIQUE (user_id, course_id)
);
npm install bcrypt body-parser cloudinary cors crypto-js dotenv express express-validator jsonwebtoken nodemon pg postgres resend
- Clone the repository.
- Install dependencies using
npm install
. - Set up your environment variables by creating a
.env
file based on.env.example
. - Use given schema and create database on NeonDB.
- Run the server using
npm start
. - The API should now be accessible at the specified port.
- Register User :
POST /user/register
- Login User :
POST /user/login
- Update User :
PUT /user/profile/:userId
- Get User Details :
GET /user/profile/:userId
- Register Superadmin :
POST /superadmin/register
- Login Superadmin :
POST /superadmin/login
- Get Superadmin Details :
GET /superadmin/profile/:superadminId
- Update Superadmin Details :
PUT /superadmins/profile/:superadminId
- Add Course :
POST /superadmin/courses
- See Course detail :
GET /superadmin/courses/:courseId
- Update Course :
PUT /superadmin/courses/:courseId
- Delete Course :
DELETE /superadmin/courses/:courseId
- Enroll in Course :
POST /user/:userId/enroll
- See Enrolled Courses by User :
GET /user/:userId/enrolled-courses
/courses?category=ITI: Get use Query for category, level, limit
This project is licensed under the MIT License.