A full-stack recruitment platform built for colleges, connecting students with hiring companies. Students browse and apply to job listings; companies post openings and track applicants — all in one place.
- Register and build a profile with resume upload
- Browse live job listings with filters (role, CTC, location, eligibility)
- Apply to positions and track application status in real time
- Receive notifications on status changes
- Create a company account and post job openings
- Review applications, shortlist candidates, schedule interviews
- Download applicant data as CSV
- Approve company registrations
- View placement statistics and reports
- Manage users and listings
| Layer |
Technology |
| Frontend |
React 18, React Router v6, Axios |
| Backend |
Node.js, Express.js |
| Database |
MongoDB (Mongoose ODM) |
| Auth |
JWT (access + refresh tokens) |
| File Storage |
Multer (local) / AWS S3 (production) |
placement-portal/
├── client/ # React frontend
│ ├── public/
│ └── src/
│ ├── api/ # Axios instance + API calls
│ ├── components/ # Shared UI components
│ ├── pages/
│ │ ├── student/
│ │ ├── company/
│ │ └── admin/
│ ├── context/ # AuthContext
│ └── App.jsx
├── server/ # Express backend
│ ├── controllers/
│ │ ├── auth.controller.js
│ │ ├── job.controller.js
│ │ └── application.controller.js
│ ├── models/
│ │ ├── User.js
│ │ ├── Job.js
│ │ └── Application.js
│ ├── routes/
│ ├── middleware/
│ │ ├── auth.middleware.js
│ │ └── role.middleware.js
│ ├── config/
│ │ └── db.js
│ └── server.js
├── .env.example
├── package.json
└── README.md
- Node.js 18+
- MongoDB (local or Atlas)
git clone https://github.com/yourusername/placement-portal.git
cd placement-portal
# Backend
cd server
npm install
cp ../.env.example .env # Fill in your values
npm run dev
# Frontend (new terminal)
cd ../client
npm install
npm start
App runs at http://localhost:3000, API at http://localhost:5000.
PORT=5000
MONGO_URI=mongodb://localhost:27017/placement_portal
JWT_SECRET=your_jwt_secret_here
JWT_REFRESH_SECRET=your_refresh_secret_here
CLIENT_URL=http://localhost:3000
| Method |
Route |
Description |
| POST |
/api/auth/register |
Register student or company |
| POST |
/api/auth/login |
Login and receive tokens |
| POST |
/api/auth/refresh |
Refresh access token |
| POST |
/api/auth/logout |
Invalidate refresh token |
| Method |
Route |
Description |
| GET |
/api/jobs |
List all active jobs |
| GET |
/api/jobs/:id |
Job detail |
| POST |
/api/jobs |
Create job (company only) |
| PUT |
/api/jobs/:id |
Update job |
| DELETE |
/api/jobs/:id |
Delete job |
| Method |
Route |
Description |
| POST |
/api/applications |
Apply to a job |
| GET |
/api/applications/my |
Student's own applications |
| GET |
/api/applications/job/:jobId |
Applicants for a job (company) |
| PATCH |
/api/applications/:id/status |
Update status (company) |
MIT