# atanasios/cv_builder architecture

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

- Interactive diagram: https://gitdiagram.com/atanasios/cv_builder
- Repository: https://github.com/atanasios/cv_builder

## Overview

This is a minimal CV browser, not yet a full CV editor: the current workflow lists existing PDF CVs and previews a selected file. The Create New button is present but has no behavior. The server’s configuration file and CV folder are referenced in source but absent from the supplied tree, so their locations and setup are uncertain; no further editing, saving, or upload workflow is evidenced.

Main entry points: [`server/index.ts`](https://github.com/atanasios/cv_builder/blob/main/server/index.ts) (Express API), [`src/App.tsx`](https://github.com/atanasios/cv_builder/blob/main/src/App.tsx) (CV browser), [`src/lib/extractCv.ts`](https://github.com/atanasios/cv_builder/blob/main/src/lib/extractCv.ts) (CV list fetch), [`src/main.tsx`](https://github.com/atanasios/cv_builder/blob/main/src/main.tsx) (React bootstrap)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Browser client"]
  node_bootstrap["React bootstrap<br/>[main.tsx]"]
  node_app["CV browser<br/>[App.tsx]"]
  node_extract["CV list fetch<br/>[extractCv.ts]"]
end

subgraph group_server["CV server"]
  node_api["Express API<br/>[index.ts]"]
end

subgraph group_storage["CV files"]
  node_pdfs["CV PDF files"]
end

node_user(("User"))

node_user -->|"views"| node_app
node_bootstrap -->|"renders"| node_app
node_app -->|"requests list"| node_extract
node_extract -->|"fetches list"| node_api
node_api -->|"lists files"| node_pdfs
node_api -->|"returns list"| node_extract
node_extract -->|"returns CVs"| node_app
node_app -->|"requests preview"| node_api
node_api -->|"serves PDF"| node_pdfs

click node_bootstrap "https://github.com/atanasios/cv_builder/blob/main/src/main.tsx"
click node_app "https://github.com/atanasios/cv_builder/blob/main/src/App.tsx"
click node_extract "https://github.com/atanasios/cv_builder/blob/main/src/lib/extractCv.ts"
click node_api "https://github.com/atanasios/cv_builder/blob/main/server/index.ts"

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_bootstrap,node_app,node_extract,node_user toneBlue
class node_api toneAmber
class node_pdfs toneMint
```

## Components

### Browser client

- [React bootstrap](https://github.com/atanasios/cv_builder/blob/main/src/main.tsx): `src/main.tsx`
- [CV browser](https://github.com/atanasios/cv_builder/blob/main/src/App.tsx): `src/App.tsx`
- [CV list fetch](https://github.com/atanasios/cv_builder/blob/main/src/lib/extractCv.ts): `src/lib/extractCv.ts`

### CV server

- [Express API](https://github.com/atanasios/cv_builder/blob/main/server/index.ts): `server/index.ts`

### CV files

- **CV PDF files**

### Other components

- **User**

## Connections

- User → CV browser: views
- React bootstrap → CV browser: renders
- CV browser → CV list fetch: requests list
- CV list fetch → Express API: fetches list
- Express API → CV PDF files: lists files
- Express API → CV list fetch: returns list
- CV list fetch → CV browser: returns CVs
- CV browser → Express API: requests preview
- Express API → CV PDF files: serves PDF
