A full-stack College Placement Management System built using the MERN Stack. The application streamlines campus recruitment by providing separate portals for Students, Placement Cell Faculty, and Companies.
Website hosted on - https://placeport-wggj.onrender.com
Images available on docker hub docker.io/pragyavarshney/placementportal-frontend docker.io/pragyavarshney/placementportal-backend
Database hosted on Mongodb and deployed using github actions + render
- Register and login securely
- Complete and update profile
- Browse available job opportunities
- Apply for jobs
- Track application status
- Secure faculty login
- View dashboard statistics
- Manage students
- Register companies
- View all jobs and applicants
- Login using credentials provided by faculty
- Manage company profile
- Post job opportunities
- View applicants
- Update recruitment status
- React 18
- React Router v6
- Axios
- CSS
- Node.js
- Express.js
- MongoDB
- Mongoose
- JWT (JSON Web Token)
- bcryptjs
- Docker
- Docker Compose
PlacePort/
│
├── frontend/
│ ├── src/
│ ├── public/
│ ├── Dockerfile
│ └── package.json
│
├── backend/
│ ├── controllers/
│ ├── middleware/
│ ├── models/
│ ├── routes/
│ ├── seed/
│ ├── Dockerfile
│ ├── server.js
│ └── package.json
│
├── docker-compose.yml
└── README.md
- Node.js (v18 or later)
- npm
- MongoDB
git clone <repository-url>
cd PlacePortCreate a .env file inside the backend folder.
PORT=5000
MONGO_URI=mongodb://localhost:27017/placement_portal
JWT_SECRET=your_secret_key
NODE_ENV=developmentcd backend
npm installnpm run seedFaculty accounts created:
| Password | |
|---|---|
| sanjeev.kumar@college.edu | faculty123 |
| priti.varshney@college.edu | faculty123 |
npm run devBackend:
http://localhost:5000
cd ../frontend
npm installnpm startFrontend:
http://localhost:3000
- Docker Desktop
- Docker Compose
Update .env
PORT=5000
MONGO_URI=mongodb://mongodb:27017/placement_portal
JWT_SECRET=your_secret_key
NODE_ENV=developmentNote: Inside Docker, MongoDB is accessed using the service name
mongodb, notlocalhost.
From the project root:
docker compose up --buildRun in detached mode:
docker compose up -d --builddocker compose downdocker compose down -v| Service | URL |
|---|---|
| Frontend | http://localhost:3000 |
| Backend | http://localhost:5000 |
| MongoDB | localhost:27017 |
docker compose logsBackend logs
docker compose logs backendFollow logs
docker compose logs -f backenddocker exec -it mongodb mongoshUseful commands
show dbs
use placement_portal
show collections
db.students.find().pretty()| Method | Endpoint |
|---|---|
| POST | /api/auth/student/register |
| POST | /api/auth/student/login |
| POST | /api/auth/faculty/login |
| POST | /api/auth/company/login |
| GET | /api/auth/me |
| Method | Endpoint |
|---|---|
| GET | /api/student/profile |
| PUT | /api/student/profile |
| POST | /api/student/apply/:jobId |
| GET | /api/student/applied-jobs |
| Method | Endpoint |
|---|---|
| GET | /api/faculty/stats |
| GET | /api/faculty/students |
| GET | /api/faculty/students/:id |
| GET | /api/faculty/jobs |
| GET | /api/faculty/companies |
| POST | /api/faculty/register-company |
| Method | Endpoint |
|---|---|
| GET | /api/company/profile |
| PUT | /api/company/profile |
| POST | /api/company/jobs |
| GET | /api/company/jobs |
| PUT | /api/company/jobs/:id/status |
| PUT | /api/company/jobs/:id/applicants/:sid |
| Method | Endpoint |
|---|---|
| GET | /api/jobs |
| GET | /api/jobs/:id |
Student
│
▼
Browse & Apply Jobs
│
▼
Backend (Express API)
│
▼
MongoDB Database
▲
│
Company Reviews Applications
▲
│
Placement Cell Manages Companies
Browser
│
▼
+-----------------------+
| React Frontend |
| localhost:3000 |
+-----------+-----------+
│
▼
+-----------------------+
| Express Backend |
| localhost:5000 |
+-----------+-----------+
│
▼
+-----------------------+
| MongoDB |
| mongodb:27017 |
+-----------------------+
Docker is used to containerize the application into separate services for the frontend, backend, and MongoDB database. This provides:
- Consistent development environment
- Simplified project setup
- Isolation between services
- Easy deployment across different systems
- No manual MongoDB installation required
- Single-command application startup using Docker Compose
- Resume upload
- Email notifications
- Interview scheduling
- Company analytics dashboard
- Admin role
- Password reset via email
- Deployment using Kubernetes
This project is intended for educational purposes.