Skip to content

yigitkagankartal/Job-Application-Tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Job Application Tracker 📋

A web-based application where users can track and manage their job applications, monitor different application stages, and organize their recruitment process efficiently.

  • Backend: Spring Boot + PostgreSQL
  • Frontend: Thymeleaf (Server-Side Rendering)
  • Architecture: MVC + REST API

📊 Preview

Database Login

View Edit

Filter New


✨ Features

  • Secure authentication with Spring Security
  • Create, update, delete and manage job applications
  • Application status workflow: APPLIED, REVIEW, INTERVIEW, REJECTED, OFFER
  • Filtering by company name and application status
  • Pagination for large data sets
  • REST API for JSON access
  • API documentation and testing with Swagger UI
  • Role-based authorization (USER / ADMIN)

🧰 Tech Stack

Backend

  • Java 17
  • Spring Boot (Web, Data JPA, Security)
  • PostgreSQL
  • Thymeleaf
  • Maven

API Documentation

  • Springdoc OpenAPI (Swagger UI)

Tools

  • Git / GitHub
  • PostgreSQL / pgAdmin
  • IntelliJ IDEA

🗂 Project Structure

jobtracker/
 ├── src/main/java/com/yigitkagankartal/jobtracker
 │   ├── controller
 │   ├── model
 │   ├── repository
 │   ├── service
 │   ├── config
 │   └── JobtrackerApplication.java
 │
 ├── src/main/resources
 │   ├── templates
 │   ├── static
 │   └── application.properties
 │
 └── pom.xml

🚀 Getting Started

This project runs with PostgreSQL and Spring Boot.

Requirements

  • JDK 17+
  • PostgreSQL
  • Maven
  • Git

Clone the project

git clone https://github.com/yigitkagankartal/Job-Tracker.git
cd Job-Tracker

PostgreSQL Setup

Create a database:

CREATE DATABASE jobtracker;

Open this file:

src/main/resources/application.properties

Configure your PostgreSQL connection:

spring.datasource.url=jdbc:postgresql://localhost:5432/jobtracker
spring.datasource.username=postgres
spring.datasource.password=YOUR_PASSWORD

spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

Run the Application

Start the project using:

mvn spring-boot:run

After startup, the application will be available at:

Web UI:
http://localhost:8080

Swagger UI:
http://localhost:8080/swagger-ui.html


Default Login Credentials

Username: admin  
Password: 1234  
Role: ADMIN

The password is stored in the database using BCrypt hashing.


REST API Endpoints

GET /api/applications
GET /api/applications/{id}
POST /api/applications
PUT /api/applications/{id}
DELETE /api/applications/{id}

Example POST request:

{
  "companyName": "Turkish Airlines",
  "position": "Backend Developer",
  "status": "INTERVIEW",
  "applicationDate": "2025-11-20",
  "notes": "Second technical interview scheduled"
}

Performance Optimization

To optimize filtering and search performance, the following fields were indexed:

  • status
  • company_name
  • application_date

Indexing strategy was validated using EXPLAIN ANALYZE and resulted in significantly faster query execution.


Future Improvements

  • Export to CSV / Excel
  • JWT authentication system
  • Analytics and statistics dashboard
  • Docker + Docker Compose setup
  • Multi-user application isolation

👤 Dev

About

Web-based application where users can track and manage their job applications, monitor different application stages, and organize their recruitment process efficiently.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors