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.
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.
- 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
- 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
- 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
- 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
- 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)
- Clone the repository:
git clone <repository-url>
cd placement-cell-automation- Install dependencies:
npm install
# or
pnpm install- 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- 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:demonpm run devThe application will be available at http://localhost:3000
npm run build
npm startdocker-compose upThis will start both the application and MongoDB in containers.
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
Comprehensive guides available in the DOCUMENTATION folder:
- Setup Guide - Get started in 10 minutes
- Environment Configuration - All environment variables
- Database Setup - MongoDB configuration
- Google Integration - Sheets sync & OAuth
- Email Setup - Configure notifications
- Deployment - Production deployment guide
- API Reference - REST API documentation
- Troubleshooting - Common issues & solutions
npm run dev- Start development server with Turbopacknpm run build- Build for productionnpm start- Start production servernpm run lint- Run ESLintnpm run seed:companies- Seed company datanpm run seed:students- Seed student datanpm run seed:all- Seed all data (companies + students)npm run seed:demo- Seed demo data for testing
- Personal information (name, roll number, email, mobile)
- Academic details (branch, CGPA, backlogs, passing year)
- Placement status and offers
- Eligibility criteria
- Company profile (name, website, industry, description)
- Contact information
- Recruitment history
- 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)
- Associated drive and form
- Deadline and visibility window
- Student responses and applications
The system supports two authentication methods:
- Credentials-based: Email/password authentication for admins and students
- Google OAuth: Optional Google sign-in integration
Default admin credentials can be created using the seeding scripts.
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
- Password hashing with bcryptjs
- JWT-based session management
- Role-based access control
- Input validation and sanitization
- CORS configuration
- Environment variable protection
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is private and proprietary.
For issues, questions, or contributions, please contact the development team or open an issue in the repository.
Built for IIIT Sri City Placement Cell to streamline campus recruitment processes.