How sanimanqezu/job-application-tracker works
Job Application Tracker supports authenticated job-search tracking, interview scheduling, status progression, dashboards, and live South African job discovery. The primary workflow is: a user browses new openings, records an application, then tracks its status and interviews through the dashboard and board. The graph follows documented API responsibilities and sampled service/repository calls; some discovery and frontend wiring is documented but not sampled, so uncertain internal call links are omitted.
Main entry points: api.ts HTTP API client · DiscoveryController.java Discovery endpoints · UserRepository.java User repository · layout.tsx Next.js experience
Components 34
Web experience
- Next.js experience
frontend/src/app/layout.tsx - Applications views
frontend/src/app/applications/page.tsx - Kanban board
frontend/src/app/board/page.tsx - Dashboard
frontend/src/app/dashboard/page.tsx - Discover jobs
frontend/src/app/discover/page.tsx - HTTP API client
frontend/src/lib/api.ts - Login and register
frontend/src/app/login/page.tsx - Application state
frontend/src/store/applicationStore.ts
Identity and API
- Auth endpoints
backend/src/main/java/com/sanele/jobtracker/controller/AuthController.java - Authentication service
backend/src/main/java/com/sanele/jobtracker/service/AuthService.java - JWT security
backend/src/main/java/com/sanele/jobtracker/security/SecurityConfig.java
Application tracking
- Application endpoints
backend/src/main/java/com/sanele/jobtracker/controller/JobApplicationController.java - Application service
backend/src/main/java/com/sanele/jobtracker/service/JobApplicationService.java - Interview endpoints
backend/src/main/java/com/sanele/jobtracker/controller/InterviewController.java - Interview service
backend/src/main/java/com/sanele/jobtracker/service/InterviewService.java - Dashboard endpoint
backend/src/main/java/com/sanele/jobtracker/controller/DashboardController.java - Dashboard statistics
backend/src/main/java/com/sanele/jobtracker/service/DashboardService.java
Job discovery
- Discovery endpoints
backend/src/main/java/com/sanele/jobtracker/controller/DiscoveryController.java - Job scan and matching
backend/src/main/java/com/sanele/jobtracker/scan/JobScanService.java - ATS board client
backend/src/main/java/com/sanele/jobtracker/ats/AtsClient.java - Company harvesting
backend/src/main/java/com/sanele/jobtracker/scan/CompanyHarvester.java - Company ingestion
backend/src/main/java/com/sanele/jobtracker/scan/CompanyIngestor.java - Company candidate queue
backend/src/main/java/com/sanele/jobtracker/scan/CompanyQueue.java - Company catalog
backend/src/main/java/com/sanele/jobtracker/catalog/CompanyCatalog.java - Standalone scanner
scanner/scan.mjs
Persistence and integrations
- Application repository
backend/src/main/java/com/sanele/jobtracker/repository/JobApplicationRepository.java - Interview repository
backend/src/main/java/com/sanele/jobtracker/repository/InterviewRepository.java - Scanned jobs repository
backend/src/main/java/com/sanele/jobtracker/repository/ScannedJobRepository.java - Company repository
backend/src/main/java/com/sanele/jobtracker/repository/CompanyRepository.java - User repository
backend/src/main/java/com/sanele/jobtracker/repository/UserRepository.java - PostgreSQL
Other components
- Job seeker
- ATS providers
- Adzuna feed
Connections 48
- Job seeker → Next.js experience: uses
- Next.js experience → Applications views: navigates
- Next.js experience → Kanban board: navigates
- Next.js experience → Dashboard: navigates
- Next.js experience → Discover jobs: navigates
- Login and register → HTTP API client: submits credentials
- Applications views → HTTP API client: requests applications
- Kanban board → HTTP API client: updates status
- Dashboard → HTTP API client: requests statistics
- Discover jobs → HTTP API client: requests openings
- Applications views → Application state: updates state
- HTTP API client → Auth endpoints: sends auth requests
- HTTP API client → Application endpoints: sends application requests
- HTTP API client → Interview endpoints: sends interview requests
- HTTP API client → Dashboard endpoint: requests dashboard
- HTTP API client → Discovery endpoints: requests discovery
- Auth endpoints → Authentication service: delegates auth
- Authentication service → User repository: reads and saves users
- Authentication service → JWT security: issues JWT
- JWT security → User repository: loads users
- Application endpoints → Application service: delegates CRUD
- Application service → User repository: resolves account
- Application service → Application repository: reads and writes
- Interview endpoints → Interview service: delegates interviews
- Interview service → User repository: resolves account
- Interview service → Application repository: checks application
- Interview service → Interview repository: reads and writes
- Dashboard endpoint → Dashboard statistics: requests statistics
- Dashboard statistics → User repository: resolves account
- Dashboard statistics → Application repository: counts applications
- Discovery endpoints → Job scan and matching: starts scans
- Discovery endpoints → Scanned jobs repository: filters openings
- Discovery endpoints → Company repository: reads company counts
- Discovery endpoints → Application service: records application
- Discovery endpoints → Company harvesting: checks harvest status
- Job scan and matching → ATS board client: fetches boards
- Job scan and matching → Company repository: loads and updates companies
- Job scan and matching → Scanned jobs repository: upserts scanned jobs
- ATS board client → ATS providers: fetches listings
- Company harvesting → Company catalog: discovers companies
- Company catalog → Company candidate queue: queues candidates
- Company ingestion → Company candidate queue: dequeues candidates
- Company ingestion → Company repository: persists companies
- Standalone scanner → ATS providers: scans ATS boards
- Standalone scanner → Adzuna feed: imports optional feed
- User repository → PostgreSQL: reads and writes
- Application repository → PostgreSQL: reads and writes
- Interview repository → PostgreSQL: reads and writes