A comprehensive web application for managing internship and training placements with AI-powered job recommendations, mentor approval workflows, and modern placement management system.
ITPO is a full-stack web application designed to streamline the internship and training placement process for educational institutions. It connects students, mentors, recruiters, and administrators in a unified platform with intelligent job matching and comprehensive workflow management.
- Smart Matching Algorithm: 70% skills, 20% location, 10% academic performance
- Personalized Recommendations: Top Match, Good Match, Near Miss categories
- Skill Gap Analysis: Identifies missing skills for career development
- Real-time Updates: Dynamic recommendations based on profile changes
- Students: Profile management, job applications, recommendation viewing
- Mentors: Application approval, student monitoring, progress tracking
- Recruiters: Job posting, application management, interview scheduling
- Admins: System oversight, job approval, user management
- Three-Stage Process: Student Apply β Mentor Approve β Recruiter Review
- Interview Scheduling: Comprehensive scheduling with online/offline/phone options
- Status Tracking: Real-time application status updates
- Placement Management: Automatic placement status updates
- React 18: Modern functional components with hooks
- Vite: Fast build tool and development server
- Tailwind CSS: Utility-first CSS framework
- Lucide React: Modern icon library
- Axios: HTTP client for API communication
- React Router: Client-side routing
- React Hot Toast: Notification system
- Node.js: JavaScript runtime environment
- Express.js: Web application framework
- MongoDB: NoSQL database with Mongoose ODM
- JWT: JSON Web Token authentication
- Bcrypt: Password hashing
- Multer: File upload handling
- CORS: Cross-origin resource sharing
- Python Flask: Recommendation service
- Scikit-learn: Machine learning algorithms
- Pandas: Data manipulation and analysis
- NumPy: Numerical computing
ITPO/
βββ frontend/ # React frontend application
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ shared/ # Shared components
β β βββ pages/ # Page components
β β β βββ admin/ # Admin dashboard pages
β β β βββ auth/ # Authentication pages
β β β βββ mentor/ # Mentor dashboard pages
β β β βββ recruiter/ # Recruiter dashboard pages
β β β βββ student/ # Student dashboard pages
β β βββ services/ # API service functions
β β βββ utils/ # Utility functions
β β βββ App.jsx # Main application component
β βββ public/ # Static assets
β βββ package.json # Frontend dependencies
βββ backend/ # Node.js backend application
β βββ controllers/ # Route controllers
β βββ models/ # Database models
β βββ routes/ # API routes
β βββ middleware/ # Custom middleware
β βββ config/ # Configuration files
β βββ uploads/ # File upload storage
β βββ server.js # Main server file
βββ recommendation_service/ # Python ML service
β βββ app.py # Flask application
β βββ requirements.txt # Python dependencies
βββ README.md # Project documentation
{
name: String,
email: String (unique),
password: String (hashed),
role: ['student', 'mentor', 'recruiter', 'admin'],
department: String,
year: String,
cgpa: Number,
skills: [String],
isPlaced: Boolean,
placementDetails: {
company: String,
roleOffered: String,
package: String,
placedAt: Date
},
assignedMentor: ObjectId,
activityLog: [ActivitySchema]
}{
title: String,
description: String,
rolesResponsibilities: String,
location: String,
skillsRequired: [String],
stipend: String,
recruiter: ObjectId,
isActive: Boolean,
status: ['draft', 'pending_approval', 'approved', 'rejected'],
applications: [ApplicationSchema]
}{
student: ObjectId,
job: ObjectId,
mentor: ObjectId,
recruiter: ObjectId,
status: ['pending mentor approval', 'rejected by mentor',
'pending recruiter review', 'rejected by recruiter',
'interview scheduled', 'hired'],
interviewDate: Date,
interviewTime: String,
interviewMode: ['online', 'offline', 'phone'],
interviewLocation: String,
interviewMeetingLink: String,
interviewNotes: String
}git clone https://github.com/suraj-savle/ITPO.gitcd backend
npm installCreate a .env file:
MONGO_URI=your_mongo_uri
JWT_SECRET=your_jwt_secret
PORT=5000Before starting the backend server for the first time, you must create an admin user.
Update the admin credentials inside the file:
node seedAdmin.jsThis will create the admin account in the database.
npm startcd ../frontend
npm install
npm run dev# Navigate to recommendation service
cd ../recommendation_service
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Start the service
python app.py- JWT Authentication: Secure token-based authentication
- Role Middleware: Route protection based on user roles
- Session Management: Automatic token refresh and logout
- Password Hashing: Bcrypt with salt rounds
- Input Validation: Comprehensive request validation
- CORS Configuration: Secure cross-origin requests
- File Upload Security: Type and size validation
def calculate_job_match(student, job):
weights = {'skills': 0.7, 'location': 0.2, 'cgpa': 0.1}
# Skills matching (70% weight)
matched_skills = intersection(student_skills, job_skills)
skills_score = (matched_skills / total_job_skills) * 100
# Location preference (20% weight)
location_score = 100 if preferred_location_match else 50
# CGPA factor (10% weight)
cgpa_score = 100 if cgpa >= 6.0 else scaled_score
return weighted_total_score- Top Match (80%+): Excellent fit with high skill overlap
- Good Match (60-79%): Good fit with moderate skill match
- Near Miss (40-59%): Potential fit with skill development
POST /api/auth/register # User registration
POST /api/auth/login # User login
GET /api/auth/profile # Get user profile
PUT /api/auth/profile # Update user profile
GET /api/jobs # Get all active jobs
POST /api/jobs # Create new job (recruiter)
GET /api/jobs/recruiter # Get recruiter's jobs
PUT /api/jobs/:id/toggle # Toggle job active status
DELETE /api/jobs/:id # Delete job
POST /api/applications/:jobId # Apply to job
GET /api/applications/my # Get my applications
PUT /api/applications/:id/mentor # Mentor decision
PUT /api/applications/:id/recruiter # Recruiter decision
GET /api/recommendations/jobs # Get job recommendations
GET /api/recommendations/student/:id # Get recommendations for student
- Browse Jobs: View AI-recommended and all available jobs
- Apply: Submit application with one click
- Mentor Review: Wait for mentor approval
- Recruiter Review: Application forwarded to recruiter
- Interview: Schedule and attend interview
- Placement: Receive hiring decision
- Post Job: Create detailed job posting
- Admin Approval: Wait for job approval
- Receive Applications: View mentor-approved applications
- Schedule Interviews: Set up interviews with candidates
- Make Decisions: Hire or reject candidates
- Placement Tracking: Monitor hired students
- Review Applications: Evaluate student applications
- Approve/Reject: Make decisions with feedback
- Monitor Progress: Track student application status
- Placement Updates: Receive hiring notifications
- β Core functionality implementation
- β AI-powered job recommendations
- β Multi-role authentication system
- β Modern UI/UX design
- π§ Email notification system
- π Advanced analytics dashboard
- π¬ In-app messaging system
- π± Mobile application
- π€ Advanced AI features
- π Third-party integrations
- π Performance optimization
- π Multi-language support