A full-stack MERN Learning Management System with real-time chat, video lectures, assignments, and live class scheduling.
- Authentication & Authorization - JWT-based login/signup with role-based access (Admin, Instructor, Student)
- Course Management - Create, update, delete, and enroll in courses
- Video Lectures - Upload and view lecture videos with support for external video URLs
- Assignments - Create assignments, submit work, and receive grades
- Real-time Chat - Socket.io-powered discussion boards for each course
- Live Class Scheduling - Schedule and join live sessions with meeting links
- Register and login
- Browse and enroll in available courses
- Access lectures and course materials
- Submit assignments
- Participate in course discussions
- Join live classes
- Create and manage courses
- Upload video lectures
- Create and grade assignments
- Schedule live classes
- Monitor course enrollment
- Engage with students via chat
- Manage all users (CRUD operations)
- Oversee all courses and content
- View platform statistics
- Remove inappropriate content
- Update user roles
- React 18
- React Router DOM
- Axios
- Socket.io Client
- CSS3 with custom pastel theme
- Node.js
- Express.js
- MongoDB with Mongoose
- Socket.io
- JWT Authentication
- Bcrypt.js
- Multer (file uploads)
- Node.js (v14 or higher)
- MongoDB account (Atlas or local)
- npm or yarn
git clone <repository-url>
cd edunexusnpm installCreate a .env file in the root directory with:
MONGO_URI=mongodb+srv://aryansingh:aryanmongodb@cluster0.7shqalg.mongodb.net/D-edunexus
JWT_SECRET=edunexus_secret_key_2024
PORT=5001
npm run serverServer will run on http://localhost:5000
npm run devFrontend will run on http://localhost:5173
- Email: admin@edunexus.com
- Password: admin123
- Email: instructor@edunexus.com
- Password: instructor123
- Email: student@edunexus.com
- Password: student123
Note: Create these accounts by registering through the app
edunexus/
├── src/ # Frontend source
│ ├── components/ # Reusable React components
│ │ ├── Navbar.jsx
│ │ ├── Chat.jsx
│ │ └── ProtectedRoute.jsx
│ ├── pages/ # Page components
│ │ ├── Home.jsx
│ │ ├── Login.jsx
│ │ ├── Register.jsx
│ │ ├── Dashboard.jsx
│ │ ├── StudentDashboard.jsx
│ │ ├── InstructorDashboard.jsx
│ │ ├── AdminDashboard.jsx
│ │ ├── CourseDetail.jsx
│ │ └── ManageCourse.jsx
│ ├── context/ # React Context
│ │ └── AuthContext.jsx
│ ├── utils/ # Utility functions
│ │ └── api.js
│ └── App.jsx # Main App component
├── server/ # Backend source
│ ├── models/ # MongoDB models
│ │ ├── User.js
│ │ ├── Course.js
│ │ ├── Lecture.js
│ │ ├── Assignment.js
│ │ ├── Submission.js
│ │ ├── Message.js
│ │ └── LiveClass.js
│ ├── controllers/ # Route controllers
│ │ ├── authController.js
│ │ ├── courseController.js
│ │ ├── lectureController.js
│ │ ├── assignmentController.js
│ │ ├── adminController.js
│ │ └── liveClassController.js
│ ├── routes/ # API routes
│ │ ├── auth.js
│ │ ├── courses.js
│ │ ├── lectures.js
│ │ ├── assignments.js
│ │ ├── admin.js
│ │ └── liveClasses.js
│ ├── middleware/ # Custom middleware
│ │ ├── auth.js
│ │ └── upload.js
│ ├── config/ # Configuration
│ │ └── db.js
│ └── server.js # Express server
└── package.json
POST /api/auth/register- Register new userPOST /api/auth/login- Login userGET /api/auth/me- Get current user
GET /api/courses- Get all coursesGET /api/courses/:id- Get single coursePOST /api/courses- Create course (Instructor)PUT /api/courses/:id- Update course (Instructor)DELETE /api/courses/:id- Delete course (Instructor)POST /api/courses/:id/enroll- Enroll in course (Student)
GET /api/lectures/course/:courseId- Get course lecturesPOST /api/lectures/:courseId- Create lecture (Instructor)PUT /api/lectures/:id- Update lecture (Instructor)DELETE /api/lectures/:id- Delete lecture (Instructor)
GET /api/assignments/course/:courseId- Get course assignmentsPOST /api/assignments/:courseId- Create assignment (Instructor)POST /api/assignments/:assignmentId/submit- Submit assignment (Student)GET /api/assignments/:assignmentId/submissions- View submissions (Instructor)PUT /api/assignments/submissions/:submissionId/grade- Grade submission (Instructor)
GET /api/liveclasses/course/:courseId- Get course live classesPOST /api/liveclasses/:courseId- Schedule live class (Instructor)PUT /api/liveclasses/:id- Update live class (Instructor)DELETE /api/liveclasses/:id- Delete live class (Instructor)
GET /api/admin/users- Get all usersDELETE /api/admin/users/:id- Delete userPUT /api/admin/users/:id/role- Update user roleGET /api/admin/content- Get all contentDELETE /api/admin/content/:type/:id- Delete contentGET /api/admin/stats- Get platform statistics
npm run buildnpm run lint