A full-stack job portal application built with React, Node.js, Express, and SQLite. This platform connects job seekers with companies, allowing users to browse and apply for jobs, while companies can post job openings and manage applications.
- User Authentication: Secure registration and login.
- Job Search & Filtering: Browse jobs with filters for job type, experience level, and salary.
- Job Application: Apply for jobs with a cover letter.
- Dashboard: View recommended jobs and track application status.
- Profile Management: Update personal information and upload resume/CV.
- Applied Jobs: View a history of all applied jobs.
- Company Registration: Create a company profile with details like industry, size, and location.
- Job Posting: Create and manage job listings with detailed requirements and benefits.
- Applicant Management: View and manage applications for posted jobs.
- Company Dashboard: Overview of active jobs, total applications, and recent activities.
- Company Profile: Public profile page for the company.
- React: UI library for building the user interface.
- Vite: Fast build tool and development server.
- Tailwind CSS: Utility-first CSS framework for styling.
- React Router DOM: For client-side routing.
- Lucide React: Icon library.
- Node.js & Express: Runtime and framework for the server.
- Sequelize: ORM for database management.
- SQLite: Lightweight relational database.
- JWT (JSON Web Tokens): For secure authentication.
- Bcrypt: For password hashing.
- Multer: For handling file uploads (resumes, logos).
Before you begin, ensure you have the following installed:
- Node.js (v14 or higher)
- npm (Node Package Manager)
git clone <repository-url>
cd lws-job-portalNavigate to the backend directory and install dependencies:
cd backend
npm installCreate a .env file in the backend directory with the following content:
PORT=5000
JWT_SECRET=your_super_secret_key_here
NODE_ENV=developmentStart the backend server:
npm run devThe server will start on http://localhost:5000.
Open a new terminal, navigate to the root directory (if not already there), and install frontend dependencies:
# If you are in the backend folder, go back one level
cd ..
npm installStart the frontend development server:
npm run devThe application will be available at http://localhost:5173.
lws-job-portal/
├── backend/ # Backend source code
│ ├── config/ # Database configuration
│ ├── controllers/ # Request handlers
│ ├── middleware/ # Custom middleware (auth, upload)
│ ├── models/ # Sequelize models
│ ├── routes/ # API routes
│ ├── uploads/ # Uploaded files (resumes, logos)
│ ├── server.js # Entry point for backend
│ └── database.sqlite # SQLite database file
├── src/ # Frontend source code
│ ├── assets/ # Static assets
│ ├── components/ # Reusable UI components
│ ├── context/ # React Context (Auth)
│ ├── pages/ # Application pages
│ │ ├── auth/ # Login/Register pages
│ │ ├── company/ # Company-specific pages
│ │ └── job-seeker/ # Job Seeker-specific pages
│ ├── App.jsx # Main App component
│ └── main.jsx # Entry point for frontend
├── index.html # HTML entry point
├── package.json # Frontend dependencies
└── tailwind.config.js # Tailwind configuration
POST /api/auth/register- Register a new user or companyPOST /api/auth/login- LoginGET /api/auth/me- Get current user profile
GET /api/jobs- Get all jobs (with filters)GET /api/jobs/:id- Get job detailsPOST /api/jobs- Create a new job (Company only)PUT /api/jobs/:id- Update a job (Company only)DELETE /api/jobs/:id- Delete a job (Company only)
POST /api/applications/jobs/:jobId/apply- Apply for a jobGET /api/applications/my-applications- Get user's applicationsGET /api/companies/applicants- Get applicants for company jobs
- 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 ISC License.