A full-stack MERN web application that digitizes campus placement management. It features real-time notifications, AI-driven resume scoring, an AI mock interview bot, an automated eligibility engine, email automation, and a multi-chart analytics dashboard built on MongoDB aggregation pipelines.
| Link | |
|---|---|
| Frontend | https://student-placement-tracker-navy.vercel.app |
Dashboard Β· Students Β· Analytics Β· Profile Β· Landing Page
| Module | Description |
|---|---|
| Landing Page | Animated public page with live ticker, stat counters, company showcase, and dark/light mode |
| Dashboard | KPI cards, placement rate banner, branch-wise chart, donut chart, top companies table |
| Students | Full list with search, branch/batch/status filters, pagination, and clickable profiles |
| Companies | Card grid with package range, roles offered, eligibility criteria, and hired count |
| Placements | Offer records with automatic status updates, package highlights, and offer type badges |
| Analytics | Seven-plus charts β bar, line, doughnut, radar, and dual-axis trend visualizations |
| Eligibility Engine | Automatically filters eligible students by CGPA, backlogs, and branch when a company is added |
| AI Resume Scorer (ATS) | Upload resume and job description to receive match percentage, missing keywords, and improvement tips (Gemini AI) |
| AI Mock Interview | Company- and role-specific questions with real-time evaluation, scoring, and ideal answers |
| Real-Time Notifications | Socket.IO-powered instant alerts for drives, results, and eligibility updates |
| Email Automation | HTML emails via Nodemailer for eligibility alerts and placement congratulations |
| Profile | Student-facing tabs for academics, resume upload, ATS scoring, mock interviews, and placement status |
| Authentication | JWT login, Google OAuth, and role-based access control (Admin / Student / Viewer) |
| Dark Mode | Full dark/light theme toggle with persistence |
| Drive Calendar | Upcoming company visits with date tracking |
| Interview Experiences | Placed students share round details, questions, and tips for juniors |
| Seed Script | Generates 120 students, 12 companies, and roughly 78 placement records for demo purposes |
| Layer | Technology |
|---|---|
| Frontend | React 18, Bootstrap 5, Chart.js, Framer Motion |
| Backend | Node.js, Express.js |
| Database | MongoDB, Mongoose |
| Real-Time | Socket.IO (WebSockets) |
| AI | Google Gemini API (ATS scoring, mock interview) |
| Nodemailer, Gmail SMTP | |
| Auth | JWT, Google OAuth (Passport.js) |
| File Upload | Multer (resume PDF) |
| Charts | Chart.js / react-chartjs-2 |
| Styling | Bootstrap 5, custom CSS |
placement-tracker/
βββ backend/
β βββ models/
β β βββ User.js
β β βββ Student.js
β β βββ Company.js
β β βββ Placement.js
β βββ routes/
β β βββ auth.js
β β βββ students.js
β β βββ companies.js # Eligibility engine + email
β β βββ placements.js # Congratulations email
β β βββ eligibility.js # Eligibility check + notify
β β βββ ats.js # AI resume ATS scorer
β β βββ mockInterview.js # AI mock interview
β β βββ stats.js
β β βββ profile.js
β βββ socket/
β β βββ socketHandler.js # Socket.IO notification helper
β βββ utils/
β β βββ emailService.js # Nodemailer HTML emails
β βββ middleware/
β β βββ auth.js
β βββ seed/
β β βββ seed.js
β βββ uploads/
β βββ server.js # Express + Socket.IO setup
β
βββ client/
βββ src/
βββ pages/
β βββ LandingPage.js
β βββ Dashboard.js
β βββ Students.js
β βββ Companies.js
β βββ Placements.js
β βββ Analytics.js
β βββ Profile.js
β βββ Notifications.js
β βββ ...
βββ components/
β βββ Layout.js
β βββ ATSScorer.js
β βββ MockInterview.js
β βββ EligibilityChecker.js
β βββ NotificationBell.js
β βββ ...
βββ context/
β βββ AuthContext.js
β βββ ThemeContext.js
β βββ NotificationProvider.js
βββ socket.js
- Node.js v18+
- MongoDB (local or Atlas)
- Gmail account with an app password
- Google Gemini API key
git clone https://github.com/anoopcodehack/placement-tracker.git
cd placement-trackercd backend
npm installCreate a .env file:
PORT=5000
MONGO_URI=mongodb+srv://youruser:yourpassword@cluster0.xxxxx.mongodb.net/placement_tracker
JWT_SECRET=your_jwt_secret_here
CLIENT_URL=http://localhost:3000
NODE_ENV=development
# Email (Gmail App Password)
EMAIL_USER=your_gmail@gmail.com
EMAIL_PASS=your_16_digit_app_password
# AI
GEMINI_API_KEY=your_gemini_api_key_hereSeed demo data:
npm run seedStart the backend:
npm run devcd ../client
npm install
npm startFrontend runs at http://localhost:3000, backend at http://localhost:5000.
| Role | Password | Access | |
|---|---|---|---|
| Admin | admin@college.edu | admin123 | Full access |
| Viewer | viewer@college.edu | viewer123 | Read only |
| Student | Sign up with roll number | β | Own profile + AI tools |
POST /api/auth/register
POST /api/auth/login
GET /api/auth/me
GET /api/auth/google
GET /api/students # Filters: search, branch, batch, isPlaced, page
POST /api/students # Admin only
PUT /api/students/:id # Admin only
DELETE /api/students/:id # Admin only
GET /api/companies # Filters: search, industry
POST /api/companies # Triggers eligibility check, email, and socket notify
DELETE /api/companies/:id
GET /api/placements
POST /api/placements # Auto-updates student record + sends congratulations email
DELETE /api/placements/:id
GET /api/eligibility/:companyId # Get eligible students
POST /api/eligibility/:companyId/notify # Notify all eligible students
POST /api/eligibility/check # Check a single student
POST /api/ats # Resume ATS scorer (PDF + job description)
POST /api/mock-interview/questions # Generate five interview questions
POST /api/mock-interview/evaluate # Evaluate one answer
POST /api/mock-interview/result # Final score + improvement tips
GET /api/stats/overview
GET /api/stats/branch-wise
GET /api/stats/package-distribution
GET /api/stats/monthly-trend
GET /api/stats/company-wise
GET /api/stats/batches
| Feature | Admin | Student | Viewer |
|---|---|---|---|
| View Dashboard | Yes | Yes | Yes |
| View Analytics | Yes | Yes | Yes |
| Add/Delete Students | Yes | No | No |
| Add/Delete Companies | Yes | No | No |
| Record Placements | Yes | No | No |
| Eligibility Engine | Yes | No | No |
| AI ATS Resume Scorer | No | Yes | No |
| AI Mock Interview | No | Yes | No |
| Upload Resume | No | Yes | No |
| View Own Profile | No | Yes | Yes |
| Real-Time Notifications | Yes | Yes | No |
- Overall placement rate banner with progress bar
- Branch-wise placement bar chart
- Placed vs. unplaced doughnut chart
- Package distribution bar chart
- Monthly offer trend line chart (dual axis)
- Top companies by offers bar chart
- Average CGPA by branch radar chart
- Company-wise breakdown table with share percentage
- Export to Excel / PDF
- Student uploads a PDF resume
- Student pastes a job description
- Gemini AI analyzes both
- Returns match percentage, matched keywords, missing keywords, strengths, and improvement suggestions
- Student selects company, role, and round
- Gemini generates five real interview questions
- Student answers each question
- AI evaluates and returns a score out of 10 with an ideal answer
- Final result includes overall score and improvement tips
When an admin adds a company:
- The eligibility engine runs automatically
- Eligible students receive a real-time Socket.IO alert, a detailed HTML email, and a dashboard notification
- All other students receive a general "new company added" notification via Socket.IO
When an admin records a placement:
- The placed student receives a congratulations email automatically
| SDG | Mapping |
|---|---|
| SDG 4 β Quality Education | Improves placement transparency in institutions |
| SDG 8 β Decent Work | Connects students to employment efficiently |
| SDG 9 β Innovation | Promotes digital infrastructure in colleges |
- Placement prediction using ML scoring
- Mobile app (React Native)
- Admin bulk import via CSV
- QR-code based student check-in for drives
- Multi-college support
Anoop A β Full Stack Developer, GFG Campus Mantri, Sahyadri College
MIT License β open source and free to use.