Note
This project was created for college students when I was working as a freelancer. This is not purposed for commercial use or production. It is maintained for educational and portfolio purposes only.
The College Placement Portal is a web-based platform designed to streamline and automate the campus recruitment and placement process. It acts as a central hub connecting college administrators (superadmins), students, and recruiters. The system handles job postings, student profile registration, job applications, student invitations, and automated email notifications.
- Dual Roles: Dedicated dashboards for college administration (superadmin) and students.
- Student Invitation & Authentication: Superadmins can invite students to register. The system generates secure random passwords and notifies students via automated emails.
- Profile Management: Students can build structured profiles, complete with education history, skills, languages, and certificates.
- Job Board: Superadmins can create and manage full-time, part-time, contract, or internship job listings. Students can view job listings and apply.
- Application Tracking: Seamless flow from job application to acceptance or rejection, with automatic email notifications sent to students when decisions are made.
- Helpdesk AI Chatbot: Built-in placement helpdesk chat leveraging TF-IDF and NLTK to answer student queries regarding placement events, policies, and preparation.
Below is the sequence graph of the core workflow (student invitation, onboarding, and job application):
sequenceDiagram
actor Admin as Superadmin
actor Student
participant DB as System Database
participant Mail as Celery & SMTP
Admin->>DB: Create Student Account
DB-->>Mail: Trigger Email Invitation Task
Mail-->>Student: Send Email with Temp Password
Student->>Student: Login & Reset Password
Student->>DB: Complete Profile (Education, Skills, Certificates)
Admin->>DB: Post Job Openings
Student->>DB: Apply for Job
Admin->>DB: Accept/Reject Application
DB-->>Mail: Trigger Status Update Email
Mail-->>Student: Receive Application Decision Email
The application follows a traditional Model-View-Template (MVT) architecture powered by Django, with a background task processing layer powered by Celery & RabbitMQ.
graph TD
Client[Web Browser]
Django[Django Application]
SQLite[(SQLite Database)]
Celery[Celery Worker]
RabbitMQ[RabbitMQ Broker]
Redis[Redis Cache]
Client -->|HTTP Requests| Django
Django -->|Queries/Updates| SQLite
Django -->|Cache Reads/Writes| Redis
Django -->|Enqueue Mail Task| RabbitMQ
RabbitMQ -->|Consume Task| Celery
Celery -->|Send Email| SMTP[SMTP Server]
- CollagePlacementPortal/ - Main Django project configuration, settings, routing, wsgi/asgi entry points, and custom middleware.
- authentication/ - User authentication logic, login/logout, password reset, and forms.
- collage/ - Superadmin features (student management, job creation, application reviews, and helpdesk backend).
- student/ - Student portal features (profile setup, job listings view, job applications).
- main/ - Shared models, serializers, and asynchronous Celery tasks.
- templates/ - Global HTML templates.
- static/ - CSS, JS, images, and external libraries.
- media/ - User-uploaded files and media resources.
- Backend: Django 4.1.7, Django REST Framework (DRF)
- Frontend: HTML5, Vanilla CSS, Bootstrap 4/5
- Database: SQLite3 (Default development)
- Caching: Redis
- Task Queue: Celery, RabbitMQ
- AI/NLP: NLTK, Scikit-learn (TF-IDF vectorization for the Helpdesk Chatbot)
The application relies on environment variables for database, email server (SMTP), and security configurations. Make sure to define these in a .env file inside the project root (refer to .env.example).
| Variable Name | Description | Default / Example |
|---|---|---|
EMAIL_HOST |
SMTP server host | smtp.gmail.com |
EMAIL_PORT |
SMTP port | 587 |
EMAIL_HOST_USER |
Email username | your_email@example.com |
EMAIL_HOST_PASSWORD |
App-specific email password | your_app_password |
EMAIL_USE_TLS |
Use TLS encryption | True |
MAIL_PROTOCOL |
Web app protocol | http |
NLTK_DISABLE_IMPORT_SECURITY |
Disables NLTK's security sandbox hook (required inside local venvs) | 1 |
-
Clone the Repository:
git clone https://github.com/harshidkoladara/collage-placement-portal.git cd collage-placement-portal -
Set up Virtual Environment:
python -m venv .venv # Windows: .venv\Scripts\activate # macOS/Linux: source .venv/bin/activate
-
Install Dependencies:
pip install -r requirements.txt
-
Configure Environment Variables: Copy
.env.exampletoCollagePlacementPortal/.envand edit with your settings:cp .env.example CollagePlacementPortal/.env
-
Run Migrations & Start Server:
python manage.py migrate python manage.py runserver
To run the complete system (including Redis, RabbitMQ, and Celery workers) easily:
-
Build and Run Containers:
docker-compose up --build
-
Access the App: The web portal will be running at
http://localhost:8000/.
The application features a self-documenting API using Swagger / OpenAPI:
- Interactive Swagger UI:
http://localhost:8000/swagger/(if enabled in routes)
GET /api/utils/label: Fetch UI localization labels. Accepts optionaldate_timequery param.
- Run Django Check:
python manage.py check - Create Migrations:
python manage.py makemigrations - Apply Migrations:
python manage.py migrate - Create Superuser:
python manage.py createsuperuser
- NLTK Blocked Import Error: If you see
ImportError: Blocked import of regex from current working directory, ensure you setNLTK_DISABLE_IMPORT_SECURITY=1in your.envfile or environment. - Celery Connection Failures: Ensure RabbitMQ is running (
docker-compose up rabbitmqor check your local rabbitmq status).