A full-stack MERN (MongoDB, Express, React, Node.js) application for managing online courses with role-based dashboards for Admins, Instructors, and Students.
- Overview
- Tech Stack
- Features
- Security Features
- Screenshots
- Installation & Setup
- Dependency Management
- Author
- License
LearnIt is an e-learning platform that allows:
- Admins to manage courses, users, and instructors.
- Instructors to create and manage their own courses.
- Students to register, enroll in courses, and watch course content with a built-in video player.
- Frontend: React, React Router, Axios, CSS, TailwindCSS, Bootstrap, Formspree
- Backend: Node.js, Express.js
- Database: MongoDB (Mongoose ODM)
- Authentication: JWT (JSON Web Tokens)
- Other Tools: dotenv, bcrypt, express-rate-limit, multer, morgan
- Role-based dashboards (Admin / Instructor / Student)
- User authentication (Login / Register)
- Course management (create, update, delete, enroll)
- Video player integration for lessons
- Admin dashboard for managing instructors and settings
- Contact and Careers forms powered by Formspree
- JWT Authentication → Secures routes & user sessions.
- Rate Limiting → Protects APIs from brute-force attacks.
- Environment Variables → Sensitive data stored in
.env. - Role-based Access Control → Separate dashboards & permissions.
- Secure File Uploads → Organized uploads folder for course files/images.
| Dashboard | Screenshot |
|---|---|
| Admin Dashboard | |
| Instructor Dashboard | |
| Student Dashboard | |
| Landing Page |
git clone https://github.com/avatarparzival/learnit.git
cd learnitcd server
npm installcd ../client
npm installMONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret
PORT=5000REACT_APP_API_BASE_URL=http://localhost:5000
REACT_APP_FORMSPREE_CAREERS=your_formspree_careers_form_id
REACT_APP_FORMSPREE_CONTACT=your_formspree_contact_form_idREACT_APP_API_BASE_URL→ points to your backend API (local or production).REACT_APP_FORMSPREE_CAREERS→ Formspree endpoint for job applications / career form.REACT_APP_FORMSPREE_CONTACT→ Formspree endpoint for the general contact form.
🔗 Get these values from your Formspree dashboard after creating forms.
Make sure MongoDB is installed and running.
On most systems:
mongodOr if using MongoDB Compass/Atlas, ensure the cluster/connection is live.
Open two terminals:
cd server
npm startcd client
npm startNow visit 👉 http://localhost:3000
- Dependencies are split into server/ and client/.
- Always run
npm installseparately in both folders. package.jsonuses^version ranges, so newer minor/patch updates will install automatically.- If you want to lock exact versions for reproducibility, run
npm install <package>@<version> --saveto updatepackage.json.
Your Name
📧 abdullah69zubair@gmail.com
🔗 GitHub
This project is licensed under the MIT License — see the LICENSE file for details.