Placement Portal Application
Campus Recruitment Management System
1. Description
The Placement Portal Application is a web-based platform designed to automate campus recruitment. It replaces manual spreadsheets by allowing companies and students to register, manage job drives, and track applications in one centralized location. The system is designed with a decoupled architecture, ensuring scalability and maintainability.
2. Technologies and Frameworks
- Flask: Core backend framework to build the RESTful API.
- VueJS: Frontend framework used to create a responsive and dynamic single-page user interface.
- SQLite: Relational database to store user and drive information.
- Redis: Message broker for Celery and for caching application data.
- Celery: Handles background batch jobs like monthly reports and CSV exports.
- Flask-SQLAlchemy: ORM to interact with the SQLite database programmatically.
- JWT: Secure authentication and authorization for user login sessions.
- CORS: Enables secure cross-origin requests between the frontend and backend APIs.
- Bootstrap: UI components and clean layout styling.
3. Database Schema
The database consists of several interconnected tables to manage the recruitment workflow effectively.
User
Stores account details of all platform users.
- id, email, password_hash, role, is_active, created_at
StudentProfile
Stores additional details for student accounts.
- id, user_id, full_name, branch, year, cgpa, phone, resume_path, is_blacklisted
CompanyProfile
Stores details of companies participating in placements.
- id, user_id, company_name, hr_contact, website, description, approval_status, is_blacklisted
PlacementDrive
Stores information about job/placement drives posted by companies.
- id, company_id, drive_name, job_title, job_description, salary, location, eligibility_criteria, application_deadline, interview_type, status, created_at
Application
Stores records of student applications to placement drives.
- id, student_id, drive_id, applied_at, status, remark
π‘ Database Relationships: The schema utilizes a robust relational design: - One-to-One:
UserβStudentProfile|UserβCompanyProfile- One-to-Many:CompanyProfileβPlacementDrive|StudentProfileβApplication|PlacementDriveβApplication
4. API Resource Endpoints
The backend exposes several RESTful endpoints to manage the application's core functionality:
- UserRegistration (
/): Handles new user signups (POST). - UserLogin (
/login): Authenticates users and starts sessions via JWT (POST). - AdminDashboard (
/admin/dashboard,/admin/dashboard/<int:id>): Allows Admin to view stats and manage users, company applications, and drives (GET, PUT). - CompanyDashboard (
/company/dashboard,/company/dashboard/<int:id>): Allows companies to post drives, view applicants, and change students' application status (GET, POST, PUT). - StudentDashboard (
/student/dashboard,/student/dashboard/<int:id>): Allows Students to view drives and apply for open positions (GET, POST). - CSVExport (
/export/csv): Triggers a background job to export student or company data (POST). - Logout (
/logout): Clears user sessions (POST).
5. Implemented Features
Core Functionality
- Role-Based Access: Distinct functionalities and dashboards for Admin, Company, and Student roles.
- Drive Management: Companies can create placement drives; Admins can approve or reject them.
- Application Tracking: Students can apply for ongoing drives and track their status (Applied / Selected / Shortlisted / Waitlisted / Rejected).
Background & Async Jobs (Celery & Redis)
- Scheduled Jobs:
- Daily Reminders β Automated reminders for upcoming interviews via email.
- Monthly Reports β Admin & Companies receive an HTML activity report via email on the 1st of every month.
- Async Batch Jobs: Students and Companies can trigger an "Export to CSV" task that runs in the background and sends emails with the dashboard summary.
- Caching: Implemented Redis caching on frequently accessed data like Admin and User Dashboards to improve overall application performance.