# fuerys/resume-mill architecture

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

- Interactive diagram: https://gitdiagram.com/fuerys/resume-mill
- Repository: https://github.com/fuerys/resume-mill

## Overview

Resume Mill is a Next.js resume and portfolio builder. Users enter profile details and career sections, preview them in selectable resume layouts, then export a portfolio ZIP; drafts are saved in browser local storage. The tree and excerpts support the builder, template exploration, site pages, donation UI, and two API routes, but do not show the API routes’ callers or backend integrations. The graph focuses on the evidenced builder and template flow; links among API services and UI are omitted where wiring is not shown.

Main entry points: [`src/app/builder/page.jsx`](https://github.com/fuerys/resume-mill/blob/master/src/app/builder/page.jsx) (Builder Workflow), [`src/components/builder/ResumePreview.jsx`](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ResumePreview.jsx) (Live Preview), [`src/app/templates/resume/page.jsx`](https://github.com/fuerys/resume-mill/blob/master/src/app/templates/resume/page.jsx) (Resume Explorer), [`src/components/builder/GroupDeleteModal.jsx`](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/GroupDeleteModal.jsx) (Group Delete Dialog)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_builder["Resume Builder"]
  node_builder_page["Builder Workflow<br/>[page.jsx]"]
  node_progress["Step Navigation"]
  node_profile["Profile Form"]
  node_experience["Experience Form<br/>[ExperienceForm.jsx]"]
  node_projects["Projects Form<br/>[ProjectsForm.jsx]"]
  node_education["Education Form<br/>[EducationForm.jsx]"]
  node_skills["Skills and Extras"]
  node_group_header["Group Editor<br/>[GroupHeader.jsx]"]
  node_group_delete["Group Delete Dialog"]
  node_preview["Live Preview<br/>[ResumePreview.jsx]"]
  node_partitioner["Page Partitioning<br/>[pagePartitioner.js]"]
  node_export["Portfolio ZIP Export<br/>[zipGenerator.js]"]
  node_export_panel["Export Panel<br/>[ExportPanel.jsx]"]
end

subgraph group_templates["Resume Templates"]
  node_templates_home["Template Gallery<br/>[page.jsx]"]
  node_portfolio_template["Portfolio Example<br/>[page.jsx]"]
  node_exploration["Resume Explorer<br/>[page.jsx]"]
  node_template_data["Example Resume Data<br/>[mockData.js]"]
  node_modern["Modern Layout<br/>[Modern_Page.jsx]"]
  node_elegant["Elegant Layout<br/>[Elegant_Page.jsx]"]
  node_creative["Creative Layout<br/>[Creative_Page.jsx]"]
  node_timeline["Timeline Layout<br/>[Timeline_Page.jsx]"]
  node_helpers["Template Helpers<br/>[templateHelpers.js]"]
end

subgraph group_site["Public Site"]
  node_home["Home Page<br/>[page.jsx]"]
  node_global["Global Shell<br/>[layout.jsx]"]
  node_header["Navigation<br/>[Header.jsx]"]
  node_donation["Donation UI<br/>[DonationModal.jsx]"]
end

subgraph group_services["API Services"]
  node_optimize_api["Optimize API<br/>[route.js]"]
  node_stats_api["Stats API<br/>[route.js]"]
end

node_visitor(("Visitor"))

node_visitor -->|"opens"| node_home
node_visitor -->|"builds resume"| node_builder_page
node_global -->|"renders"| node_header
node_home -->|"renders"| node_donation
node_builder_page -->|"renders"| node_donation
node_visitor -->|"browses layouts"| node_exploration
node_exploration -->|"previews"| node_modern
node_exploration -->|"previews"| node_elegant
node_exploration -->|"previews"| node_creative
node_exploration -->|"previews"| node_timeline
node_exploration -->|"uses examples"| node_template_data
node_builder_page -->|"renders"| node_progress
node_builder_page -->|"renders"| node_profile
node_builder_page -->|"renders"| node_experience
node_builder_page -->|"renders"| node_projects
node_builder_page -->|"renders"| node_education
node_builder_page -->|"renders"| node_skills
node_experience -->|"renders"| node_group_header
node_experience -->|"renders"| node_group_delete
node_projects -->|"renders"| node_group_header
node_projects -->|"renders"| node_group_delete
node_education -->|"renders"| node_group_header
node_education -->|"renders"| node_group_delete
node_skills -->|"renders"| node_group_delete
node_builder_page -->|"renders"| node_preview
node_preview -->|"selects layout"| node_modern
node_preview -->|"selects layout"| node_elegant
node_preview -->|"selects layout"| node_creative
node_preview -->|"selects layout"| node_timeline
node_preview -->|"partitions pages"| node_partitioner
node_creative -->|"groups sections"| node_helpers
node_timeline -->|"uses icons"| node_helpers
node_builder_page -->|"generates ZIP"| node_export
node_builder_page -->|"renders"| node_export_panel
node_visitor -.->|"requests"| node_optimize_api
node_visitor -.->|"requests"| node_stats_api

click node_home "https://github.com/fuerys/resume-mill/blob/master/src/app/page.jsx"
click node_global "https://github.com/fuerys/resume-mill/blob/master/src/app/layout.jsx"
click node_header "https://github.com/fuerys/resume-mill/blob/master/src/components/Header.jsx"
click node_donation "https://github.com/fuerys/resume-mill/blob/master/src/components/DonationModal.jsx"
click node_templates_home "https://github.com/fuerys/resume-mill/blob/master/src/app/templates/page.jsx"
click node_portfolio_template "https://github.com/fuerys/resume-mill/blob/master/src/app/templates/portfolio/page.jsx"
click node_exploration "https://github.com/fuerys/resume-mill/blob/master/src/app/templates/resume/page.jsx"
click node_template_data "https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/mockData.js"
click node_modern "https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/Modern_Page.jsx"
click node_elegant "https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/Elegant_Page.jsx"
click node_creative "https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/Creative_Page.jsx"
click node_timeline "https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/Timeline_Page.jsx"
click node_helpers "https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/templateHelpers.js"
click node_builder_page "https://github.com/fuerys/resume-mill/blob/master/src/app/builder/page.jsx"
click node_progress "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ResumeBuildProgressNav.jsx"
click node_profile "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/PersonalInfoForm.jsx"
click node_experience "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ExperienceForm.jsx"
click node_projects "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ProjectsForm.jsx"
click node_education "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/EducationForm.jsx"
click node_skills "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/SkillsLanguagesCertificationsForm.jsx"
click node_group_header "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/GroupHeader.jsx"
click node_group_delete "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/GroupDeleteModal.jsx"
click node_preview "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ResumePreview.jsx"
click node_partitioner "https://github.com/fuerys/resume-mill/blob/master/src/utils/pagePartitioner.js"
click node_export "https://github.com/fuerys/resume-mill/blob/master/src/utils/zipGenerator.js"
click node_export_panel "https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ExportPanel.jsx"
click node_optimize_api "https://github.com/fuerys/resume-mill/blob/master/src/app/api/optimize/route.js"
click node_stats_api "https://github.com/fuerys/resume-mill/blob/master/src/app/api/stats/route.js"

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_builder_page,node_progress,node_profile,node_experience,node_projects,node_education,node_skills,node_group_header,node_group_delete,node_preview,node_partitioner,node_export,node_export_panel toneBlue
class node_templates_home,node_portfolio_template,node_exploration,node_template_data,node_modern,node_elegant,node_creative,node_timeline,node_helpers toneAmber
class node_home,node_global,node_header,node_donation toneMint
class node_optimize_api,node_stats_api toneRose
class node_visitor toneIndigo
```

## Components

### Resume Builder

- [Builder Workflow](https://github.com/fuerys/resume-mill/blob/master/src/app/builder/page.jsx): `src/app/builder/page.jsx`
- [Step Navigation](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ResumeBuildProgressNav.jsx): `src/components/builder/ResumeBuildProgressNav.jsx`
- [Profile Form](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/PersonalInfoForm.jsx): `src/components/builder/PersonalInfoForm.jsx`
- [Experience Form](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ExperienceForm.jsx): `src/components/builder/ExperienceForm.jsx`
- [Projects Form](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ProjectsForm.jsx): `src/components/builder/ProjectsForm.jsx`
- [Education Form](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/EducationForm.jsx): `src/components/builder/EducationForm.jsx`
- [Skills and Extras](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/SkillsLanguagesCertificationsForm.jsx): `src/components/builder/SkillsLanguagesCertificationsForm.jsx`
- [Group Editor](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/GroupHeader.jsx): `src/components/builder/GroupHeader.jsx`
- [Group Delete Dialog](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/GroupDeleteModal.jsx): `src/components/builder/GroupDeleteModal.jsx`
- [Live Preview](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ResumePreview.jsx): `src/components/builder/ResumePreview.jsx`
- [Page Partitioning](https://github.com/fuerys/resume-mill/blob/master/src/utils/pagePartitioner.js): `src/utils/pagePartitioner.js`
- [Portfolio ZIP Export](https://github.com/fuerys/resume-mill/blob/master/src/utils/zipGenerator.js): `src/utils/zipGenerator.js`
- [Export Panel](https://github.com/fuerys/resume-mill/blob/master/src/components/builder/ExportPanel.jsx): `src/components/builder/ExportPanel.jsx`

### Resume Templates

- [Template Gallery](https://github.com/fuerys/resume-mill/blob/master/src/app/templates/page.jsx): `src/app/templates/page.jsx`
- [Portfolio Example](https://github.com/fuerys/resume-mill/blob/master/src/app/templates/portfolio/page.jsx): `src/app/templates/portfolio/page.jsx`
- [Resume Explorer](https://github.com/fuerys/resume-mill/blob/master/src/app/templates/resume/page.jsx): `src/app/templates/resume/page.jsx`
- [Example Resume Data](https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/mockData.js): `src/components/Templates/mockData.js`
- [Modern Layout](https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/Modern_Page.jsx): `src/components/Templates/resume/Modern_Page.jsx`
- [Elegant Layout](https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/Elegant_Page.jsx): `src/components/Templates/resume/Elegant_Page.jsx`
- [Creative Layout](https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/Creative_Page.jsx): `src/components/Templates/resume/Creative_Page.jsx`
- [Timeline Layout](https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/Timeline_Page.jsx): `src/components/Templates/resume/Timeline_Page.jsx`
- [Template Helpers](https://github.com/fuerys/resume-mill/blob/master/src/components/Templates/resume/templateHelpers.js): `src/components/Templates/resume/templateHelpers.js`

### Public Site

- [Home Page](https://github.com/fuerys/resume-mill/blob/master/src/app/page.jsx): `src/app/page.jsx`
- [Global Shell](https://github.com/fuerys/resume-mill/blob/master/src/app/layout.jsx): `src/app/layout.jsx`
- [Navigation](https://github.com/fuerys/resume-mill/blob/master/src/components/Header.jsx): `src/components/Header.jsx`
- [Donation UI](https://github.com/fuerys/resume-mill/blob/master/src/components/DonationModal.jsx): `src/components/DonationModal.jsx`

### API Services

- [Optimize API](https://github.com/fuerys/resume-mill/blob/master/src/app/api/optimize/route.js): `src/app/api/optimize/route.js`
- [Stats API](https://github.com/fuerys/resume-mill/blob/master/src/app/api/stats/route.js): `src/app/api/stats/route.js`

### Other components

- **Visitor**

## Connections

- Visitor → Home Page: opens
- Visitor → Builder Workflow: builds resume
- Global Shell → Navigation: renders (evidence: `src/app/layout.jsx`)
- Home Page → Donation UI: renders (evidence: `src/app/page.jsx`)
- Builder Workflow → Donation UI: renders (evidence: `src/app/builder/page.jsx`)
- Visitor → Resume Explorer: browses layouts
- Resume Explorer → Modern Layout: previews (evidence: `src/app/templates/resume/page.jsx`)
- Resume Explorer → Elegant Layout: previews (evidence: `src/app/templates/resume/page.jsx`)
- Resume Explorer → Creative Layout: previews (evidence: `src/app/templates/resume/page.jsx`)
- Resume Explorer → Timeline Layout: previews (evidence: `src/app/templates/resume/page.jsx`)
- Resume Explorer → Example Resume Data: uses examples (evidence: `src/app/templates/resume/page.jsx`)
- Builder Workflow → Step Navigation: renders (evidence: `src/app/builder/page.jsx`)
- Builder Workflow → Profile Form: renders (evidence: `src/app/builder/page.jsx`)
- Builder Workflow → Experience Form: renders (evidence: `src/app/builder/page.jsx`)
- Builder Workflow → Projects Form: renders (evidence: `src/app/builder/page.jsx`)
- Builder Workflow → Education Form: renders (evidence: `src/app/builder/page.jsx`)
- Builder Workflow → Skills and Extras: renders (evidence: `src/app/builder/page.jsx`)
- Experience Form → Group Editor: renders (evidence: `src/components/builder/ExperienceForm.jsx`)
- Experience Form → Group Delete Dialog: renders (evidence: `src/components/builder/ExperienceForm.jsx`)
- Projects Form → Group Editor: renders (evidence: `src/components/builder/ProjectsForm.jsx`)
- Projects Form → Group Delete Dialog: renders (evidence: `src/components/builder/ProjectsForm.jsx`)
- Education Form → Group Editor: renders (evidence: `src/components/builder/EducationForm.jsx`)
- Education Form → Group Delete Dialog: renders (evidence: `src/components/builder/EducationForm.jsx`)
- Skills and Extras → Group Delete Dialog: renders (evidence: `src/components/builder/SkillsLanguagesCertificationsForm.jsx`)
- Builder Workflow → Live Preview: renders (evidence: `src/app/builder/page.jsx`)
- Live Preview → Modern Layout: selects layout (evidence: `src/components/builder/ResumePreview.jsx`)
- Live Preview → Elegant Layout: selects layout (evidence: `src/components/builder/ResumePreview.jsx`)
- Live Preview → Creative Layout: selects layout (evidence: `src/components/builder/ResumePreview.jsx`)
- Live Preview → Timeline Layout: selects layout (evidence: `src/components/builder/ResumePreview.jsx`)
- Live Preview → Page Partitioning: partitions pages (evidence: `src/components/builder/ResumePreview.jsx`)
- Creative Layout → Template Helpers: groups sections (evidence: `src/components/Templates/resume/Creative_Page.jsx`)
- Timeline Layout → Template Helpers: uses icons (evidence: `src/components/Templates/resume/Timeline_Page.jsx`)
- Builder Workflow → Portfolio ZIP Export: generates ZIP (evidence: `src/app/builder/page.jsx`)
- Builder Workflow → Export Panel: renders (evidence: `src/app/builder/page.jsx`)
- Visitor → Optimize API: requests
- Visitor → Stats API: requests
