Overview

Application Tracker centralizes my job search: I can save postings, parse key fields (title/company/location/length/URL/posting copy), track status (Applied/Interview/Offer/Rejected), and generate tailored cover letters using a prompt pipeline. The stack is React + TypeScript (Vite) on the frontend, Express on the backend, and MySQL for persistence—containerized and routed through Traefik with TLS. It also supports importing recovered records and normalizing dates.

CI/CD & Docker Deployment

I ship both services as Docker images built by GitHub Actions and published to GHCR. Every push to main creates :sha tags; versioned releases also get :vX.Y.Z and :latest. The server deploys by pulling the new tags and restarting the stack.

Images

  • ghcr.io/santigf12/application-tracker-frontend
  • ghcr.io/santigf12/application-tracker-backend

Architecture at a Glance

  • Frontend: React + TypeScript, Redux for state, Axios for API, Luxon for dates
  • Backend: Node.js + Express, REST API, input validation, rate-limit on AI endpoints
  • DB: MySQL, normalized tables for applications, groups, users
  • Infra: Docker Compose (frontend + backend + DB), Traefik for HTTPS, dev/prod profiles
  • Extras: Web scraper helper (extracts title/company/location/length/posting/URL), PDF bundle export (resume + CL)

Updated: