Mentorly is a full-stack AI-powered mentoring platform built on a barter-based learning ecosystem, where users can both teach and learn through structured 1:1 sessions. The platform supports unified role switching, AI-driven mentor discovery, real-time video call, and a gamified badge system to encourage active participation.
- Features
- Tech Stack
- Prerequisites
- Installation
- Configuration
- Usage
- Project Structure
- Queue & Badge Processing
- Contributing
- Contact
-
π Unified Role Switching
IUsers can seamlessly switch between Mentor and Learner roles without creating separate accounts. -
π€ Barter-Based Learning Ecosystem
Teach a skill to earn learning credits and use them to book sessions with other mentors. -
π§ AI-Driven Mentor Discovery
Intelligent mentor recommendations powered by AI based on:- Skills
- Learning goals
- Experience level
- Session feedback
-
π 1:1 Session Management
- Book mentoring sessions
- Accept/Reject requests
- Track session history
- Leave structured feedback
-
π Gamified Badge System
Achievement badges awarded based on:- Completed sessions
- Positive feedback
- Community participation
-
π¬ Real-Time Communication
Live chat between mentors and learners for seamless coordination. -
π Admin Dashboard
- Manage users
- Monitor sessions
- View engagement metrics
- Moderate platform activity
-
π Advanced Search
Search mentors by:- Skill
- Rating
- Experience
- Availability
- React.js
- Redux Toolkit / Zustand
- Tailwind CSS
- ShadCN UI
- Node.js
- Express.js
- REST APIs
- MongoDB (Mongoose)
- Google Gemini AI (mentor discovery & recommendations)
- Socket.IO
- BullMQ
- Redis (Badge processing & async tasks)
- Docker
- Docker Compose
- Render / Vercel
The platform follows a modular MVC architecture:
- Controllers β Handle API requests
- Services β Business logic & AI integrations
- Models β MongoDB schemas
- Routes β API endpoints
- Middleware β Auth & error handling
- Queue Workers β Badge processing & async tasks
- Node.js (v16 or higher)
- npm or yarn
- MongoDB (local or cloud)
- Openrouter API key
git clone https://github.com/viv756/mentorly.git
cd mentorly
cd server
npm install
cd client
npm install
Create a .env file in both backend and frontend directories.
PORT=8000
NODE_ENV=development
MONGO_URI=your_mongodb_url
JWT_ACCESS_SECRET=secret
JWT_REFRESH_SECRET=secret
FRONTEND_ORIGIN=http://localhost:5173
OPEN_ROUTER_API_KEY=openrouterkey
CLOUDINARY_CLOUD_NAME=cloudinary_name
CLOUDINARY_API_KEY=cloudinary_api_key
CLOUDINARY_API_SECRET=cloudinary_api_secret
AGORA_APP_ID=agora_app_id
AGORA_APP_CERTIFICATE=agora_app_certificate
REDIS_URL=redis_url
VITE_API_BASE_URL=http://localhost:8000
npm run dev
npm run dev
Mentorly supports Dockerized development and deployment, making setup consistent and environment-independent.
- Docker
- Docker Compose
docker-compose up --buildThis will start:
- Frontend (React)
- Backend (Node.js / Express)
- MongoDB
docker-compose down
| Service | Description | Port |
| -------- | ------------------------ | ----- |
| frontend | React Application | 5173 |
| backend | Express API | 8000 |
| mongodb | MongoDB Database | 27017 |
| redis | Redis (BullMQ Queue) | 6379 |
mentorly/
βββ backend/
β βββ controllers/ # API controllers
β βββ routes/ # Route definitions
β βββ models/ # Mongoose schemas
β βββ services/ # Business logic & AI logic
β βββ middleware/ # Auth & error handling
β βββ queues/ # BullMQ queue definitions
β βββ workers/ # Queue workers (badge processing)
β βββ server.js # Entry point
β
βββ frontend/
β βββ components/ # Reusable UI components
β βββ pages/ # Route-level components
β βββ store/ # State management
β βββ hooks/ # Custom hooks
β βββ main.jsx # Entry point
β
βββ docker-compose.yml
βββ .env.example
βββ README.md
π Queue & Badge Processing
- The platform uses BullMQ + Redis for asynchronous badge processing:
- When a session is completed:
- A job is added to the queue
- Worker processes achievements
- Badge is awarded if criteria is met
- User is notified in real-time
- This ensures:
- Non-blocking API responses
- Scalable background processing
- Clean separation of concerns
- Fork the project
- Create your feature branch
git checkout -b feature/AmazingFeature
- Commit your changes
git commit -m "Add AmazingFeature"
- Push to the branch
git push origin feature/AmazingFeature
- Open a Pull Request
Vivek
GitHub: https://github.com/viv756
Project Live Link: π https://mentorly-u5qn.onrender.com/