A complete web platform for online coaching with live classes, built with React, Node.js, Express, and MongoDB.
- Hero section with call-to-action
- Programs for two age groups (10-17 and 17-22)
- Course categories (Life Coaching, Communication, Language Learning)
- Teachers showcase
- Responsive design
- Email/password registration and login
- JWT-based authentication
- Role-based access control (Admin, Teacher, Student)
- View enrolled courses
- See upcoming classes
- Join class button (only for enrolled students)
- Secure access to meeting links
- Create classes with Zoom/Google Meet links
- Schedule classes with date and time
- View enrolled students
- Manage class details
- Create and manage courses
- Assign teachers to courses
- Enroll students in courses
- View all users (teachers and students)
- Frontend: React 18, TailwindCSS, React Router, Axios
- Backend: Node.js, Express, MongoDB, Mongoose
- Authentication: JWT (JSON Web Tokens)
- Security: bcryptjs for password hashing
coaching-platform/
├── frontend/ # React application
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── context/ # Auth context
│ │ └── App.js
│ └── package.json
│
├── backend/ # Express API
│ ├── src/
│ │ ├── models/ # Mongoose models
│ │ ├── routes/ # API routes
│ │ ├── middleware/ # Auth middleware
│ │ └── server.js
│ └── package.json
│
└── README.md
- Node.js (v16 or higher)
- MongoDB (local or Atlas)
- npm or yarn
- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Create
.envfile:
cp .env.example .env- Update
.envwith your configuration:
PORT=5000
MONGODB_URI=mongodb://localhost:27017/coaching-platform
JWT_SECRET=your_super_secret_jwt_key_change_this_in_production
NODE_ENV=development
- Start the server:
npm run devBackend will run on http://localhost:5000
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Create
.envfile:
cp .env.example .env- Update
.env:
REACT_APP_API_URL=http://localhost:5000
- Start the development server:
npm startFrontend will run on http://localhost:3000
- Go to
http://localhost:3000/register - Fill in details and select "Admin" role
- Click Register
- Register another user with "Teacher" role
- Or use Admin dashboard to view teachers
- Register with "Student" role
- Select age group (10-17 or 17-22)
- Login as Admin
- Go to Admin Dashboard
- Create a course (e.g., "Life Coaching 101")
- Assign a teacher to the course
- Enroll students in the course
- Login as Teacher
- Go to Teacher Dashboard
- Click "Create Class"
- Select course, add Zoom/Meet link
- Set date and time
- View enrolled students
- Login as Student
- Go to Student Dashboard
- View enrolled courses
- See upcoming classes
- Click "Join Class" to access meeting link
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 course by IDPOST /api/courses- Create course (Admin)PUT /api/courses/:id- Update course (Admin)DELETE /api/courses/:id- Delete course (Admin)
GET /api/classes/course/:courseId- Get classes for courseGET /api/classes/student/upcoming- Get student's upcoming classesGET /api/classes/:id/join- Get meeting link (enrolled students only)GET /api/classes/teacher/my-classes- Get teacher's classesPOST /api/classes- Create class (Teacher/Admin)PUT /api/classes/:id- Update classDELETE /api/classes/:id- Delete class
GET /api/enrollments/my-courses- Get student's enrollmentsGET /api/enrollments/course/:courseId- Get enrolled studentsPOST /api/enrollments- Enroll student (Admin)DELETE /api/enrollments/:id- Remove enrollment (Admin)
GET /api/users/teachers- Get all teachersGET /api/users/students- Get all students (Admin)GET /api/users- Get all users (Admin)PUT /api/users/:id- Update user profile
- name, email, password (hashed)
- role: admin | teacher | student
- ageGroup: 10-17 | 17-22 (for students)
- bio
- title, description
- category: Life Coaching | Communication | Language Learning
- ageGroup: 10-17 | 17-22
- teacher (reference to User)
- materials (array)
- title
- course (reference to Course)
- teacher (reference to User)
- meetingLink (Zoom/Google Meet URL)
- scheduledAt (date/time)
- duration (minutes)
- status: scheduled | completed | cancelled
- student (reference to User)
- course (reference to Course)
- enrolledAt (date)
- status: active | completed | dropped
- Create account on Render
- Create new Web Service
- Connect your GitHub repository
- Configure:
- Build Command:
cd backend && npm install - Start Command:
cd backend && npm start - Add environment variables (MONGODB_URI, JWT_SECRET)
- Build Command:
- Deploy
- Create account on Vercel
- Import your GitHub repository
- Configure:
- Root Directory:
frontend - Framework Preset: Create React App
- Add environment variable:
REACT_APP_API_URL(your Render backend URL)
- Root Directory:
- Deploy
- Create account on MongoDB Atlas
- Create a cluster (free tier available)
- Create database user
- Whitelist IP addresses (0.0.0.0/0 for development)
- Get connection string
- Update MONGODB_URI in backend .env
- Passwords hashed with bcryptjs
- JWT tokens for authentication
- Role-based access control
- Meeting links only accessible to enrolled students
- Protected API routes with middleware
- Payment integration
- Zoom API integration for automatic meeting creation
- Video recording storage
- Assignment submission
- Progress tracking
- Certificates
- Email notifications
- Chat functionality
- Mobile app
For issues or questions, contact: info@coachinghub.com
Proprietary - All rights reserved