A 1-on-1 Mentorship & Advisory Platform connecting aspiring software engineers, students, and professionals with verified senior industry mentors for personalized guidance across frontend, backend, AI/ML, system design, and competitive programming.
π Live Client: https://mentor-space-phi.vercel.app
π‘ Live Backend API: https://mentorspace-backend-p9t8.onrender.com
MentorSpace solves the guidance gap in tech education by providing a structured, secure, and frictionless marketplace for booking 1-on-1 mentorship sessions.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β React 18 Single Page App β
β (Vite + Tailwind CSS + Lucide Icons + Axios) β
βββββββββββββββββ¬ββββββββββββββββββββββββββββ²ββββββββββββββββ
β HTTP Requests (REST) β JSON Responses
βΌ β
βββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
β Express.js REST API Server β
β βββ JWT Authentication & Role Guards (Student/Mentor) β
β βββ Express Rate Limiting & Security Middlewares β
β βββ Razorpay SDK & HMAC-SHA256 Signature Verification β
β βββ Mongoose ORM Layer β
βββββββββββββββββ¬ββββββββββββββββββββββββββββ²ββββββββββββββββ
β Queries & Updates β Documents
βΌ β
βββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββββββ
β MongoDB Database β
β (Users, Mentors, Students, Appointments, Payments) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Domain-Based Mentor Discovery: Filter mentors across 10+ core tech specializations (React, Node.js, Python, Java, AI/ML, System Design, DevOps, Cloud Architecture, etc.).
- Rich Mentor Profiles: View verified experience, industry background, pricing rates, bio, rating metrics, and scheduled availability.
- Interactive Slot Booking: Visual calendar picker for selecting available date and time slots with session objective notes.
- Razorpay Checkout: Secure in-app checkout with automated order generation and cryptographically verified payment receipts.
- Student Dashboard: Manage upcoming and past appointments, access meeting links, and track booking statuses.
- Mentor Console: Dedicated dashboard to view incoming session requests with status transitions (
PendingβAccepted/Completed/Rejected). - Availability Management: Toggle active status, configure weekly availability slots, and set custom pricing.
- Earnings & Analytics: Track completed sessions, student feedback, and revenue metrics.
The database is structured into 5 core collections with relational references:
βββββββββββββββββββ 1:1 ββββββββββββββββββββ
β User βββββββββββββββββββ€ Mentor/Student β
β (Auth & Role) β β (Role Profiles) β
ββββββββββ¬βββββββββ ββββββββββ¬ββββββββββ
β β
β 1:N β 1:N
ββββββββββΌβββββββββ ββββββββββΌββββββββββ
β Appointment βββββββββββββββββββ€ Payment β
β(Booking Status) β β(Razorpay Orders) β
βββββββββββββββββββ ββββββββββββββββββββ
- User (
userModel.js): Base credentials, email, hashed password (bcrypt), role (student|mentor), and profile avatar. - Mentor (
mentorModel.js): ReferencesUser, includes bio, company, experience years, domain tags, hourly rate, availability slots, and ratings. - Student (
studentModel.js): ReferencesUser, educational details, career goals, and enrolled appointment IDs. - Appointment (
appointmentModel.js): Tracks session lifecycle between a student and mentor (status: PENDING | ACCEPTED | COMPLETED | CANCELLED), date, timeSlot, session notes, and meeting link. - Payment (
paymentModel.js): Records RazorpayorderId,paymentId, signature hash, amount (INR), currency, and status (created | captured | failed).
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/auth/register |
Register new student or mentor | No |
POST |
/api/auth/login |
Authenticate user & issue JWT token | No |
GET |
/api/auth/me |
Fetch authenticated user profile | Yes (JWT) |
GET |
/api/user |
Fetch basic user details | Yes (JWT) |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
GET |
/api/mentor/all |
List all active mentors with filters | No |
GET |
/api/mentor/:id |
Get detailed mentor profile & slots | No |
PUT |
/api/mentor/profile |
Update mentor bio, pricing, and domains | Yes (Mentor) |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/appointment/book |
Book a new mentorship session | Yes (Student) |
GET |
/api/appointment/student |
Get logged-in student's bookings | Yes (Student) |
GET |
/api/appointment/mentor |
Get incoming bookings for mentor | Yes (Mentor) |
PATCH |
/api/appointment/:id/status |
Accept, reject, or complete session | Yes (Mentor/Student) |
| Method | Endpoint | Description | Auth Required |
|---|---|---|---|
POST |
/api/payment/create-order |
Initialize Razorpay payment order | Yes (Student) |
POST |
/api/payment/verify |
Verify HMAC-SHA256 payment signature | Yes (Student) |
- Frontend:
- React 18 / React 19 (Hooks, Suspense, Lazy Routing)
- Vite (Fast HMR & Optimized Bundling)
- React Router v7 (Client-side routing with role-based
ProtectedRoutewrappers) - Tailwind CSS (Modern responsive design system)
- Lucide React (Clean iconography)
- Axios (Centralized API client with JWT bearer interceptor)
- Backend:
- Node.js (ES Modules syntax)
- Express.js (Modular route controllers & middleware architecture)
- MongoDB & Mongoose (Schema validation, indexes, and document relations)
- JSON Web Tokens (
jsonwebtoken) &bcryptpassword hashing - Razorpay Node SDK & Node
cryptofor cryptographic verification express-rate-limitfor DDoS & brute-force mitigation
- Node.js:
v20.20.2(usenvm use 20.20.2) - MongoDB: Running locally on
mongodb://127.0.0.1:27017or MongoDB Atlas URI
Root / Server (.env):
PORT=5001
MONGO_URL=mongodb://127.0.0.1:27017/mentorspace
JWT_SECRET=your_jwt_secret_here
RAZORPAY_KEY_ID=your_razorpay_key_id
RAZORPAY_KEY_SECRET=your_razorpay_key_secret
RATE_LIMIT_ENABLED=true
RATE_LIMIT_LOGIN=100:15
RATE_LIMIT_REGISTER=100:15
RATE_LIMIT_PAYMENT=100:15Client (client/vite.config.js or client/.env):
VITE_API_URL=http://localhost:5001/api
VITE_RAZORPAY_KEY_ID=your_razorpay_key_idcd server
npm install
npm run seed # Seeds 8 curated mentors across tech domains & students
npm start # Starts server on http://localhost:5001cd client
npm install
npm run dev # Starts client on http://localhost:5173 (or 5174)All seeded test accounts use the universal password: Admin123@
| Role | Domain / Company | |
|---|---|---|
| Mentor | sarahchen@mentorspace.com |
React β Senior Frontend Engineer at Meta |
| Mentor | michaelchang@mentorspace.com |
Node.js β Backend System Architect at Stripe |
| Mentor | davidmiller@mentorspace.com |
Java β Principal Software Engineer at Oracle |
| Mentor | elenarostova@mentorspace.com |
Python β Full Stack Python Lead at Spotify |
| Mentor | drandrewkim@mentorspace.com |
Machine Learning β Staff AI Researcher at Google DeepMind |
| Mentor | jameswilson@mentorspace.com |
DevOps β Senior DevOps Engineer at Amazon AWS |
| Mentor | emmawatson@mentorspace.com |
UI/UX β Lead Product Designer at Airbnb |
| Mentor | priyasharma@mentorspace.com |
Data Structures β Staff Software Engineer at Microsoft |
| Student | rahul@student.com |
CS Student exploring Full-Stack Careers |
| Student | ananya@student.com |
Final year student preparing for System Design |
| Student | karan@student.com |
Self-taught developer focusing on Web Dev |
Distributed under the ISC License. Designed and developed by Sasank Reddy.