An AI-powered mentorship and career development platform connecting students with alumni mentors.
MentorNet AI bridges the gap between students and experienced alumni through real-time messaging, video calls, AI-driven career guidance, skill gap analysis, and a live network graph — all in one platform.
| Layer | Technology |
|---|---|
| Frontend | React 18 + Vite |
| Styling | Tailwind CSS + Inter font |
| Backend / DB | Supabase (PostgreSQL + Auth + Storage + Realtime) |
| AI Chatbot | Google Gemini 2.0 Flash API |
| Video Calls | WebRTC (peer-to-peer) + Supabase signaling |
| Network Graph | Custom SVG renderer |
- Student — Connect with alumni, get career advice, analyze skill gaps
- Alumni — Mentor students, accept connections, video call with admin
- Admin — Manage users, approve registrations, oversee the network
- Email/password registration with role selection (Student / Alumni / Admin)
- Admin approval workflow — new accounts require admin approval before login
- Per-tab session isolation (multiple accounts in different browser tabs)
- Profile completion with avatar upload to Supabase Storage
Student Dashboard
- Real-time stats: people available, connected count, requests sent/received
- Browse all users with Connect / Accept / Decline / Message / Profile buttons
- Quick links to AI Chatbot, Skill Gap Analysis
Alumni Dashboard
- Tabs: Connection Requests (Accept/Decline) · Connected users (Message/Remove)
- Find People page — discover unconnected users and send requests
- Video Call access with connected alumni/admin
Admin Dashboard
- Platform stats: total users, students, alumni, pending approvals
- User Management: approve/reject registrations, delete users
- Connection requests panel with Accept/Decline
- Quick links: Video Calls, Network Graph
- Send / cancel / accept / decline connection requests
- Remove existing connections
- Connections required before messaging or video calling
- Real-time request notifications (polling + Supabase Realtime)
- Online status indicator (green dot = active within last 5 minutes)
- WhatsApp-style real-time chat between connected users
- Emoji picker, multi-line input, read receipts (double tick)
- Message delivery only between accepted connections
- Conversation list with last message preview and timestamps
- View Profile button in chat header
- WebRTC peer-to-peer video — no server cost
- Camera preview before calling
- Mic toggle, camera toggle, screen share, end call
- Incoming call notification banner (works on any page)
- Call duration timer
- Only available between connected alumni/admin users
- Powered by Google Gemini 2.0 Flash
- Loaded with the student's full profile + all alumni network data
- Personalized advice: compares student profile with alumni career paths
- Recommends specific alumni by name
- Handles conversational replies (yes/no, greetings) naturally
- Fallback responses when API key is not configured
- Extracts skills from all profile fields (bio, department, degree, position, company)
- Compares student skills against all alumni or filtered by career path
- Shows missing skills with progress bars sorted by alumni frequency
- Click any alumni for a direct 1-on-1 comparison
- Learning resource links for key skills (Python, React, SQL, etc.)
- Side-by-side profile comparison: university, CGPA, degree, graduation year
- Interactive SVG graph of all users and their connections
- Drag nodes, scroll to zoom, click to pan
- Color-coded by role: red = admin, orange = alumni, blue = student
- Click a node to see their profile and all connections in a side panel
- Filter by role, refresh button
- "View Full Profile" link from the panel
- Avatar upload (Supabase Storage)
- Fields: full name, bio, date of birth, phone, university, department, degree, graduation year, CGPA, company, position, LinkedIn, GitHub
- Public profile view (
/user/:id) — visible to all users - Online status shown on profile page
- Connection actions (Connect / Accept / Message) directly from profile
- Students: shows only unconnected users (to discover new people)
- Alumni: shows unconnected users with Connect button
- Role filter (All / Student / Alumni / Admin)
- Search by name, company, or university
- Online status dot on every card
Run these SQL files in your Supabase SQL Editor in order:
1. users-rls-policy.sql — RLS policies for the users table
2. chat-schema.sql — conversations + chat_messages tables
3. connections-schema.sql — connections table
4. videocall-schema.sql — video_calls + video_ice_candidates tables
5. add-profile-fields.sql — date_of_birth, phone_number columns
6. add-profile-fields-2.sql — linkedin_url, github_url, cgpa, department, degree
7. add-last-seen.sql — last_seen timestamp for online status
8. create-storage-bucket.sql — avatars storage bucket + policies
9. fix-alumni-roles.sql — fix null roles for existing users
Create a .env file in the project root:
VITE_GEMINI_API_KEY=your_gemini_api_key_hereGet a free Gemini API key at aistudio.google.com.
The Supabase URL and anon key are already configured in src/lib/supabase.js.
# Install dependencies
npm install
# Start development server
npm run dev
# Build for production
npm run buildThe app runs at http://localhost:5173 by default.
To share on your local network: http://<your-ip>:5173
src/
├── App.jsx # Root router + AdminApp + AdminSidebar
├── apps/
│ ├── alumni/ # Alumni portal (AlumniApp + AlumniDashboard)
│ └── student/ # Student portal (StudentApp + StudentDashboard)
├── components/
│ └── ProtectedRoute.jsx
├── contexts/
│ └── AuthContext.jsx # Auth state, profile loading, session management
├── lib/
│ └── supabase.js # Supabase client + dbHelpers
├── pages/
│ ├── AIChatbot.jsx # Gemini-powered career advisor
│ ├── Chat.jsx # Real-time messaging
│ ├── Dashboard.jsx # Admin dashboard
│ ├── FindPeople.jsx # Discover new connections
│ ├── Login.jsx / Register.jsx
│ ├── NetworkGraph.jsx # Interactive SVG network
│ ├── Profile.jsx # Edit own profile
│ ├── SkillGap.jsx # Skill gap analysis
│ ├── UserProfile.jsx # View any user's profile
│ └── VideoCall.jsx # WebRTC video calls
└── shared/
├── components/SharedSidebar.jsx
└── lib/onlineStatus.js # isOnline() helper
Email: admin@gmail.com
Password: (set during Supabase Auth setup)
MIT — free to use and modify.