flowchart LR subgraph editors["Content Editors"] O[Obsidian vault
/obsidian/kontra_content] -->|git push| G N[Neovim / CLI] -->|git push| G D[Decap CMS
admin.kontra.lab] -->|OAuth + git commit| G end subgraph gitea["Gitea (192.168.20.35 :3001 Docker)"] G[(sam/kontra-content
markdown origin of truth)] end subgraph prod["Kontra container (192.168.20.13 :8600 Docker)"] P[git pull loop
every 30s] -->|restart on change| B B[Go binary
templ + htmx + Goldmark] B --> MD[(Markdown render
front-matter + shortcodes)] end subgraph media["Media (git files)"] F[(Images beside articles
in the content repo)] end G -->|"SSH git"| P B -->|"{{media:slug/file}}"| F B -->|"emits HTML"| CB[Caddy master
.35 :80/:443] CB -->|"reverse_proxy :8600"| B subgraph net["Network"] CB -->|https| WWW[kontra.lab.audasmedia.com.au] CB -->|https| ADM[admin.kontra.lab.audasmedia.com.au] end WWW -->|browser| B ADM -->|browser| D