# nolawimelese/resumebank architecture

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

- Interactive diagram: https://gitdiagram.com/nolawimelese/resumebank
- Repository: https://github.com/nolawimelese/resumebank

## Overview

ResumeBank is a local Django application for maintaining reusable resume content, choosing and ordering that content in named presets, and compiling tailored PDFs. The main workflow runs from component management through preset configuration to a live preview or a saved compile-history entry; history supports PDF and TeX downloads. The README documents the interface and compile capabilities; sampled compiler code confirms data resolution, LaTeX rendering, PDF compilation and page counting. Preset-view internals were not sampled, so their documented workspace dispatch is shown without inferring finer implementation details.

Main entry points: [`compiler/views.py`](https://github.com/nolawimelese/resumebank/blob/main/compiler/views.py) (Compile and history views), [`compiler/services.py`](https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py) (Preset data resolver), [`ResumeBank/urls.py`](https://github.com/nolawimelese/resumebank/blob/main/ResumeBank/urls.py) (Django routing), [`presets/views.py`](https://github.com/nolawimelese/resumebank/blob/main/presets/views.py) (Preset workspace)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_bank["Reusable Content"]
  node_bank_ui["Component manager<br/>[views.py]"]
  node_bank_data["Profile and content<br/>[models.py]"]
end

subgraph group_presets["Resume Presets"]
  node_preset_ui["Preset workspace<br/>[views.py]"]
  node_preset_data["Preset selections<br/>[models.py]"]
end

subgraph group_compiler["Compile And History"]
  node_compile_ui["Compile and history views<br/>[views.py]"]
  node_resolve["Preset data resolver<br/>[services.py]"]
  node_latex_template["Resume TeX template<br/>[jakes.tex.j2]"]
  node_latex_render["TeX rendering<br/>[services.py]"]
  node_page_count["PDF page count<br/>[services.py]"]
  node_history["Compile history<br/>[models.py]"]
end

subgraph group_runtime["Runtime And Storage"]
  node_routing["Django routing<br/>[urls.py]"]
  node_preview["Preview files<br/>[services.py]"]
  node_media["PDF and TeX files<br/>[services.py]"]
  node_sqlite[("SQLite database<br/>[settings.py]")]
end

node_person(("Resume editor"))
node_pdflatex["PDF compiler"]
node_browser(("Workspace browser"))

node_person -->|"uses"| node_routing
node_routing -->|"routes content"| node_bank_ui
node_routing -->|"routes presets"| node_preset_ui
node_routing -->|"routes compile"| node_compile_ui
node_bank_ui -->|"reads and writes"| node_bank_data
node_bank_data -->|"persists content"| node_sqlite
node_preset_ui -->|"saves selections"| node_preset_data
node_preset_data -->|"persists presets"| node_sqlite
node_preset_ui -->|"dispatches compile"| node_compile_ui
node_compile_ui -->|"calls compile"| node_resolve
node_resolve -->|"reads selections"| node_preset_data
node_resolve -->|"reads resume content"| node_bank_data
node_resolve -->|"supplies render data"| node_latex_render
node_latex_render -->|"renders template"| node_latex_template
node_latex_render -->|"compiles TeX"| node_pdflatex
node_pdflatex -->|"returns PDF"| node_page_count
node_compile_ui -->|"requests preview"| node_preview
node_page_count -->|"writes preview"| node_preview
node_compile_ui -->|"saves compile"| node_history
node_history -->|"stores history row"| node_sqlite
node_compile_ui -->|"attaches PDF and TeX"| node_media
node_preview -->|"serves preview PDF"| node_browser
node_media -->|"serves downloads"| node_browser

click node_routing "https://github.com/nolawimelese/resumebank/blob/main/ResumeBank/urls.py"
click node_bank_ui "https://github.com/nolawimelese/resumebank/blob/main/bank/views.py"
click node_bank_data "https://github.com/nolawimelese/resumebank/blob/main/bank/models.py"
click node_preset_ui "https://github.com/nolawimelese/resumebank/blob/main/presets/views.py"
click node_preset_data "https://github.com/nolawimelese/resumebank/blob/main/presets/models.py"
click node_compile_ui "https://github.com/nolawimelese/resumebank/blob/main/compiler/views.py"
click node_resolve "https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py"
click node_latex_template "https://github.com/nolawimelese/resumebank/blob/main/templates/latex/jakes.tex.j2"
click node_latex_render "https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py"
click node_page_count "https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py"
click node_preview "https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py"
click node_history "https://github.com/nolawimelese/resumebank/blob/main/compiler/models.py"
click node_media "https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py"
click node_sqlite "https://github.com/nolawimelese/resumebank/blob/main/ResumeBank/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_bank_ui,node_bank_data,node_browser toneBlue
class node_preset_ui,node_preset_data toneAmber
class node_compile_ui,node_resolve,node_latex_template,node_latex_render,node_page_count,node_history toneMint
class node_routing,node_preview,node_media,node_sqlite toneRose
class node_person,node_pdflatex toneIndigo
```

## Components

### Reusable Content

- [Component manager](https://github.com/nolawimelese/resumebank/blob/main/bank/views.py): `bank/views.py`
- [Profile and content](https://github.com/nolawimelese/resumebank/blob/main/bank/models.py): `bank/models.py`

### Resume Presets

- [Preset workspace](https://github.com/nolawimelese/resumebank/blob/main/presets/views.py): `presets/views.py`
- [Preset selections](https://github.com/nolawimelese/resumebank/blob/main/presets/models.py): `presets/models.py`

### Compile And History

- [Compile and history views](https://github.com/nolawimelese/resumebank/blob/main/compiler/views.py): `compiler/views.py`
- [Preset data resolver](https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py): `compiler/services.py`
- [Resume TeX template](https://github.com/nolawimelese/resumebank/blob/main/templates/latex/jakes.tex.j2): `templates/latex/jakes.tex.j2`
- [TeX rendering](https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py): `compiler/services.py`
- [PDF page count](https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py): `compiler/services.py`
- [Compile history](https://github.com/nolawimelese/resumebank/blob/main/compiler/models.py): `compiler/models.py`

### Runtime And Storage

- [Django routing](https://github.com/nolawimelese/resumebank/blob/main/ResumeBank/urls.py): `ResumeBank/urls.py`
- [Preview files](https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py): `compiler/services.py`
- [PDF and TeX files](https://github.com/nolawimelese/resumebank/blob/main/compiler/services.py): `compiler/services.py`
- [SQLite database](https://github.com/nolawimelese/resumebank/blob/main/ResumeBank/settings.py): `ResumeBank/settings.py`

### Other components

- **Resume editor**
- **PDF compiler**
- **Workspace browser**

## Connections

- Resume editor → Django routing: uses
- Django routing → Component manager: routes content
- Django routing → Preset workspace: routes presets
- Django routing → Compile and history views: routes compile
- Component manager → Profile and content: reads and writes
- Profile and content → SQLite database: persists content
- Preset workspace → Preset selections: saves selections
- Preset selections → SQLite database: persists presets
- Preset workspace → Compile and history views: dispatches compile
- Compile and history views → Preset data resolver: calls compile
- Preset data resolver → Preset selections: reads selections
- Preset data resolver → Profile and content: reads resume content
- Preset data resolver → TeX rendering: supplies render data
- TeX rendering → Resume TeX template: renders template
- TeX rendering → PDF compiler: compiles TeX
- PDF compiler → PDF page count: returns PDF
- Compile and history views → Preview files: requests preview
- PDF page count → Preview files: writes preview
- Compile and history views → Compile history: saves compile
- Compile history → SQLite database: stores history row
- Compile and history views → PDF and TeX files: attaches PDF and TeX
- Preview files → Workspace browser: serves preview PDF
- PDF and TeX files → Workspace browser: serves downloads
