A comprehensive web portal for managing off-campus placement opportunities at the Innovation and Incubation Center (IIC), NIT Durgapur. This platform enables administrators to post job/internship opportunities and students to browse and apply for positions from various companies.
- Create Opportunities: Admin can post new job/internship opportunities with detailed information
- Update Opportunities: Edit existing opportunities with a user-friendly interface
- Comprehensive Details: Support for multiple job types, compensation details, eligibility criteria, and contact information
- Pagination: Display 18 opportunities per page for better user experience
- Multi-Provider Login: Support for GitHub, Google, and Credentials-based authentication
- Secure Password Hashing: bcrypt implementation with salt for password security
- Admin Access Control: Restricted access for opportunity management
- Responsive Design: Mobile-first approach with professional styling
- Modern UI/UX: Clean and intuitive interface with CSS modules
- Interactive Components: Modal-based editing, toast notifications, and smooth navigation
- Contact Form: Integrated contact system with email notifications
- Email Integration: Nodemailer setup for automated email responses
- About Page: Comprehensive information about IIC NIT Durgapur
- Profile Dashboard: Admin profile with opportunity management tools
- SEO Optimized: Proper metadata for all pages
- Next.js 15.5.2: React framework with App Router and Turbopack
- React: Component-based UI library
- CSS Modules: Scoped styling with responsive design
- React Hot Toast: Notification system
- Next.js API Routes: Server-side API endpoints
- MongoDB: NoSQL database for data storage
- Mongoose: ODM for MongoDB integration
- NextAuth.js v4.24.11: Complete authentication solution
- bcryptjs: Password hashing and verification
- JWT: Session management
- Nodemailer: Email sending functionality
- Gmail SMTP: Email service integration
off-campus/
βββ app/
β βββ about/ # About page
β βββ contact/ # Contact page
β βββ login/ # Login page
β βββ profile/ # Admin dashboard
β βββ opportunity/ # Opportunity detail pages
β βββ api/
β β βββ auth/ # NextAuth configuration
β β βββ contact/ # Contact form API
β β βββ oppertunity/ # Opportunity CRUD API
β βββ globals.css # Global styles
β βββ layout.js # Root layout
β βββ page.js # Home page
βββ component/
β βββ Footer.js # Footer component
β βββ Header.js # Header with navigation
β βββ oppertunityCreate.js # Create opportunity form
β βββ oppertunityFetch.js # Display opportunities with pagination
β βββ oppertunityUpdate.js # Update opportunity modal
β βββ sessionwrapper.js # Session provider
βββ lib/
β βββ db.js # MongoDB connection
βββ model/
β βββ oppertunity.js # Opportunity schema
β βββ user.js # User schema
βββ public/ # Static assets
- Node.js (v18 or higher)
- MongoDB database
- Gmail account for email service
-
Clone the repository
git clone https://github.com/sandipto729/IIC-off-campus-application.git cd IIC-off-campus-application/off-campus -
Install dependencies
npm install
-
Environment Configuration Create a
.envfile in theoff-campusdirectory:MONGODB_URI=your_mongodb_connection_string NEXTAUTH_SECRET=your_nextauth_secret GITHUB_ID=your_github_oauth_id GITHUB_SECRET=your_github_oauth_secret GOOGLE_CLIENT_ID=your_google_oauth_client_id GOOGLE_CLIENT_SECRET=your_google_oauth_client_secret EMAIL_USER=your_gmail_address EMAIL_PASS=your_gmail_app_password
-
Start Development Server
npm run dev
Open http://localhost:3000 in your browser.
{
title: String,
companyName: String,
opportunityType: [String], // Job, Internship, etc.
description: String,
responsibilities: [String],
requirements: [String],
eligibility: {
branches: [String],
cgpa: Number,
graduationYear: [Number]
},
compensation: {
salary: String,
stipend: String,
benefits: [String]
},
location: String,
applicationDeadline: Date,
contact: {
email: String,
phone: String,
website: String
}
}{
name: String,
email: String,
password: String, // bcrypt hashed
createdAt: Date
}The application supports three authentication methods:
- Credentials: Email and password login for admin
- GitHub OAuth: Social login integration
- Google OAuth: Social login integration
Configure Gmail SMTP for contact form:
- Enable 2-factor authentication on Gmail
- Generate an App Password
- Use the App Password in
EMAIL_PASSenvironment variable
- Login: Access admin dashboard at
/login - Create Opportunities: Use the opportunity creation form in profile
- Update Opportunities: Edit existing opportunities via the update modal
- View Analytics: Monitor opportunity statistics
- Browse Opportunities: View paginated list of available positions
- View Details: Access detailed opportunity information
- Contact: Use contact form for inquiries
The application uses CSS Modules for component-scoped styling:
- Responsive design for all screen sizes
- Professional color scheme matching institute branding
- Smooth animations and transitions
- Accessible UI components
- Password Hashing: bcrypt with salt rounds for secure password storage
- Session Management: JWT-based session handling
- CSRF Protection: Built-in NextAuth CSRF protection
- Environment Variables: Sensitive data stored in environment variables
- Input Validation: Server-side validation for all forms
npm run build
npm startEnsure all environment variables are properly set in your production environment, especially:
NODE_ENV=production- Secure
NEXTAUTH_SECRET - Production MongoDB URI
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit changes (
git commit -m 'Add some AmazingFeature') - Push to branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Innovation and Incubation Center (IIC)
National Institute of Technology Durgapur
Email: iic@nitdgp.ac.in
Website: NIT Durgapur
- NIT Durgapur for supporting this initiative
- Next.js team for the excellent framework
- All contributors and maintainers
Made with β€οΈ for IIC NIT Durgapur