A comprehensive placement management system built with Flask (Backend) and Vue.js (Frontend) for colleges to manage student placements, company interactions, and application processes.
- Multi-role Authentication: Student, Company, and Admin roles with JWT-based security
- Student Portal: Profile management, drive browsing, application tracking
- Company Portal: Drive creation, applicant management, profile management
- Admin Dashboard: System oversight, user management, reports
- Automated Notifications: Email reminders for deadlines and interviews
- Background Processing: Celery + Redis for async tasks
- Responsive Design: Modern Bootstrap-based UI
- Flask 3.1.3 - Web framework
- Flask-SQLAlchemy - ORM
- Flask-JWT-Extended - Authentication
- Flask-Mail - Email notifications
- Celery 5.4.0 - Background tasks
- Redis 5.0.1 - Message broker
- SQLite - Database
- Vue.js 3 - Progressive framework
- Vite - Build tool
- Pinia - State management
- Axios - HTTP client
- Bootstrap 5 - UI framework
Before running this application, make sure you have the following installed:
- Python 3.8+
- Node.js 16+
- Redis Server
- Git
git clone <repository-url>
cd placement-application-portal# Copy environment template
cp .env.example .env
# Edit .env with your configuration
nano .env# Navigate to backend
cd backend
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Seed database with test data
python seed_db.py
# Start backend server
python app.py# In a new terminal, from project root
cd frontend
# Install dependencies
npm install
# Start development server
npm run dev# Terminal 1: Start Redis server
redis-server
# Terminal 2: Start Celery worker
cd backend
celery -A celery_worker.celery worker --loglevel=info
# Terminal 3: Start Celery beat (scheduled tasks)
celery -A celery_worker.celery beat --loglevel=info- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- Email:
admin@placement.com - Password:
admin123 - Role:
admin
- TCS:
hr@tcs.com/company123 - Infosys:
hr@infosys.com/company123 - Role:
company
- Rahul:
rahul@student.com/student123 - Priya:
priya@student.com/student123 - Role:
student
placement-application-portal/
βββ backend/ # Flask backend
β βββ app.py # Main application
β βββ config.py # Configuration
β βββ models/ # Database models
β βββ routes/ # API endpoints
β βββ tasks.py # Celery tasks
β βββ celery_worker.py # Celery worker
β βββ requirements.txt # Python dependencies
βββ frontend/ # Vue.js frontend
β βββ src/
β β βββ views/ # Page components
β β βββ components/ # Reusable components
β β βββ services/ # API services
β β βββ stores/ # Pinia stores
β βββ package.json # Node dependencies
βββ static/ # Static assets
βββ templates/ # HTML templates
βββ .env.example # Environment template
βββ SETUP.md # Detailed setup instructions
βββ README.md # This file
# Flask Configuration
SECRET_KEY=your-secret-key-here
DATABASE_URL=sqlite:///placement.db
# Email Configuration (Gmail SMTP)
MAIL_USERNAME=your-email@gmail.com
MAIL_PASSWORD=your-app-password
# Celery Configuration
CELERY_BROKER_URL=redis://localhost:6379/0
CELERY_RESULT_BACKEND=redis://localhost:6379/0- Go to Google Account settings
- Enable 2-Factor Authentication
- Generate an App Password for "Mail"
- Use this password in
MAIL_PASSWORD
POST /api/auth/login- User loginPOST /api/auth/register- User registration
GET /api/student/dashboard- Student dashboardGET /api/student/profile- Get student profilePUT /api/student/profile- Update student profileGET /api/student/drives- List placement drivesPOST /api/student/apply/{drive_id}- Apply to drive
GET /api/company/dashboard- Company dashboardPOST /api/company/drives- Create placement driveGET /api/company/drives/{drive_id}/applications- View applicants
GET /api/admin/dashboard- Admin dashboardGET /api/admin/students- List all studentsGET /api/admin/companies- List all companies
The system includes automated background tasks:
- 24-hour reminders: Email notifications for upcoming deadlines
- Interview reminders: Notifications for scheduled interviews
- Monthly reports: Statistical reports sent to admins
- Application exports: CSV exports of student application history
-
Port already in use
# Kill process on port 5000 lsof -ti:5000 | xargs kill -9
-
Redis connection error
# Start Redis server redis-server -
Email not sending
- Check Gmail credentials in
.env - Ensure app password is correct
- Check spam folder
- Check Gmail credentials in
-
Database issues
# Reset database cd backend rm instance/placement.db python seed_db.py
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support or questions, please open an issue on GitHub or contact the development team.