HireOn is a full-stack job portal web application built using the MERN stack, designed to connect job seekers and recruiters through a seamless, scalable, and modern platform. It features a clean user interface, real-time communication, secure authentication, and document handling to simulate a real-world hiring ecosystem.
- π Animated Dark/Light Mode - Smooth theme transitions using Framer Motion
- π Secure Authentication - Google OAuth 2.0, JWT tokens, and email verification
- π¬ Real-time Chat - Instant messaging with Socket.IO for seamless communication
- πΌοΈ Profile Management - Cloudinary-powered image uploads and profile customization
- π Resume Handling - Google Drive API integration for document management
- π§βπΌ Role-based Dashboards - Tailored experiences for job seekers and recruiters
- π± Responsive Design - Optimized for all devices and screen sizes
- π‘οΈ Secure Backend - Protected routes with comprehensive error handling
- Frontend: React.js, Redux Toolkit, Tailwind CSS, Framer Motion
- Backend: Node.js, Express.js
- Database: MongoDB with Mongoose ODM
- Authentication: JWT, Google OAuth 2.0, Nodemailer
- Real-time Communication: Socket.IO
- Media & Documents: Cloudinary, Google Drive API
- Version Control: Git & GitHub
- Node.js 18+
- MongoDB instance
- Google OAuth 2.0 credentials
- Cloudinary account
- Google Drive API credentials
-
Clone the repository
git clone https://github.com/theshibaprasad/HireOn.git cd HireOn -
Install backend dependencies
cd backend npm install -
Install frontend dependencies
cd ../frontend npm install -
Set up environment variables
Create
.envfiles in both backend and frontend directories:Backend (.env)
# MongoDB MONGODB_URI=your_mongodb_connection_string # JWT JWT_SECRET=your_jwt_secret_key # Google OAuth GOOGLE_CLIENT_ID=your_google_client_id GOOGLE_CLIENT_SECRET=your_google_client_secret # Email (Nodemailer) EMAIL_USER=your_email@gmail.com EMAIL_PASS=your_email_app_password # Cloudinary CLOUDINARY_CLOUD_NAME=your_cloudinary_cloud_name CLOUDINARY_API_KEY=your_cloudinary_api_key CLOUDINARY_API_SECRET=your_cloudinary_api_secret # Google Drive API GOOGLE_DRIVE_CLIENT_ID=your_google_drive_client_id GOOGLE_DRIVE_CLIENT_SECRET=your_google_drive_client_secret GOOGLE_DRIVE_REDIRECT_URI=your_redirect_uri
Frontend (.env)
# API Base URL VITE_API_BASE_URL=http://localhost:5000/api # Google OAuth VITE_GOOGLE_CLIENT_ID=your_google_client_id
-
Set up the database
cd backend npm run setup-db -
Run the development servers
Backend (Terminal 1)
cd backend npm run devFrontend (Terminal 2)
cd frontend npm run dev -
Open your browser
Navigate to http://localhost:5173
βββ backend/ # Express.js server
β βββ api/ # API routes
β βββ auth/ # Authentication middleware
β βββ controllers/ # Business logic
β βββ middlewares/ # Custom middleware
β βββ models/ # MongoDB schemas
β βββ routes/ # Route definitions
β βββ utils/ # Utility functions
βββ frontend/ # React.js application
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ admin/ # Admin-specific components
β β β βββ auth/ # Authentication components
β β β βββ shared/ # Shared components
β β β βββ ui/ # UI components
β β βββ hooks/ # Custom React hooks
β β βββ redux/ # Redux store and slices
β β βββ utils/ # Utility functions
β βββ public/ # Static assets
- Google OAuth 2.0: Secure social login integration
- JWT Tokens: Stateless authentication with refresh tokens
- Email Verification: Nodemailer-powered verification system
- Password Recovery: Secure forgot password flow with token validation
- Socket.IO Integration: Instant messaging between users
- Chat History: Persistent message storage
- Online Status: Real-time user presence indicators
- Message Notifications: Instant alerts for new messages
- Resume Upload: Google Drive API integration for secure storage
- Profile Images: Cloudinary-powered image upload and optimization
- File Validation: Secure file type and size validation
- Document Preview: Built-in document viewing capabilities
- Job Seeker Dashboard: Personalized job recommendations and applications
- Recruiter Dashboard: Job posting and candidate management tools
- Admin Panel: Comprehensive system administration
- Super Admin: Advanced user and company management
- Users: Profile management and authentication data
- Companies: Organization information and settings
- Jobs: Job postings with detailed requirements
- Applications: Job application tracking and status
- Messages: Real-time chat message storage
- Contact Messages: Support and inquiry management
- Dark/Light Mode: Animated theme switching with Framer Motion
- Responsive Design: Mobile-first approach with Tailwind CSS
- Smooth Animations: Engaging micro-interactions and transitions
- Intuitive Navigation: User-friendly interface with clear hierarchy
- Loading States: Optimistic UI with proper loading indicators
- Secure Authentication: JWT-based stateless authentication
- Data Privacy: MongoDB with proper indexing and validation
- File Security: Secure file upload with validation and sanitization
- API Protection: Rate limiting and input validation
- Error Handling: Comprehensive error management and logging
- Set up environment variables on your hosting platform
- Configure MongoDB connection string
- Set up Google OAuth credentials
- Deploy to your preferred platform (Heroku, Vercel, etc.)
- Update API base URL in environment variables
- Build the application:
npm run build - Deploy to your hosting platform
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- React.js for the amazing frontend framework
- Express.js for the robust backend framework
- MongoDB for the flexible database
- Socket.IO for real-time communication
- Tailwind CSS for utility-first styling
- Framer Motion for smooth animations
- Cloudinary for media management
- Google APIs for authentication and storage
Shiba Prasad Swain - LinkedIn - theshibaprasad@gmail.com
β If you found this project helpful, please give it a star!
