A modern, One Piece-themed recruitment platform for CodeNex, featuring a beautiful frontend built with Next.js and a robust backend API with MongoDB integration.
- Modern UI/UX: Beautiful One Piece-themed design with vintage paper textures
- Responsive Design: Fully responsive across all devices
- Interactive Components:
- Flip cards for domain information
- Countdown timer for recruitment deadline
- Dynamic application form with validation
- Smooth animations and transitions
- Form Management: React Hook Form with Zod validation
- UI Components: Comprehensive component library using Radix UI and shadcn/ui
- Theme Support: Dark/light mode with next-themes
- RESTful API: Clean API endpoints for applicant management
- Database Integration: MongoDB with Mongoose ODM
- CORS Support: Cross-origin resource sharing enabled
- Environment Configuration: Secure environment variable management
- Error Handling: Comprehensive error handling and validation
- Node.js (v18 or higher)
- npm or pnpm
- MongoDB Atlas account (for database)
-
Clone the repository
git clone https://github.com/CodeNex-Club-SRMIST/Recruitment-website2k25.git cd Recruitment-website2k25 -
Install Frontend Dependencies
npm install # or pnpm install -
Install Backend Dependencies
cd backend npm install -
Environment Setup
Create a
.envfile in thebackenddirectory:MONGO_URI=mongodb+srv://your-username:your-password@your-cluster.mongodb.net/codenex_recruitments?retryWrites=true&w=majority PORT=5000
-
Start the Development Servers
Terminal 1 - Backend:
cd backend npm start # or for development with auto-restart npx nodemon server.js
Terminal 2 - Frontend:
npm run dev # or pnpm dev -
Open your browser
- Frontend: http://localhost:3000
- Backend API: http://localhost:5000
codenex-recruitment/
βββ app/ # Next.js app directory
β βββ components/ # React components
β β βββ application-form.tsx # Main application form
β βββ globals.css # Global styles
β βββ layout.tsx # Root layout
β βββ page.tsx # Home page
βββ backend/ # Express.js backend
β βββ config/
β β βββ db.js # MongoDB connection
β βββ controllers/
β β βββ applicantController.js # API controllers
β βββ models/
β β βββ Applicant.js # Mongoose schema
β βββ routes/
β β βββ applicantRoutes.js # API routes
β βββ server.js # Express server
β βββ package.json
βββ components/ # Shared UI components
β βββ ui/ # shadcn/ui components
βββ public/ # Static assets
β βββ hero-background.png
β βββ vintage-paper-texture.png
β βββ ... # Other images
βββ lib/ # Utility functions
βββ hooks/ # Custom React hooks
βββ package.json
- Framework: Next.js 15.2.4 (App Router)
- Language: TypeScript 5.0
- Styling: Tailwind CSS 4.1.9
- UI Components:
- Radix UI (Accessible primitives)
- shadcn/ui (Component library)
- Lucide React (Icons)
- Form Handling: React Hook Form + Zod validation
- State Management: React useState/useEffect
- Animations: Tailwind CSS animations + Framer Motion
- Runtime: Node.js
- Framework: Express.js 5.1.0
- Database: MongoDB with Mongoose 8.17.1
- Middleware:
- CORS for cross-origin requests
- dotenv for environment variables
- Validation: Built-in Express validation
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/test |
Health check endpoint |
| GET | /api/applicants |
Get all applicants |
| POST | /api/applicants |
Submit new application |
interface Applicant {
name: string; // Full name
srmEmail: string; // SRM email address
personalEmail: string; // Personal email address
phoneNumber: string; // Phone number
yearOfStudy: string; // Year of study (1st, 2nd, 3rd, 4th)
course: string; // Course (B.Tech, BCA, M.Tech, MCA, Other)
specialization: string; // Specialization
regNo: string; // Registration number
domain: string; // Preferred domain (technical, creatives, non-tech)
motivation: string; // Motivation statement
createdAt: Date; // Application timestamp
}- Vintage Paper Textures: Authentic old-world feel
- Pirate Color Scheme: Blue, yellow, and gold accents
- Interactive Elements: Flip cards, hover effects, and smooth transitions
- Typography: Bold, adventurous fonts matching the theme
- Countdown Timer: Real-time countdown to recruitment deadline
- Domain Cards: Interactive flip cards for different domains
- Responsive Navigation: Mobile-friendly navigation menu
- Form Validation: Real-time form validation with helpful error messages
- Loading States: Smooth loading animations and feedback
Frontend:
npm run dev # Start development server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLintBackend:
npm start # Start production server
npx nodemon server.js # Start development server with auto-restartBackend (.env):
MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/database
PORT=5000- Connect your GitHub repository to Vercel
- Set environment variables in Vercel dashboard
- Deploy automatically on push to main branch
- Create account on Railway or Heroku
- Connect your repository
- Set environment variables:
MONGO_URI: Your MongoDB connection stringPORT: Port number (usually auto-assigned)
- Deploy
- 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 licensed under the MIT License - see the LICENSE file for details.
- Frontend Development: Next.js, TypeScript, Tailwind CSS
- Backend Development: Express.js, MongoDB, Mongoose
- Design: One Piece-themed UI/UX
- Deployment: Vercel (Frontend), Railway/Heroku (Backend)
If you encounter any issues or have questions:
- Check the Issues page for existing problems
- Create a new issue with detailed description
- Contact the development team
"The sea is vast, and there's always more to discover!" - Monkey D. Luffy π΄ββ οΈ
Built with β€οΈ for CodeNex Recruitment