End-to-end publishing
flow
flowchart TD
A["Obsidian Notes<br/>notes/**/*.md"];
B["Codeberg Git Repo"];
C["Coolify"];
D["Docker Build"];
E["python3 build.py"];
F["Static Site Artifacts<br/>HTML/CSS/JS/RSS/Sitemap"];
G["nginx container serves /site"];
H["Web view"];
I["/graph/graph.json"];
J["/graph/ page + desktop sidebar graph"];
subgraph Authoring
A --> B;
end
subgraph Deploy
B -->|Push webhook| C;
C --> D;
D --> E;
end
subgraph Output
E --> F;
F --> G;
G --> H;
end
subgraph Graph
E --> I;
I --> J;
J --> H;
end
Build pipeline detail
flowchart TD
A["build.py"];
subgraph Parse_And_Link
B["indexing.py<br/>frontmatter + note index"];
C["wiki.py<br/>wikilink resolution + backlinks"];
end
subgraph Render_Notes
D["note_pages.py<br/>render note pages via Pandoc"];
K["templates/page.html"];
L["static/style.css + static/graph.js"];
end
subgraph Post_Render
E["pipeline.py"];
F["rendering.py<br/>redirects + stubs + sitemap"];
G["synthetic_pages.py<br/>topics/stages/now/slashpages/missing/graph"];
H["feeds_updates.py + updates.py<br/>updates pages + RSS"];
end
subgraph Graph_Outputs
I["/graph/index.html"];
J["/graph/graph.json"];
end
A --> B --> C --> D --> E;
K --> D;
L --> D;
E --> F;
E --> G;
E --> H;
G --> I;
G --> J;
Backlinks