# magicapple123/resumeforge architecture

> Architecture diagram of the GitHub repository magicapple123/resumeforge, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/magicapple123/resumeforge
- Repository: https://github.com/magicapple123/resumeforge

## Overview

ResumeForge is a local-first job-search and résumé workspace. The main journey runs from finding and understanding jobs, through evidence-based matching and résumé creation, to export, application tracking, and interview preparation. The frontend routes into a FastAPI backend; the inspected application assembly confirms router registration and startup database setup, while the README documents the broader product capabilities. Several service-level connections are inferred from module responsibilities and documented features; unsampled implementation details are not represented as specific call chains.

Main entry points: [`backend/app/application.py`](https://github.com/magicapple123/resumeforge/blob/main/backend/app/application.py) (API Assembly), [`frontend/src/App.tsx`](https://github.com/magicapple123/resumeforge/blob/main/frontend/src/App.tsx) (Web Application), [`backend/app/api/resumes.py`](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/resumes.py) (Résumé APIs), [`backend/app/database.py`](https://github.com/magicapple123/resumeforge/blob/main/backend/app/database.py) (Local Database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User Experience"]
  node_frontend["Web Application<br/>[App.tsx]"]
end

subgraph group_jobsearch["Job Discovery"]
  node_jobspage["Job Search<br/>[JobsPage.tsx]"]
  node_jobapi["Job APIs<br/>[jobs.py]"]
  node_jobservices["Job Analysis"]
end

subgraph group_resume["Résumé Workspace"]
  node_profilepage["Profile &amp; Facts<br/>[ProfilePage.tsx]"]
  node_profileapi["Profile APIs<br/>[profile.py]"]
  node_claims["Fact Ledger<br/>[claims.py]"]
  node_resumepage["Résumé Center<br/>[ResumesPage.tsx]"]
  node_resumeapi["Résumé APIs<br/>[resumes.py]"]
  node_resumeservices["Résumé Generation"]
  node_export["Export &amp; Privacy<br/>[export_pipeline.py]"]
end

subgraph group_career["Application &amp; Preparation"]
  node_applypage["Application Desk<br/>[ApplyPage.tsx]"]
  node_applyapi["Application APIs<br/>[apply.py]"]
  node_applyservices["Collection &amp; Apply<br/>[apply_service.py]"]
  node_browser["Dedicated Browser<br/>[browser_manager.py]"]
  node_tracker["Progress &amp; Analytics<br/>[TrackerPage.tsx]"]
  node_careerapi["Tracking APIs<br/>[tracker.py]"]
  node_interview["Interview Practice<br/>[interview.py]"]
  node_assistant["Job Assistant"]
end

subgraph group_platform["Local Platform"]
  node_backend["API Assembly<br/>[application.py]"]
  node_database[("Local Database<br/>[database.py]")]
  node_search["Global Search<br/>[search.py]"]
  node_settings["Settings &amp; Datasets<br/>[settings.py]"]
end

node_user(("Job Seeker"))

node_user -->|"uses"| node_frontend
node_frontend -->|"opens"| node_jobspage
node_frontend -->|"opens"| node_profilepage
node_frontend -->|"opens"| node_resumepage
node_frontend -->|"opens"| node_applypage
node_frontend -->|"opens"| node_tracker
node_jobspage -->|"requests jobs"| node_jobapi
node_jobapi -->|"analyzes jobs"| node_jobservices
node_profilepage -->|"loads and saves"| node_profileapi
node_profilepage -->|"manages facts"| node_claims
node_jobspage -->|"starts résumé work"| node_resumepage
node_resumepage -->|"requests generation"| node_resumeapi
node_resumeapi -->|"generates and checks"| node_resumeservices
node_resumeapi -->|"builds exports"| node_export
node_applypage -->|"starts tasks"| node_applyapi
node_applyapi -->|"dispatches tasks"| node_applyservices
node_applyservices -->|"controls browser"| node_browser
node_tracker -->|"records progress"| node_careerapi
node_careerapi -->|"reads and writes"| node_database
node_interview -->|"serves practice"| node_backend
node_assistant -.->|"serves assistant"| node_backend
node_search -->|"searches records"| node_database
node_settings -->|"configures local data"| node_database
node_backend -->|"registers routes"| node_jobapi
node_backend -->|"registers routes"| node_profileapi
node_backend -->|"registers routes"| node_resumeapi
node_backend -->|"registers routes"| node_applyapi
node_backend -->|"registers routes"| node_careerapi
node_backend -->|"initializes migrations"| node_database

click node_frontend "https://github.com/magicapple123/resumeforge/blob/main/frontend/src/App.tsx"
click node_jobspage "https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/JobsPage.tsx"
click node_jobapi "https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/jobs.py"
click node_jobservices "https://github.com/magicapple123/resumeforge/tree/main/backend/app/services/job"
click node_profilepage "https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/ProfilePage.tsx"
click node_profileapi "https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/profile.py"
click node_claims "https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/claims.py"
click node_resumepage "https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/ResumesPage.tsx"
click node_resumeapi "https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/resumes.py"
click node_resumeservices "https://github.com/magicapple123/resumeforge/tree/main/backend/app/services/resume"
click node_export "https://github.com/magicapple123/resumeforge/blob/main/backend/app/services/export_pipeline.py"
click node_applypage "https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/ApplyPage.tsx"
click node_applyapi "https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/apply.py"
click node_applyservices "https://github.com/magicapple123/resumeforge/blob/main/backend/app/services/apply/apply_service.py"
click node_browser "https://github.com/magicapple123/resumeforge/blob/main/backend/app/services/browser/browser_manager.py"
click node_tracker "https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/TrackerPage.tsx"
click node_careerapi "https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/tracker.py"
click node_interview "https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/interview.py"
click node_assistant "https://github.com/magicapple123/resumeforge/blob/main/backend/app/services/assistant/assistant_service.py"
click node_backend "https://github.com/magicapple123/resumeforge/blob/main/backend/app/application.py"
click node_database "https://github.com/magicapple123/resumeforge/blob/main/backend/app/database.py"
click node_search "https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/search.py"
click node_settings "https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/settings.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_frontend toneBlue
class node_jobspage,node_jobapi,node_jobservices toneAmber
class node_profilepage,node_profileapi,node_claims,node_resumepage,node_resumeapi,node_resumeservices,node_export toneMint
class node_applypage,node_applyapi,node_applyservices,node_browser,node_tracker,node_careerapi,node_interview,node_assistant toneRose
class node_backend,node_database,node_search,node_settings,node_user toneIndigo
```

## Components

### User Experience

- [Web Application](https://github.com/magicapple123/resumeforge/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`

### Job Discovery

- [Job Search](https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/JobsPage.tsx): `frontend/src/pages/JobsPage.tsx`
- [Job APIs](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/jobs.py): `backend/app/api/jobs.py`
- [Job Analysis](https://github.com/magicapple123/resumeforge/tree/main/backend/app/services/job): `backend/app/services/job`

### Résumé Workspace

- [Profile & Facts](https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/ProfilePage.tsx): `frontend/src/pages/ProfilePage.tsx`
- [Profile APIs](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/profile.py): `backend/app/api/profile.py`
- [Fact Ledger](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/claims.py): `backend/app/api/claims.py`
- [Résumé Center](https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/ResumesPage.tsx): `frontend/src/pages/ResumesPage.tsx`
- [Résumé APIs](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/resumes.py): `backend/app/api/resumes.py`
- [Résumé Generation](https://github.com/magicapple123/resumeforge/tree/main/backend/app/services/resume): `backend/app/services/resume`
- [Export & Privacy](https://github.com/magicapple123/resumeforge/blob/main/backend/app/services/export_pipeline.py): `backend/app/services/export_pipeline.py`

### Application & Preparation

- [Application Desk](https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/ApplyPage.tsx): `frontend/src/pages/ApplyPage.tsx`
- [Application APIs](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/apply.py): `backend/app/api/apply.py`
- [Collection & Apply](https://github.com/magicapple123/resumeforge/blob/main/backend/app/services/apply/apply_service.py): `backend/app/services/apply/apply_service.py`
- [Dedicated Browser](https://github.com/magicapple123/resumeforge/blob/main/backend/app/services/browser/browser_manager.py): `backend/app/services/browser/browser_manager.py`
- [Progress & Analytics](https://github.com/magicapple123/resumeforge/blob/main/frontend/src/pages/TrackerPage.tsx): `frontend/src/pages/TrackerPage.tsx`
- [Tracking APIs](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/tracker.py): `backend/app/api/tracker.py`
- [Interview Practice](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/interview.py): `backend/app/api/interview.py`
- [Job Assistant](https://github.com/magicapple123/resumeforge/blob/main/backend/app/services/assistant/assistant_service.py): `backend/app/services/assistant/assistant_service.py`

### Local Platform

- [API Assembly](https://github.com/magicapple123/resumeforge/blob/main/backend/app/application.py): `backend/app/application.py`
- [Local Database](https://github.com/magicapple123/resumeforge/blob/main/backend/app/database.py): `backend/app/database.py`
- [Global Search](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/search.py): `backend/app/api/search.py`
- [Settings & Datasets](https://github.com/magicapple123/resumeforge/blob/main/backend/app/api/settings.py): `backend/app/api/settings.py`

### Other components

- **Job Seeker**

## Connections

- Job Seeker → Web Application: uses
- Web Application → Job Search: opens
- Web Application → Profile & Facts: opens
- Web Application → Résumé Center: opens
- Web Application → Application Desk: opens
- Web Application → Progress & Analytics: opens
- Job Search → Job APIs: requests jobs
- Job APIs → Job Analysis: analyzes jobs
- Profile & Facts → Profile APIs: loads and saves
- Profile & Facts → Fact Ledger: manages facts
- Job Search → Résumé Center: starts résumé work
- Résumé Center → Résumé APIs: requests generation
- Résumé APIs → Résumé Generation: generates and checks
- Résumé APIs → Export & Privacy: builds exports
- Application Desk → Application APIs: starts tasks
- Application APIs → Collection & Apply: dispatches tasks
- Collection & Apply → Dedicated Browser: controls browser
- Progress & Analytics → Tracking APIs: records progress
- Tracking APIs → Local Database: reads and writes
- Interview Practice → API Assembly: serves practice
- Job Assistant → API Assembly: serves assistant
- Global Search → Local Database: searches records
- Settings & Datasets → Local Database: configures local data
- API Assembly → Job APIs: registers routes
- API Assembly → Profile APIs: registers routes
- API Assembly → Résumé APIs: registers routes
- API Assembly → Application APIs: registers routes
- API Assembly → Tracking APIs: registers routes
- API Assembly → Local Database: initializes migrations
