A comprehensive full-stack placement management system built with React, Node.js, Express, and MySQL for managing college placement processes including student applications, company drives, assessments, interviews, and job offers.
- Company Management: Add new companies and manage recruitment drives
- Student Shortlisting: Automated shortlisting based on CGPA and assessment scores
- Offer Creation: Create job offers for companies
- Application Tracking: Monitor and update application statuses
- Analytics: View offer counts per company and student performance metrics
- Company Drive Management: Close drives and auto-cleanup related data
- Profile Management: Register and view student information
- Company Browsing: View available companies and their details
- Application Submission: Apply to companies with one click
- Application Tracking: Monitor application status in real-time
- Offers Dashboard: View received job offers
Frontend:
- React 18 with Vite
- Tailwind CSS for styling
- Axios for API communication
Backend:
- Node.js with Express.js
- MySQL2 for database connectivity
- CORS enabled for cross-origin requests
Database:
- MySQL with stored procedures, functions, and triggers
- Referential integrity with CASCADE operations
placement-system/
βββ backend/ # Express.js API server
β βββ config/ # Database configuration
β βββ controllers/ # Business logic
β βββ routes/ # API endpoints
β βββ index.js # Entry point
βββ frontend/ # React application
β βββ src/
β β βββ components/ # Reusable UI components
β β βββ pages/ # Dashboard pages
β β βββ api/ # API client
β βββ public/
βββ dbSQL/ # Database schema and scripts
βββ DBMS-MINI_PROJECT.sql # Schema and sample data
βββ Mini_proj_Functions.sql # SQL functions
βββ Mini_proj_Procedures.sql # Stored procedures
βββ Mini_proj_Triggers.sql # Database triggers
- Node.js (v14 or higher)
- MySQL Server (v8.0 or higher)
- npm or yarn package manager
- Create the database and import schema:
mysql -u root -p < dbSQL/DBMS-MINI_PROJECT.sql- Import functions, procedures, and triggers:
mysql -u root -p placement < dbSQL/Mini_proj_Functions.sql
mysql -u root -p placement < dbSQL/Mini_proj_Procedures.sql
mysql -u root -p placement < dbSQL/Mini_proj_Triggers.sql- Navigate to backend directory:
cd backend- Install dependencies:
npm install- Configure environment variables:
Create a .env file in the backend directory:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_mysql_password
DB_NAME=placement
PORT=3000- Start the backend server:
node index.jsThe server will run on http://localhost:3000
- Navigate to frontend directory:
cd frontend- Install dependencies:
npm install- Start the development server:
npm run devThe application will run on http://localhost:5173
- Student: Student profiles with CGPA and skills
- Company: Company information and vacancy details
- Placement_Cell: Placement coordinators and contacts
- Application: Student applications to companies
- Online_Assessment: Assessment scores and platforms
- Interview: Interview records with rounds and results
- Offer: Job offers with CTC and joining details
-
Stored Procedures:
ShortlistStudents: Automated shortlisting by score/CGPAGetStudentOffers: Retrieve all offers for a studentUpdateApplicationStatus: Safe status updates
-
Functions:
GetAvgScore: Calculate student's average assessment scoreCountCompanyOffers: Count offers per company
-
Triggers:
- Auto-cleanup when company drives are closed
- Data integrity enforcement
GET /api/students/:id- Get student detailsPOST /api/students- Create new studentGET /api/students/:id/avgscore- Get average score
GET /api/companies- List all companiesPOST /api/companies- Add new companyPUT /api/companies/:id/status- Update company status
GET /api/applications- Get all applications (admin)GET /api/applications/student/:id- Get student applicationsPOST /api/applications- Submit applicationPUT /api/applications/:id/status- Update statusPOST /api/applications/shortlist- Run shortlisting
GET /api/offers- Get all offersPOST /api/offers- Create new offerGET /api/offers/student/:studId- Get student offersGET /api/offers/company/:id/count- Count company offers
- Dashboard with comprehensive controls
- Company and offer management forms
- Application status tracking table
- Analytics and reporting sections
- Clean, card-based company browsing
- Application status indicators
- Received offers display
- Profile information section
- Input validation on frontend and backend
- SQL injection prevention through parameterized queries
- Error handling with meaningful messages
- CORS configuration for controlled access
The database comes pre-populated with:
- 9 sample students from various branches
- 8 companies (Infosys, TCS, Microsoft, Google, etc.)
- 5 placement cell coordinators
- Multiple applications, assessments, and interviews
- Sample offers with realistic CTCs and locations
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is developed as part of a DBMS Mini Project for educational purposes.
- Project developed for DBMS course work
- Repository: DBMS_Mini_Project_Placement_Data_Management
- Check MySQL credentials in
.env - Ensure MySQL server is running
- Verify database
placementexists
- Confirm backend is running on port 3000
- Check CORS settings in
backend/index.js - Verify API base URL in
frontend/src/api/api.js
- Ensure all SQL scripts are executed in order
- Check foreign key constraints
- Verify sample data was imported successfully
For issues or questions, please create an issue in the GitHub repository.
Built with β€οΈ for efficient placement management