This project is a backend database system for a Learning Management System (LMS). It manages users, courses, enrollments, lessons, and categories, along with analytics and performance optimization.
- PostgreSQL (Database)
- Prisma ORM
- Node.js
The system consists of the following tables:
- User – stores user information (students/admins)
- Course – stores course details
- Category – groups courses into categories
- Enrollment – tracks which users are enrolled in which courses
- Lesson – contains course lessons and video content
- A user can enroll in multiple courses
- A course can have multiple lessons
- Each course belongs to one category
- Enrollments act as a bridge between users and courses
- Designed ER-based relational schema
- Implemented using Prisma models
-
Added dummy data for testing:
- Users (e.g., Pardeep Yadav)
- Courses
- Lessons
- Enrollments
- get_enrollment_count(courseId) → Returns total enrollments in a course
- get_course_progress(userId, courseId) → Returns user progress in a course
-
Indexed frequently queried fields:
email(User table)courseId(Enrollment table)userId(Enrollment table)
-
Clone the repository
-
Install dependencies:
npm install
-
Setup environment variables: Create a
.envfile and add:DATABASE_URL="your_postgresql_connection_string"
-
Push database schema:
npx prisma db push
-
Run seed script:
npx prisma db seed
-
Open Prisma Studio (optional):
npx prisma studio
-
Use Prisma Studio to verify data
-
Stored procedures can be tested using SQL queries:
SELECT get_enrollment_count(1); SELECT get_course_progress(1, 1);
- Build REST APIs (Courses, Enrollment, Progress)
- Add authentication (JWT)
- Add pagination and search
- Role-based access control
Pardeep Yadav