A full-stack Learning Management System (LMS) built with modern technologies, enabling seamless online education experiences for students, instructors, and administrators.
- Browse and enroll in courses
- Watch video content and track progress
- Real-time chat with instructors
- Secure payment processing via Stripe
- Progress tracking and course completion certificates
- Create and manage courses
- Upload video content via Cloudinary
- Monitor student enrollment and progress
- Real-time chat with students
- Revenue and analytics dashboard
- User management (students/instructors)
- Course approval and moderation
- Platform analytics and reporting
- Content moderation tools
| Technology | Purpose |
|---|---|
| React 18 | UI Library |
| Vite | Build Tool |
| TypeScript | Type Safety |
| Tailwind CSS | Styling |
| Redux Toolkit | State Management |
| React Router DOM | Routing |
| Radix UI | Accessible Components |
| Chart.js | Data Visualization |
| Socket.io Client | Real-time Communication |
| Technology | Purpose |
|---|---|
| Node.js | Runtime Environment |
| Express.js | Web Framework |
| TypeScript | Type Safety |
| MongoDB | Database |
| Mongoose | ODM |
| Passport.js | Authentication |
| JWT | Token-based Auth |
| Socket.io | Real-time Features |
| Stripe | Payment Processing |
| Cloudinary | Media Storage |
| Nodemailer | Email Service |
KnowMore/
βββ backend/
β βββ src/
β βββ application/ # Use cases and business logic
β βββ domain/ # Entities and interfaces
β βββ infrastructure/ # Database, external services
β βββ interfaces/ # Controllers, routes, middleware
β βββ main/ # Application entry point
β βββ types/ # TypeScript type definitions
β βββ utils/ # Utility functions
β
βββ frontend/
β βββ src/
β βββ api/ # API service calls
β βββ app/ # Redux store configuration
β βββ assets/ # Static assets (images, icons)
β βββ axios/ # Axios instance configuration
β βββ components/ # Reusable UI components
β βββ config/ # Application configuration
β βββ features/ # Redux slices
β βββ hooks/ # Custom React hooks
β βββ lib/ # Third-party library configs
β βββ pages/ # Page components
β β βββ admin/ # Admin dashboard pages
β β βββ instructor/ # Instructor dashboard pages
β β βββ students/ # Student-facing pages
β βββ types/ # TypeScript interfaces
β βββ utils/ # Utility functions
β
βββ package.json
- Node.js (v18 or higher)
- npm or yarn
- MongoDB (local or Atlas)
- Stripe Account (for payments)
- Cloudinary Account (for media storage)
- Google Cloud Console (for OAuth)
-
Clone the repository
git clone https://github.com/NRnishad/KnowMore.git cd KnowMore -
Install dependencies
# Install root dependencies npm install # Install backend dependencies cd backend npm install # Install frontend dependencies cd ../frontend npm install
-
Environment Setup
Create
.envfiles in bothbackend/andfrontend/directories:Backend
.env:# App Configuration NODE_ENV=development PORT=5001 # CORS Configuration CLIENT_URL='http://localhost:5173' # MongoDB Configuration MONGO_URI='your_mongodb_connection_string' # JWT Configuration ACCESS_TOKEN_SECRET=your_access_token_secret REFRESH_TOKEN_SECRET=your_refresh_token_secret ACCESS_TOKEN_EXPIRE=1d REFRESH_TOKEN_EXPIRE=7d # Google OAuth Configuration GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret GOOGLE_CALLBACK_URL=http://localhost:5001/auth/google/callback # Email Configuration EMAIL_USER=your_email@gmail.com EMAIL_PASS=your_app_password # Session Configuration SESSION_SECRET=your_session_secret # Cloudinary Configuration CLOUDINARY_CLOUD_NAME=your_cloud_name CLOUDINARY_API_KEY=your_api_key CLOUDINARY_API_SECRET=your_api_secret # Stripe Configuration STRIPE_SECRET_KEY=your_stripe_secret_key STRIPE_PUBLIC_KEY=your_stripe_public_key STRIPE_WEBHOOK_SECRET=your_webhook_secret
Frontend
.env:VITE_API_URL=http://localhost:5001 VITE_GOOGLE_CLIENT_ID=your_google_client_id VITE_STRIPE_PUBLIC_KEY=your_stripe_public_key
-
Run the application
# Start backend (from backend directory) npm run dev # Start frontend (from frontend directory) npm run dev
-
Access the application
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:5001
- Frontend:
| Route | Description |
|---|---|
/auth/* |
Authentication endpoints |
/admin/* |
Admin management endpoints |
/instructor/* |
Instructor operations |
/student/* |
Student operations |
/chat/* |
Real-time chat endpoints |
/webhook |
Stripe webhook handler |
The application supports multiple authentication methods:
- Email/Password - Traditional signup and login
- Google OAuth 2.0 - Sign in with Google
- JWT Tokens - Access and refresh token mechanism
- Email Verification - OTP-based account verification
Secure payment processing is handled through Stripe:
- Credit/Debit card payments
- Webhook integration for payment verification
- Refund handling
- Subscription support (if applicable)
npm run dev # Start development server with hot reload
npm run build # Compile TypeScript to JavaScript
npm test # Run testsnpm run dev # Start Vite development server
npm run build # Build for production
npm run lint # Run ESLint
npm run preview # Preview production build- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the ISC License.
Nishad N
- GitHub: @nrnishad
- Email: nrnishad106@gmail.com
Made with β€οΈ by Nishad