This repository contains the frontend for the PiATS, a modern Applicant Tracking System (ATS). It provides a platform for candidates to view job openings, submit applications, and for recruiters to manage jobs and review applicants.
This project was bootstrapped with Vite and is built using React, TypeScript, and Tailwind CSS.
- Job Listings: Publicly accessible page to browse and search for open positions.
- Job Details: A detailed view for each job, including description and requirements.
- Online Applications: A user-friendly form for candidates to apply for jobs directly.
- Recruiter Dashboard: A protected area for recruiters to manage job postings.
- Applicant Viewer: A protected view for recruiters to see all applicants for a specific job.
- Responsive Design: A modern, responsive UI built with shadcn/ui and Tailwind CSS.
This project utilizes a modern frontend stack:
- Framework: React
- Build Tool: Vite
- Language: TypeScript
- Styling: Tailwind CSS
- UI Components: shadcn/ui
- Routing: React Router
- Data Fetching & State Management: TanStack Query
- Form Handling: React Hook Form with Zod for validation.
- Linting: ESLint
The src directory is organized as follows:
src/
├── assets/ # Static assets like images and icons
├── components/ # Reusable React components
│ ├── ui/ # UI components from shadcn/ui
│ └── ProtectedRoute.tsx # Component for handling protected routes
├── hooks/ # Custom React hooks
├── lib/ # Utility functions
├── pages/ # Top-level page components for each route
├── App.tsx # Main application component with routing
└── main.tsx # Application entry point
To get a local copy up and running, follow these simple steps.
Make sure you have Node.js (v18 or higher) and npm installed.
- Clone the repository:
git clone <YOUR_GIT_URL>
- Navigate to the project directory:
cd talent-pipeline-builder-ats - Install NPM packages:
npm install
To start the development server, run:
npm run devThe application will be available at http://localhost:5173 by default.
In the project directory, you can run the following commands:
| Command | Description |
|---|---|
npm run dev |
Starts the development server with Hot-Reloading. |
npm run build |
Bundles the app for production. |
npm run preview |
Serves the production build locally for preview. |
npm run lint |
Lints the codebase using ESLint. |
The application uses react-router-dom for client-side routing. Here are the main routes:
| Path | Page Component | Description |
|---|---|---|
/ |
Index |
Displays the list of available jobs. |
/jobs/:jobId |
JobDetails |
Shows details for a specific job. |
/jobs/:jobId/apply |
ApplicationForm |
A form to apply for a specific job. |
/login |
Login |
The login page for recruiters. |
/dashboard |
Dashboard |
Recruiter dashboard (Protected). |
/dashboard/jobs/:jobId/applicants |
Applicants |
View applicants for a job (Protected). |
* |
NotFound |
A fallback page for any other route. |
Authentication is handled on the client side.
- The
Loginpage simulates a login process and, upon success, stores anisAuthenticatedflag,userRole, and atokeninlocalStorage. - The
ProtectedRoutecomponent checks for theisAuthenticatedflag inlocalStorageto determine if a user can access protected routes like/dashboard. - Logging out removes these items from
localStorageand redirects the user to the login page.
To deploy this application, you first need to create a production-ready build:
npm run buildThis command generates a dist folder in the project root, which can be deployed to any static site hosting service like Vercel, Netlify, or GitHub Pages.