A full-stack MERN web application for digitizing and managing college campus placements โ built with MongoDB, Express.js, React.js, Node.js and Bootstrap 5.
| Link | |
|---|---|
| ๐ Frontend | [https://student-placement-tracker-navy.vercel.app/] |
Dashboard ยท Students ยท Analytics ยท Profile
| Module | What it does |
|---|---|
| ๐ Dashboard | KPI cards, placement rate banner, branch-wise chart, donut chart, top companies table |
| ๐ฅ Students | Full list with search, branch / batch / status filters, pagination, clickable profiles |
| ๐ข Companies | Card grid with package range, roles offered, eligibility criteria, hired count |
| ๐ Placements | Offer records with auto status update, package highlights, offer type badges |
| ๐ Analytics | 7+ charts โ bar, line, doughnut, radar, dual-axis trend, company breakdown |
| ๐ค Profile | Student tabs โ Academic, Resume upload, Placement status, Change password |
| ๐ Auth | JWT login, Google OAuth, role-based access (Admin / Student / Viewer) |
| ๐ Dark Mode | Full dark / light mode toggle with localStorage persistence |
| ๐ฑ Seed Script | 120 students, 12 companies, ~78 placement records auto-generated |
| Layer | Technology |
|---|---|
| Frontend | React 18, Bootstrap 5, Chart.js, react-chartjs-2 |
| Backend | Node.js, Express.js |
| Database | MongoDB + Mongoose |
| Auth | JWT (JSON Web Tokens) + Google OAuth (Passport.js) |
| File Upload | Multer (Resume PDF upload) |
| Charts | Chart.js / react-chartjs-2 |
| Styling | Bootstrap 5 + Custom CSS |
placement-tracker/
โโโ server/ โ Express + MongoDB backend
โ โโโ models/ โ Mongoose schemas
โ โ โโโ User.js
โ โ โโโ Student.js
โ โ โโโ Company.js
โ โ โโโ Placement.js
โ โโโ routes/ โ REST API routes
โ โ โโโ auth.js
โ โ โโโ students.js
โ โ โโโ companies.js
โ โ โโโ placements.js
โ โ โโโ stats.js
โ โ โโโ profile.js
โ โโโ middleware/
โ โ โโโ auth.js โ JWT middleware
โ โโโ seed/
โ โ โโโ seed.js โ Demo data seeder
โ โโโ uploads/ โ Resume PDF storage
โ โโโ index.js โ Entry point
โ
โโโ client/ โ React frontend
โโโ src/
โโโ pages/ โ Dashboard, Students, Companies,
โ Placements, Analytics, Profile
โโโ components/ โ Layout, Sidebar, Modals
โโโ context/ โ AuthContext, ThemeContext
- Node.js v16+
- MongoDB running locally OR MongoDB Atlas URI
git clone https://github.com/YOUR_USERNAME/placement-tracker.git
cd placement-trackercd server
npm install
cp .env.example .envEdit .env file:
PORT=5000
MONGO_URI=mongodb+srv://youruser:yourpassword@cluster0.xxxxx.mongodb.net/placement_tracker
JWT_SECRET=your_secret_key_here
CLIENT_URL=http://localhost:3000
NODE_ENV=developmentLoad demo data:
npm run seed # Loads 120 students + 12 companies + ~78 placementsStart backend:
npm run dev # Starts on http://localhost:5000cd ../client
npm install
npm start # Starts on http://localhost:3000| Role | Password | Access | |
|---|---|---|---|
| ๐ก๏ธ Admin | Full access โ add / edit / delete | ||
| ๐๏ธ Viewer | viewer@college.edu | viewer123 | Read only โ view data & analytics |
| ๐ Student | Sign up with Roll No | โ | Own profile, resume, placement status |
POST /api/auth/register โ Register (with rollNo for student)
POST /api/auth/login โ Login
GET /api/auth/me โ Get current user
GET /api/auth/google โ Google OAuth
GET /api/students โ Get all (filters: search, branch, batch, isPlaced, page)
POST /api/students โ Add student (admin)
PUT /api/students/:id โ Update student (admin)
DELETE /api/students/:id โ Delete student (admin)
GET /api/companies โ Get all (filters: search, industry)
POST /api/companies โ Add company (admin)
DELETE /api/companies/:id โ Delete company (admin)
GET /api/placements โ Get all (filters: offerType, status)
POST /api/placements โ Record placement โ auto updates student (admin)
DELETE /api/placements/:id โ Remove placement (admin)
GET /api/stats/overview โ KPI numbers (batch filter)
GET /api/stats/branch-wise โ Branch placement counts
GET /api/stats/package-distribution โ Package brackets
GET /api/stats/monthly-trend โ Monthly offer trend
GET /api/stats/company-wise โ Top companies
GET /api/stats/batches โ Available batch years
GET /api/profile โ Get my profile + student data
PUT /api/profile โ Update name, phone, linkedin, github
POST /api/profile/resume โ Upload resume PDF (student only)
PUT /api/profile/change-password โ Change password
Admin โ Full access. Add students, companies, placements. View everything.
Viewer โ Read only. View dashboard, students, analytics. No edit access.
Student โ Sign up with Roll No โ auto-linked to student profile
โ View own CGPA, skills, placement status
โ Upload / download resume PDF
โ Change password
- โ Overall placement rate banner
- โ 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
- โ Avg CGPA by branch radar chart
- โ Company-wise breakdown table with share %
| SDG | Mapping |
|---|---|
| ๐ SDG 4 โ Quality Education | Improves placement process transparency in institutions |
| ๐ผ SDG 8 โ Decent Work & Economic Growth | Connects students to employment opportunities efficiently |
| ๐๏ธ SDG 9 โ Industry, Innovation & Infrastructure | Promotes digital infrastructure in educational institutions |
- Email notifications to eligible students when company visits
- Eligibility auto-filter based on CGPA, branch, backlogs
- Export placement report as Excel / PDF
- Placement prediction using ML scoring
- Interview experience section for placed students
- Mobile app using React Native
React ยท Express ยท MongoDB ยท Bootstrap 5 ยท Chart.js ยท JWT ยท Passport.js ยท Multer ยท Mongoose
This project is open source and available under the MIT License.
โญ Star this repo if you found it helpful!
Made with โค๏ธ to solve a real problem