Skip to content
NimishakaviAparnaPublic

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

6 Commits

Folders and files

Repository files navigation

Placement Application Portal

A comprehensive placement management system built with Flask (Backend) and Vue.js (Frontend) for colleges to manage student placements, company interactions, and application processes.

πŸš€ Features

  • 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

πŸ› οΈ Tech Stack

Backend

  • 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

Frontend

  • Vue.js 3 - Progressive framework
  • Vite - Build tool
  • Pinia - State management
  • Axios - HTTP client
  • Bootstrap 5 - UI framework

πŸ“‹ Prerequisites

Before running this application, make sure you have the following installed:

  • Python 3.8+
  • Node.js 16+
  • Redis Server
  • Git

πŸš€ Quick Start

1. Clone and Setup

git clone <repository-url>
cd placement-application-portal

2. Environment Setup

# Copy environment template
cp .env.example .env

# Edit .env with your configuration
nano .env

3. Backend Setup

# 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

4. Frontend Setup

# In a new terminal, from project root
cd frontend

# Install dependencies
npm install

# Start development server
npm run dev

5. Redis & Celery Setup

# 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

6. Access the Application

πŸ” Test Accounts

Admin

  • Email: admin@placement.com
  • Password: admin123
  • Role: admin

Companies

  • TCS: hr@tcs.com / company123
  • Infosys: hr@infosys.com / company123
  • Role: company

Students

  • Rahul: rahul@student.com / student123
  • Priya: priya@student.com / student123
  • Role: student

πŸ“ Project Structure

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

πŸ”§ Configuration

Environment Variables (.env)

# 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

Gmail App Password Setup

  1. Go to Google Account settings
  2. Enable 2-Factor Authentication
  3. Generate an App Password for "Mail"
  4. Use this password in MAIL_PASSWORD

🎯 API Endpoints

Authentication

  • POST /api/auth/login - User login
  • POST /api/auth/register - User registration

Student Endpoints

  • GET /api/student/dashboard - Student dashboard
  • GET /api/student/profile - Get student profile
  • PUT /api/student/profile - Update student profile
  • GET /api/student/drives - List placement drives
  • POST /api/student/apply/{drive_id} - Apply to drive

Company Endpoints

  • GET /api/company/dashboard - Company dashboard
  • POST /api/company/drives - Create placement drive
  • GET /api/company/drives/{drive_id}/applications - View applicants

Admin Endpoints

  • GET /api/admin/dashboard - Admin dashboard
  • GET /api/admin/students - List all students
  • GET /api/admin/companies - List all companies

πŸ“§ Background Tasks

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

πŸ› Troubleshooting

Common Issues

  1. Port already in use

    # Kill process on port 5000
    lsof -ti:5000 | xargs kill -9
  2. Redis connection error

    # Start Redis server
    redis-server
  3. Email not sending

    • Check Gmail credentials in .env
    • Ensure app password is correct
    • Check spam folder
  4. Database issues

    # Reset database
    cd backend
    rm instance/placement.db
    python seed_db.py

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ“ž Support

For support or questions, please open an issue on GitHub or contact the development team.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages