Skip to content

Latest commit

Β 

History

71 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

JobTrack β€” AI-Powered Job Application Tracker

Manifest V3 Spring Boot React TypeScript Java PostgreSQL Tailwind CSS

JobTrack is an intelligent, full-stack browser extension and web dashboard platform engineered to help software developers and job seekers discover, capture, track, and analyze job applications directly from job boards (LinkedIn, Indeed, Glassdoor, company career portals) with minimal manual data entry.


πŸš€ Live Production & Direct Download

Service Status Link
Web Dashboard 🟒 Live https://jobtrack.antideploy.com
Backend REST API 🟒 Live https://jobtrack-api.antideploy.com
Swagger UI Docs 🟒 Live https://jobtrack-api.antideploy.com/swagger-ui/index.html
Browser Extension ZIP πŸ“¦ v1.0.0 Direct Download (.zip)
Extension Showcase 🌐 Live https://jobtrack.antideploy.com/extension

⚑ 3-Step Quick Install for Chrome / Edge / Brave

  1. Download & Extract: Download jobtrack-extension.zip and extract it to a permanent folder.
  2. Open Extensions: In your browser (Chrome, Edge, Brave, Opera), navigate to chrome://extensions (or edge://extensions) and toggle Developer mode ON (top-right).
  3. Load Unpacked: Click Load unpacked (top-left) and select the extracted folder. Pin the JobTrack icon to your toolbar!

πŸ›οΈ System Architecture

High-Level Interaction Diagram

