Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Applicant Tracking System (ATS)

A full-featured backend REST API built with Java Spring Boot for managing job postings, applications, and candidate tracking.

Tech Stack

Layer Technology
Language Java 17
Framework Spring Boot 3.x
Database PostgreSQL
ORM Spring Data JPA
Auth Spring Security + JWT
Build Tool Maven

Features

  • Role-based access control — ADMIN, RECRUITER, CANDIDATE
  • JWT Authentication — Secure stateless auth with token expiry
  • Job Management — Post, update, delete, search and filter jobs
  • Application Workflow — Apply, track status (APPLIED → SHORTLISTED → HIRED)
  • Resume Upload/Download — PDF/DOCX upload with secure role-based access
  • Role Dashboards — Dedicated summary views per role
  • Admin Panel — Full user and system management

Project Structure

src/main/java/com/ats/applicant_tracking_system/ ├── config/ # Security configuration ├── controller/ # REST endpoints ├── dto/ # Request/Response objects ├── entity/ # JPA entities ├── enums/ # Role, Status enums ├── exception/ # Global exception handling ├── repository/ # JPA repositories ├── security/ # JWT filter and UserDetails └── service/ # Business logic

API Endpoints

Auth

Method Endpoint Access
POST /api/auth/register Public
POST /api/auth/login Public

Jobs

Method Endpoint Access
POST /api/jobs Recruiter, Admin
GET /api/jobs All authenticated
GET /api/jobs/{id} All authenticated
GET /api/jobs/open All authenticated
GET /api/jobs/my-jobs Recruiter, Admin
GET /api/jobs/search?keyword= All authenticated
GET /api/jobs/filter All authenticated
PUT /api/jobs/{id} Recruiter, Admin
DELETE /api/jobs/{id} Recruiter, Admin

Applications

Method Endpoint Access
POST /api/applications Candidate
GET /api/applications/my-applications Candidate
GET /api/applications/my-job-applications Recruiter, Admin
GET /api/applications/job/{jobId} Recruiter, Admin
PATCH /api/applications/{id}/status Recruiter, Admin
GET /api/applications/all Admin

Resumes

Method Endpoint Access
POST /api/resumes/upload/{appId} Candidate (own application)
GET /api/resumes/download/{resumeId} Candidate, Recruiter, Admin
GET /api/resumes/info/{appId} All authenticated
DELETE /api/resumes/{appId} Candidate (own application)

Dashboards

Method Endpoint Access
GET /api/dashboard/candidate Candidate
GET /api/dashboard/recruiter Recruiter
GET /api/dashboard/admin Admin

Users

Method Endpoint Access
GET /api/users/me All
GET /api/users Admin
GET /api/users/{id} Admin
GET /api/users/role/{role} Admin
DELETE /api/users/{id} Admin

Setup Instructions

Prerequisites

  • Java 17+
  • Maven
  • PostgreSQL

Steps

  1. Clone the repository
   git clone https://github.com/arunkp7/applicant-tracking-system.git
   cd applicant-tracking-system
  1. Create PostgreSQL database
   CREATE DATABASE ats_db;
  1. Update credentials in application.properties
   spring.datasource.password=your_password
  1. Run the application
   mvn spring-boot:run
  1. API is available at http://localhost:8080

Authentication

All protected endpoints require a Bearer token in the Authorization header:

Authorization: Bearer <your_jwt_token>

Get a token by calling /api/auth/login.

About

A job portal with complex relational data (users, jobs, applications, and resumes), secure file upload/download, advanced search and filtering, and role-based dashboards for admins, recruiters, and candidates.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages