MaVi Linking is a next-generation, AI-Powered Developer Intelligence Platform. It aggregates your developer footprint across multiple coding platforms (GitHub, LeetCode, Codeforces), leverages AI (Gemini / OpenAI) to generate deep technical insights, and produces a personalized "Developer DNA" profile with comparative global rankings β all in one sleek, glassmorphic dashboard.
Built for Students, Recruiters, and Educators alike, MaVi Linking provides role-specific dashboards so every stakeholder gets exactly the intelligence they need.
- Uses Google Gemini / OpenAI LLMs to analyze problem-solving patterns, coding consistency, and technical stack depth.
- Generates a unique Developer DNA profile and dimensioned performance scores (Development, Problem Solving, Knowledge).
- GitHub β Public repositories, language breakdown, contribution activity, and star counts.
- LeetCode β Contest ratings, problem breakdown (Easy / Medium / Hard), badges, recent submissions, and AI-driven insights via the Alfa API.
- Codeforces & StackOverflow β Platform slots ready for linking and data sync.
| Role | Dashboard Highlights |
|---|---|
| Student / User | Personal analytics, account linking, AI insights, project portfolio, compatibility checker |
| Recruiter | Talent search & filtering, candidate comparison, bookmarking, AI-verified technical profiles |
| Teacher / Educator | Student roster management, industry-readiness reports, department leaderboards |
- Computes an overall score from Development, Problem Solving, and Knowledge metrics.
- Places users in tiers β Bronze β Silver β Gold β Platinum β Elite Developer.
- Global and department-scoped leaderboards.
- Modern glassmorphic UI with Recharts β Problem Breakdown charts, Growth timelines, Skill Radars, and Activity Feeds.
- Smooth Framer Motion animations throughout.
- Share your aggregated developer profile via a public
/u/:usernamelink. - Auto-generated QR codes for embedding on resumes and portfolios.
- SEO / OpenGraph metadata endpoint for rich link previews.
- Upgraded Picker β Search developers by name/username via a debounced, autocomplete dropdown showing avatars, university, and performance scores.
- Matches students with projects, teams, or roles using an AI-analyzed multi-dimensional compatibility engine (skills, coding behavior, personality, work styles).
- Placement Tracking β Tracks candidate placement lifecycle (Available for Hiring, Under Review, Interview Scheduled, Offer Received, Offer Accepted, Placed / Hired).
- Transparency-First Search β Placed candidates remain discoverable in recruiter searches but display clear badge indications (e.g.
Placed @ Company). - Recruiter Kanban Pipeline β Visual board for recruiters to manage applicants, schedule interviews (online/offline/hybrid), offer details (CTC, joining date), and handle workflow transitions.
- Availability Toggles β Granular student settings (e.g., Open to Opportunities, Internship vs Full-Time, Hide Profile).
- Dynamic Alerts β Real-time in-app notifications (via Socket.io and DB storage) for students regarding interview scheduling, pipeline starts, and offer releases.
- Portal-based navigation header dropdown with unread badges, individual, and batch read actions.
- Overlay Stacking / Z-Index Fix β Fixed the notification center dropdown painting behind active dashboard elements due to layout stacking contexts. Re-implemented the overlay using
ReactDOM.createPortaltargetingdocument.body. - Compatibility Upsert Query Inference β Fixed a MongoDB driver crash (
path 'userIds' is matched twice) when generating team compatibility records with array filter query operators. Resolved by decoupling check and write operations into explicitfindOneand write calls.
| Category | Technology |
|---|---|
| Core | React 19 (Vite 8) |
| Routing | React Router DOM v7 |
| State | React Context API |
| Styling | Vanilla CSS (glassmorphic design system) |
| Animations | Framer Motion |
| Charts | Recharts |
| Icons | Lucide React |
| HTTP | Axios |
| Real-Time | Socket.IO Client |
| Utilities | clsx |
| Category | Technology |
|---|---|
| Core | Node.js & Express.js |
| Database | MongoDB & Mongoose |
| Auth | JWT (jsonwebtoken) & bcryptjs |
| Validation | express-validator |
| Security | Helmet, CORS, express-rate-limit |
| AI | @google/generative-ai (Gemini) & openai |
| Caching | node-cache |
| Real-Time | Socket.IO |
| PDFKit | |
| QR | qrcode |
| Logging | Morgan |
| Dev | Nodemon |
- Node.js v16 or higher
- MongoDB (local instance or MongoDB Atlas)
- AI API Key β Google Gemini API Key and/or OpenAI API Key
git clone https://github.com/Mayur51015/Mavi-Linking.git
cd Mavi-Linkingcd server
npm installCreate a .env file in the server/ directory:
PORT=5000
NODE_ENV=development
MONGODB_URI=your_mongodb_connection_string
JWT_SECRET=your_super_secret_jwt_key
CLIENT_URL=http://localhost:5173
# AI APIs (provide at least one)
GEMINI_API_KEY=your_gemini_api_key
OPENAI_API_KEY=your_openai_api_keyStart the backend:
npm run devOpen a new terminal:
cd client
npm installCreate a .env file in the client/ directory (optional β defaults to localhost):
VITE_API_URL=http://localhost:5000/apiStart the frontend:
npm run devThe app will be available at http://localhost:5173.
| Variable | Description |
|---|---|
PORT |
API port (default: 5000) |
NODE_ENV |
development or production |
MONGODB_URI |
MongoDB connection string |
JWT_SECRET |
Secret key for signing JWTs |
CLIENT_URL |
Frontend URL for CORS (e.g. http://localhost:5173) |
GEMINI_API_KEY |
Google Gemini API key |
OPENAI_API_KEY |
OpenAI API key (fallback) |
| Variable | Description |
|---|---|
VITE_API_URL |
Backend API base URL |
The backend exposes a modular REST API with role-based access control:
| Prefix | Description | Auth |
|---|---|---|
/api/auth |
Registration, login, profile updates, /me |
Public / JWT |
/api/platforms |
GitHub account linking & data sync | JWT |
/api/leetcode |
LeetCode analytics sync & retrieval | JWT |
/api/scores |
Ranking, gamification scores, leaderboard | JWT |
/api/projects |
Portfolio project CRUD | JWT |
/api/portfolio |
Public portfolio data | Public |
/api/ai |
AI insight generation (Developer DNA) | JWT |
/api/recruiter |
Talent search, bookmarks, candidate analytics | JWT (Recruiter) |
/api/teacher |
Student management, readiness reports | JWT (Teacher) |
/api/education |
University & department data | JWT |
/api/compatibility |
Skill-based compatibility matching | JWT |
/api/verification |
Platform verification tokens | JWT |
/api/public/u/:username |
Public profile aggregation | Public |
/api/public/qr/:username |
QR code generation | Public |
/api/public/meta/:username |
SEO / OpenGraph metadata | Public |
/api/health |
API health check | Public |
Mavi-Linking/
βββ client/ # React Frontend (Vite)
β βββ src/
β β βββ api/ # Axios instance & interceptors
β β βββ assets/ # Static assets (logos, images)
β β βββ components/ # Reusable UI widgets
β β β βββ leetcode/ # ββ LeetCode-specific components
β β β βββ DNACard.jsx # ββ Developer DNA display
β β β βββ SkillRadar.jsx # ββ Radar chart component
β β β βββ GrowthChart.jsx # ββ Growth timeline
β β β βββ LeaderboardWidget.jsx
β β β βββ QRModal.jsx # ββ QR code modal
β β β βββ ReportGenerator.jsx
β β βββ context/ # React Context (AuthContext)
β β βββ layouts/ # Role-specific shell layouts
β β β βββ UserLayout.jsx
β β β βββ RecruiterLayout.jsx
β β β βββ TeacherLayout.jsx
β β βββ pages/ # Full-page views
β β β βββ recruiter/ # ββ Recruiter dashboard pages
β β β βββ teacher/ # ββ Teacher dashboard pages
β β β βββ Dashboard.jsx # ββ Student dashboard
β β β βββ Home.jsx # ββ Landing page
β β β βββ Login.jsx
β β β βββ Register.jsx
β β β βββ PublicIdentity.jsx
β β β βββ ...
β β βββ routes/ # ProtectedRoute (role-aware)
β β βββ App.jsx # Top-level routing
β β βββ index.css # Global design system
β β βββ main.jsx # Vite entry point
β βββ package.json
β
βββ server/ # Node/Express Backend
β βββ src/
β β βββ config/ # DB connection & Socket.IO setup
β β βββ controllers/ # Route handlers
β β β βββ authController.js
β β β βββ aiController.js
β β β βββ leetcodeController.js
β β β βββ recruiterController.js
β β β βββ teacherController.js
β β β βββ scoreController.js
β β β βββ compatibilityController.js
β β β βββ ...
β β βββ middleware/ # Auth, role-guard, validation, error handling
β β β βββ auth.js
β β β βββ roleMiddleware.js
β β β βββ validate.js
β β β βββ errorHandler.js
β β βββ models/ # Mongoose schemas
β β β βββ User.js # ββ Multi-role user model
β β β βββ DNA.js
β β β βββ LeetCodeAnalytics.js
β β β βββ Ranking.js
β β β βββ Project.js
β β β βββ Compatibility.js
β β β βββ ...
β β βββ routes/ # Express route definitions
β β βββ services/ # Business logic & external API integrations
β β β βββ aiAnalyzer.js
β β β βββ leetcodeService.js
β β β βββ recruiterService.js
β β β βββ teacherService.js
β β β βββ compatibilityService.js
β β β βββ ...
β β βββ server.js # Express app entry point
β βββ package.json
β
βββ README.md
βββ TODO.md
- Ensure your MongoDB Atlas cluster allows external connections (
0.0.0.0/0). - Push the
server/code and link it to your hosting provider. - Add all production environment variables from
.env. - Set the Start Command to
npm start(runsnode src/server.js).
- Link your frontend repo to Vercel or Netlify.
- Set Build Command to
npm run buildand Output Directory todist. - Add
VITE_API_URLpointing to your deployed backend (e.g.https://your-api.onrender.com/api). - Deploy!
We welcome contributions!
Please read our Contributing Guide before claiming an issue.
Issue assignment is generally first-come, first-served. Please wait for maintainer confirmation before starting work.
Contributions, issues, and feature requests are welcome!
Feel free to check the issues page.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the ISC License.