# fraboulanger/hebreu architecture

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

- Interactive diagram: https://gitdiagram.com/fraboulanger/hebreu
- Repository: https://github.com/fraboulanger/hebreu

## Overview

This repository is a French-language Hebrew-bible learning site: its main product is a browsable collection of grammar resources, biblical topics, and related documents. The visible generation workflow traverses the Documents tree to create HTML pages; separate scripts generate a table of contents and JSON metadata, while HTML formatting and browser list behavior support presentation. The README identifies the published site, but does not document how it is built or served. Relationships below are limited to explicit excerpts or README statements; unsampled wiring is omitted.

Main entry points: [`Documents`](https://github.com/fraboulanger/hebreu/tree/main/Documents) (Document tree), [`prog/genereSiteFrancis.py`](https://github.com/fraboulanger/hebreu/blob/main/prog/genereSiteFrancis.py) (Page generator), [`prog/CreeJson.py`](https://github.com/fraboulanger/hebreu/blob/main/prog/CreeJson.py) (JSON metadata), [`prog/genereTDM.py`](https://github.com/fraboulanger/hebreu/blob/main/prog/genereTDM.py) (Contents generator)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_content["Learning content"]
  node_grammar["Hebrew grammar"]
  node_topics["Biblical themes"]
  node_newtestament["New Testament"]
  node_pathways["Study documents"]
end

subgraph group_generation["Site generation"]
  node_documents["Document tree"]
  node_sitegenerator["Page generator"]
  node_jsonmetadata["JSON metadata<br/>[CreeJson.py]"]
  node_pdfmetadata["PDF-named metadata tool<br/>[CreePDF.py]"]
  node_tocgenerator["Contents generator<br/>[genereTDM.py]"]
  node_htmloutput["Generated HTML"]
end

subgraph group_presentation["Navigation and presentation"]
  node_htmlformatter["HTML formatter<br/>[mefHTML.py]"]
  node_listbehavior["Collapsible lists<br/>[jsLists.js]"]
  node_copierlists["Copied list script<br/>[jsLists.js]"]
end

subgraph group_delivery["Published site"]
  node_published["Published site"]
end

node_reader(("Reader"))

node_sitegenerator -->|"traverses"| node_documents
node_sitegenerator -->|"writes pages"| node_htmloutput
node_tocgenerator -->|"scans tree"| node_documents
node_tocgenerator -->|"writes contents"| node_htmloutput
node_jsonmetadata -->|"scans tree"| node_documents
node_jsonmetadata -.->|"similar implementation"| node_pdfmetadata
node_reader -->|"reads"| node_published

click node_grammar "https://github.com/fraboulanger/hebreu/tree/main/Documents/Grammaire%20Hebraique"
click node_topics "https://github.com/fraboulanger/hebreu/tree/main/Documents/Mots%20et%20Themes%20bibliques"
click node_newtestament "https://github.com/fraboulanger/hebreu/tree/main/Documents/Quelques%20promenades%20dans%20le%20'nouveau%20testament'"
click node_pathways "https://github.com/fraboulanger/hebreu/tree/main/Documents/En%20empruntant%20quelques%20chemins%20DLTJ"
click node_documents "https://github.com/fraboulanger/hebreu/tree/main/Documents"
click node_sitegenerator "https://github.com/fraboulanger/hebreu/blob/main/prog/genereSiteFrancis.py"
click node_jsonmetadata "https://github.com/fraboulanger/hebreu/blob/main/prog/CreeJson.py"
click node_pdfmetadata "https://github.com/fraboulanger/hebreu/blob/main/prog/CreePDF.py"
click node_tocgenerator "https://github.com/fraboulanger/hebreu/blob/main/prog/genereTDM.py"
click node_htmloutput "https://github.com/fraboulanger/hebreu/tree/main/html"
click node_htmlformatter "https://github.com/fraboulanger/hebreu/blob/main/prog/mefHTML.py"
click node_listbehavior "https://github.com/fraboulanger/hebreu/blob/main/mef/jsLists.js"
click node_copierlists "https://github.com/fraboulanger/hebreu/blob/main/complements/aCopier/mef/jsLists.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_grammar,node_topics,node_newtestament,node_pathways toneBlue
class node_documents,node_sitegenerator,node_jsonmetadata,node_pdfmetadata,node_tocgenerator,node_htmloutput toneAmber
class node_htmlformatter,node_listbehavior,node_copierlists toneMint
class node_published toneRose
class node_reader toneIndigo
```

## Components

### Learning content

- [Hebrew grammar](https://github.com/fraboulanger/hebreu/tree/main/Documents/Grammaire%20Hebraique): `Documents/Grammaire Hebraique`
- [Biblical themes](https://github.com/fraboulanger/hebreu/tree/main/Documents/Mots%20et%20Themes%20bibliques): `Documents/Mots et Themes bibliques`
- [New Testament](https://github.com/fraboulanger/hebreu/tree/main/Documents/Quelques%20promenades%20dans%20le%20'nouveau%20testament'): `Documents/Quelques promenades dans le 'nouveau testament'`
- [Study documents](https://github.com/fraboulanger/hebreu/tree/main/Documents/En%20empruntant%20quelques%20chemins%20DLTJ): `Documents/En empruntant quelques chemins DLTJ`

### Site generation

- [Document tree](https://github.com/fraboulanger/hebreu/tree/main/Documents): `Documents`
- [Page generator](https://github.com/fraboulanger/hebreu/blob/main/prog/genereSiteFrancis.py): `prog/genereSiteFrancis.py`
- [JSON metadata](https://github.com/fraboulanger/hebreu/blob/main/prog/CreeJson.py): `prog/CreeJson.py`
- [PDF-named metadata tool](https://github.com/fraboulanger/hebreu/blob/main/prog/CreePDF.py): `prog/CreePDF.py`
- [Contents generator](https://github.com/fraboulanger/hebreu/blob/main/prog/genereTDM.py): `prog/genereTDM.py`
- [Generated HTML](https://github.com/fraboulanger/hebreu/tree/main/html): `html`

### Navigation and presentation

- [HTML formatter](https://github.com/fraboulanger/hebreu/blob/main/prog/mefHTML.py): `prog/mefHTML.py`
- [Collapsible lists](https://github.com/fraboulanger/hebreu/blob/main/mef/jsLists.js): `mef/jsLists.js`
- [Copied list script](https://github.com/fraboulanger/hebreu/blob/main/complements/aCopier/mef/jsLists.js): `complements/aCopier/mef/jsLists.js`

### Published site

- **Published site**

### Other components

- **Reader**

## Connections

- Page generator → Document tree: traverses (evidence: `prog/genereSiteFrancis.py`)
- Page generator → Generated HTML: writes pages (evidence: `prog/genereSiteFrancis.py`)
- Contents generator → Document tree: scans tree (evidence: `prog/genereTDM.py`)
- Contents generator → Generated HTML: writes contents (evidence: `prog/genereTDM.py`)
- JSON metadata → Document tree: scans tree (evidence: `prog/CreeJson.py`)
- JSON metadata → PDF-named metadata tool: similar implementation
- Reader → Published site: reads (evidence: `README.md`)
