How janarthanankv/project_lms works
Edemy is a learner-and-educator learning management system. Learners browse course listings and details, purchase courses, access enrolled material, and track lecture progress; educators can publish courses and review courses, earnings, and enrolled students. The client context loads shared course and user state, while the Express server mounts course, user, and educator APIs. Sampled controllers show persistence and integrations; some page and webhook internals were not sampled, so their detailed wiring is omitted.
Main entry points: App.jsx App routes · userController.js Learner operations · educatorController.js Educator operations · server.js Express server
Components 30
Learner and educator client
- App routes
client/src/App.jsx - Shared client state
client/src/context/AppContext.jsx - Course catalog
client/src/pages/student/CoursesList.jsx - Course details
client/src/pages/student/CourseDetails.jsx - My enrollments
client/src/pages/student/MyEnrollments.jsx - Course player
client/src/pages/student/Player.jsx - Educator workspace
client/src/pages/educator/Educator.jsx - Course authoring
client/src/pages/educator/AddCourse.jsx - Educator dashboard
client/src/pages/educator/Dashboard.jsx - Enrolled students
client/src/pages/educator/StudentsEnrolled.jsx
API and access
- Express server
server/server.js - Course routes
server/routes/courseRoutes.js - User routes
server/routes/userRoutes.js - Educator routes
server/routes/educatorRoutes.js - Educator authorization
server/middlewares/authMiddleware.js - Identity and payment webhooks
server/controllers/webhooks.js
Courses and learning records
- Course queries
server/controllers/courseController.js - Learner operations
server/controllers/userController.js - Educator operations
server/controllers/educatorController.js - Course records
server/models/Course.js - User records
server/models/User.js - Purchase records
server/models/Purchase.js - Progress records
server/models/courseProgress.js
Identity and services
- MongoDB connection
server/configs/mondodb.js - Clerk
- Stripe
- Cloudinary
- Multipart upload
server/configs/multer.js
Other components
- Learner
- Educator
Connections 37
- Learner → App routes: opens
- Educator → App routes: opens
- App routes → Course catalog: routes
- App routes → Course details: routes
- App routes → My enrollments: routes
- App routes → Course player: routes
- App routes → Educator workspace: routes
- Educator workspace → Course authoring: routes
- Educator workspace → Educator dashboard: routes
- Educator workspace → Enrolled students: routes
- Shared client state → Course routes: fetches catalog
- Shared client state → User routes: fetches user data
- My enrollments → User routes: requests progress
- Express server → Course routes: mounts
- Express server → User routes: mounts
- Express server → Educator routes: mounts
- Express server → Identity and payment webhooks: dispatches webhooks
- Express server → MongoDB connection: connects
- Course routes → Course queries: dispatches
- User routes → Learner operations: dispatches
- Educator routes → Educator authorization: checks educator role
- Educator routes → Educator operations: dispatches
- Educator routes → Multipart upload: accepts image
- Course queries → Course records: queries
- Learner operations → Course records: reads course
- Learner operations → User records: reads and updates
- Learner operations → Purchase records: creates purchase
- Learner operations → Progress records: reads and writes
- Educator operations → Course records: reads and creates
- Educator operations → Purchase records: reads purchases
- Educator operations → User records: reads students
- Educator operations → Cloudinary: uploads thumbnail
- Educator operations → Clerk: updates educator role
- Educator authorization → Clerk: checks role
- Learner operations → Stripe: creates checkout
- Identity and payment webhooks → Clerk: receives identity events
- Identity and payment webhooks → Stripe: receives payment events