flowchart TD
    subgraph Clients[" Client Layer "]
        Ext["Chrome Extension (Manifest V3)
React + TypeScript + Popup"]
        Web["Web Dashboard
React + TypeScript + Vite + Tailwind"]
    end

    subgraph Server[" Backend REST API (Spring Boot 3.x) "]
        Controller["REST Controllers
/api/v1/"]
        Sec["Spring Security
JWT Filter & RBAC"]
        Val["Validation & Deduplication Layer
Normalized URL Matching"]
        Service["Business Services
App, Job, Interview, Analytics"]
        Repo["Spring Data JPA Repositories"]
    end

    subgraph Storage[" Persistence & AI "]
        DB[("PostgreSQL 16
Normalized Data Store")]
        AI["AI Provider (Optional)
Skill Extraction & Match Score"]
    end

    Ext -->|HTTPS / REST API| Controller
    Web -->|HTTPS / REST API| Controller
    Controller --> Sec --> Val --> Service --> Repo
    Repo --> DB
    Service -.-> AI
Loading

Text Architectural Overview

                          JOBTRACK SYSTEM
                                 β”‚
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β–Ό                                     β–Ό
       CHROME EXTENSION                       WEB DASHBOARD
     (React + TS + Vite)                   (React + TS + Vite)
     (Manifest V3 Popup &                   (Kanban, Analytics,
       Content Scripts)                      Application List)
              β”‚                                     β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                 β”‚ HTTPS (REST API)
                                 β–Ό
                        SPRING BOOT BACKEND
                     (Java 21/22 + Spring Boot 3)
                     (Auth, Security, Validation,
                      Deduplication, Analytics)
                                 β”‚
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β–Ό                         β–Ό
               POSTGRESQL                AI SERVICES
            (Docker / Cloud)          (Resume matching &
                                      skill analysis)

πŸ“‚ Repository Structure

jobtrack/
β”œβ”€β”€ extension/                  # Chrome Extension (Manifest V3)
β”‚   β”œβ”€β”€ public/                 # Extension icons and build-ready manifest.json
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ background/         # Background service worker (lifecycle & messaging)
β”‚   β”‚   β”œβ”€β”€ content/            # Isolated content scripts
β”‚   β”‚   β”‚   └── extractors/     # Modular site adapters (LinkedIn, Indeed, Generic)
β”‚   β”‚   β”œβ”€β”€ popup/              # Fast capture popup interface (React + Tailwind)
β”‚   β”‚   └── types/              # Normalized extraction data contracts
β”‚   β”œβ”€β”€ manifest.json           # Manifest V3 configuration
β”‚   β”œβ”€β”€ package.json            # Extension dependencies
β”‚   └── vite.config.ts          # Multi-entry rollup build for MV3
β”‚
β”œβ”€β”€ web/                        # Web Management Dashboard
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/         # Reusable UI widgets, modals, Kanban columns
β”‚   β”‚   β”œβ”€β”€ pages/              # Dashboard, Applications, Interviews, Analytics
β”‚   β”‚   β”œβ”€β”€ layouts/            # App shell, sidebar navigation, top header
β”‚   β”‚   β”œβ”€β”€ services/           # Axios REST API client & JWT token interceptors
β”‚   β”‚   └── types/              # Domain models (Job, Application, User)
β”‚   β”œβ”€β”€ package.json            # Frontend dependencies
β”‚   β”œβ”€β”€ tailwind.config.js      # Custom theme styling
β”‚   └── vite.config.ts          # Dashboard dev server & production bundler
β”‚
β”œβ”€β”€ backend/                    # Spring Boot 3.x REST API
β”‚   β”œβ”€β”€ src/main/java/com/jobtrack/
β”‚   β”‚   β”œβ”€β”€ config/             # Security, CORS, OpenAPI Swagger config
β”‚   β”‚   β”œβ”€β”€ controller/         # REST Controllers (/api/v1/auth, /api/v1/applications)
β”‚   β”‚   β”œβ”€β”€ dto/                # Request & Response Data Transfer Objects
β”‚   β”‚   β”œβ”€β”€ entity/             # JPA Entities (User, Job, Application, Interview)
β”‚   β”‚   β”œβ”€β”€ enums/              # Controlled domain enums (Status, Type, Source)
β”‚   β”‚   β”œβ”€β”€ exception/          # Global Exception Handler & API error envelopes
β”‚   β”‚   β”œβ”€β”€ repository/         # Spring Data JPA repositories & custom queries
β”‚   β”‚   β”œβ”€β”€ security/           # JWT token provider & UserDetails implementation
β”‚   β”‚   └── service/            # Core business logic, deduplication & ownership rules
β”‚   β”œβ”€β”€ src/main/resources/
β”‚   β”‚   └── application.yml     # Centralized backend & database settings
β”‚   β”œβ”€β”€ mvnw.ps1 / mvnw         # Cross-platform Maven wrapper
β”‚   └── pom.xml                 # Maven dependencies & build plugins
β”‚
β”œβ”€β”€ database/                   # Database Infrastructure
β”‚   β”œβ”€β”€ seed/01-init.sql        # PostgreSQL initial schema definition & indexes
β”‚   └── README.md               # Database operational guide
β”‚
β”œβ”€β”€ docs/                       # Comprehensive Architecture & API Documentation
β”‚   β”œβ”€β”€ PRD.md                  # Detailed Product Requirements Document
β”‚   β”œβ”€β”€ ARCHITECTURE.md         # System Architecture & Layer Boundaries
β”‚   β”œβ”€β”€ API.md                  # REST API v1 Contracts & Envelopes
β”‚   β”œβ”€β”€ DATABASE.md             # ER Diagram & Table Dictionaries
β”‚   β”œβ”€β”€ SECURITY.md             # Security Rules & JWT Lifecycle
β”‚   └── DEPLOYMENT.md           # Production Deployment Guide
β”‚
β”œβ”€β”€ docker-compose.yml          # PostgreSQL containerized development environment
β”œβ”€β”€ .env.example                # Environment variables template
β”œβ”€β”€ .gitignore                  # Production Git ignore rules
└── README.md                   # Project documentation

πŸ”„ Application Lifecycle Stages

stateDiagram-v2
    [*] --> SAVED : Discovered on Web
    SAVED --> APPLIED : Application Submitted
    APPLIED --> SCREENING : Recruiter Contact
    SCREENING --> INTERVIEW : Technical / HR Rounds
    INTERVIEW --> OFFER : Job Offer Extended
    OFFER --> ACCEPTED : Offer Accepted
    
    SAVED --> REJECTED
    APPLIED --> REJECTED
    SCREENING --> REJECTED
    INTERVIEW --> REJECTED
    OFFER --> REJECTED
    
    SAVED --> WITHDRAWN
    APPLIED --> WITHDRAWN
    SCREENING --> WITHDRAWN
    INTERVIEW --> WITHDRAWN
Loading

πŸš€ Quick Start Guide

Prerequisites

  • Node.js: v20+ (v24 recommended)
  • Java: JDK 21+ (Java 22 verified)
  • Docker: Docker Desktop (for PostgreSQL)

1. Start the PostgreSQL Database

docker compose up -d

Healthcheck verifies PostgreSQL is ready on port 5432 with database jobtrack_db.


2. Start the Backend API (Spring Boot)

cd backend
# Windows PowerShell
.\mvnw.ps1 spring-boot:run

# Linux / macOS / Bash
./mvnw spring-boot:run
  • The API starts at: http://localhost:8080
  • Swagger UI Docs: http://localhost:8080/swagger-ui.html
  • Health Endpoint: http://localhost:8080/actuator/health

3. Start the Web Dashboard (React)

cd web
npm install
npm run dev
  • The Web Dashboard is accessible at http://localhost:5173.

4. Build and Load the Chrome Extension

cd extension
npm install
npm run build
  1. Open Google Chrome and navigate to chrome://extensions.
  2. Enable Developer mode in the top-right corner.
  3. Click Load unpacked and select the extension/dist directory.

πŸ”’ Security & Engineering Best Practices

  1. Zero Client Trust: All user authorization, input validation, and deduplication are strictly enforced on the backend. Client payloads never dictate userId.
  2. Modular Extractor Interface: Extractor adapters (LinkedInExtractor, IndeedExtractor, CompanyCareerExtractor, GenericExtractor) implement JobExtractor with resilient fallback to JSON-LD structured data and OpenGraph tags.
  3. Safe Secrets: No database passwords, JWT secrets, or external AI keys are exposed in client bundles.
  4. Clean Code & Conventional Commits: Layered separation between Presentation (React), Business Logic (Spring Boot Services), and Persistence (JPA + PostgreSQL).

About

Full-stack AI-ready job application tracker featuring a Chrome Extension (Manifest V3), React & Vite web dashboard, and Spring Boot 3 + PostgreSQL REST API.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages