Skip to content

rejzzzz/PMS

Repository files navigation

Placement Cell Automation System

A comprehensive web-based platform for managing campus placement activities, built with Next.js 15, MongoDB, and TypeScript. This system streamlines the entire recruitment process from company registration to student placements.

Overview

The Placement Cell Automation System is designed to digitize and automate the placement process for educational institutions. It provides separate interfaces for administrators and students, enabling efficient management of recruitment drives, Expression of Interest (EOI) forms, student applications, and placement tracking.

Key Features

For Administrators

  • Dashboard: Real-time statistics on active drives, student placements, and placement percentages
  • Company Management: Add, edit, and track company information and recruitment history
  • Drive Management: Create and manage recruitment drives with customizable eligibility criteria
  • EOI Management: Create and distribute Expression of Interest forms to eligible students
  • Student Management: Comprehensive student database with filtering by batch, branch, CGPA, and placement status
  • Round Tracking: Monitor interview rounds and student progress through recruitment stages
  • Reports & Analytics: Generate placement reports and company-wise statistics
  • Bulk Operations: Import student and company data via Excel/CSV

For Students

  • Available Opportunities: View recruitment drives based on eligibility criteria
  • EOI Submission: Apply to opportunities through customizable forms
  • Application Tracking: Monitor status of submitted applications
  • Profile Management: Update personal and academic information

Technical Features

  • Google Sheets Integration: Sync student and company data from Google Sheets
  • Email Notifications: Automated email alerts for EOI releases and updates
  • Form Builder: Dynamic form creation with various field types
  • Authentication: Secure login with NextAuth.js supporting Google OAuth and credentials
  • Role-Based Access: Separate interfaces and permissions for admins and students
  • Responsive Design: Mobile-friendly interface built with Tailwind CSS

Tech Stack

  • Framework: Next.js 15 (App Router)
  • Language: TypeScript
  • Database: MongoDB with Mongoose ODM
  • Authentication: NextAuth.js
  • Styling: Tailwind CSS 4
  • UI Components: React 19, React Icons, React Select
  • Charts: Chart.js with react-chartjs-2
  • Forms: Custom form builder with validation
  • Email: Nodemailer
  • External APIs: Google Sheets API, Google OAuth
  • File Processing: xlsx, file-saver
  • Notifications: React Toastify

Prerequisites

  • Node.js 18+ and npm/pnpm
  • MongoDB instance (local or cloud)
  • Google Cloud Project with Sheets API enabled (for data sync)
  • SMTP credentials (for email notifications)

Installation

  1. Clone the repository:
git clone <repository-url>
cd placement-cell-automation
  1. Install dependencies:
npm install
# or
pnpm install
  1. Set up environment variables:

Create a .env.local file in the root directory with the following variables:

# Database
MONGODB_URI=your_mongodb_connection_string

# Authentication
JWT_SECRET=your_jwt_secret_key
NEXTAUTH_SECRET=your_nextauth_secret
NEXTAUTH_URL=http://localhost:3000

# Google OAuth (optional)
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret

# Google Sheets Integration
GOOGLE_SHEET_ID=your_google_sheet_id
GOOGLE_SERVICE_ACCOUNT_EMAIL=your_service_account_email
GOOGLE_PRIVATE_KEY="your_service_account_private_key"

# Email Configuration
EMAIL_HOST=smtp.gmail.com
EMAIL_PORT=587
EMAIL_SECURE=false
EMAIL_USER=your_email@gmail.com
EMAIL_PASS=your_app_password

# Development Settings
NODE_ENV=development
NEXT_PUBLIC_DEV_MODE=false
NEXTAUTH_DEV_BYPASS=false
NEXT_PUBLIC_DATA_MODE=demo
  1. Seed the database (optional):
# Seed companies
npm run seed:companies

# Seed students
npm run seed:students

# Seed all data
npm run seed:all

# Seed demo data
npm run seed:demo

Running the Application

Development Mode

npm run dev

The application will be available at http://localhost:3000

Production Build

npm run build
npm start

Using Docker

docker-compose up

This will start both the application and MongoDB in containers.

Project Structure

placement-cell-automation/
├── src/
│   ├── app/                    # Next.js App Router pages
│   │   ├── admin/             # Admin dashboard and management pages
│   │   ├── student/           # Student portal pages
│   │   ├── api/               # API routes
│   │   └── login/             # Authentication pages
│   ├── components/            # Reusable React components
│   ├── models/                # MongoDB/Mongoose models
│   ├── lib/                   # Utility functions and configurations
│   └── types/                 # TypeScript type definitions
├── scripts/                   # Database seeding scripts
├── public/                    # Static assets
├── DOCUMENTATION/             # Additional documentation
└── docker-compose.yml         # Docker configuration

Documentation

Comprehensive guides available in the DOCUMENTATION folder:

Available Scripts

  • npm run dev - Start development server with Turbopack
  • npm run build - Build for production
  • npm start - Start production server
  • npm run lint - Run ESLint
  • npm run seed:companies - Seed company data
  • npm run seed:students - Seed student data
  • npm run seed:all - Seed all data (companies + students)
  • npm run seed:demo - Seed demo data for testing

Key Models

Student

  • Personal information (name, roll number, email, mobile)
  • Academic details (branch, CGPA, backlogs, passing year)
  • Placement status and offers
  • Eligibility criteria

Company

  • Company profile (name, website, industry, description)
  • Contact information
  • Recruitment history

Drive

  • Company reference
  • Job details (title, type, CTC/stipend)
  • Eligibility criteria (min CGPA, max backlogs)
  • Target batches
  • Status tracking (active, EOI released, data shared, rounds ongoing, completed)

EOI (Expression of Interest)

  • Associated drive and form
  • Deadline and visibility window
  • Student responses and applications

Authentication

The system supports two authentication methods:

  1. Credentials-based: Email/password authentication for admins and students
  2. Google OAuth: Optional Google sign-in integration

Default admin credentials can be created using the seeding scripts.

API Routes

The application exposes RESTful API endpoints under /api:

  • /api/students - Student CRUD operations
  • /api/companies - Company management
  • /api/drive - Recruitment drive operations
  • /api/eoi - EOI form management
  • /api/forms - Dynamic form builder
  • /api/auth - Authentication endpoints

Security Features

  • Password hashing with bcryptjs
  • JWT-based session management
  • Role-based access control
  • Input validation and sanitization
  • CORS configuration
  • Environment variable protection

Browser Support

  • Chrome (latest)
  • Firefox (latest)
  • Safari (latest)
  • Edge (latest)

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

This project is private and proprietary.

Support

For issues, questions, or contributions, please contact the development team or open an issue in the repository.

Acknowledgments

Built for IIIT Sri City Placement Cell to streamline campus recruitment processes.

About

Placement Management System

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages