3.1 KiB
3.1 KiB
type, id, title, status, source_of_truth, freshness, last_reviewed, tags
| type | id | title | status | source_of_truth | freshness | last_reviewed | tags | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| context | context.kontra-day.kontra-day-stack-decisions-storage-topology | Kontra Day — stack decisions + storage topology | active | false | current | 2026-09-08 |
|
Kontra Day — stack decisions + storage topology
Kontra Day (news-opinion site) — Phase One decisions
Stack (decided with user)
- Go + templ + htmx + Alpine + Tailwind ("GOTH") — single static binary, server-rendered (SEO).
- Content = Markdown (.md) + front-matter (Goldmark/CommonMark in Go). Author in Neovim/Obsidian.
- Admin = Decap CMS at
admin.kontra.day— free browser UI that edits the SAME .md files and commits to git. No custom admin. - Media = Garage S3 (on .13) via
{{media:...}}shortcodes resolved at render time. - Templates: templ components chosen per page (front-matter
template:) → page → subject (_subject.yaml) → site (config/site.yaml) → theme fallback. Front page =hometemplate driven by editable blocks list (config/frontpage.yaml). Colours = CSS design tokens (per-subject accent), not code. - Deploy = git push → auto-pull on .13 (no build step; Go renders on request). Obsidian git-sync plugin on .27.
Verified topology (from system-architect skill + Obsidian notes)
- .27 sam-4screen-desktop (192.168.20.27): dev box, Obsidian vault at
/home/sam/obsidian/, Neovim. - .13 nixos-desktop (192.168.20.13): web host, always-on. Sites in
/var/www/(NixOSusersgroup). Docker: Garage S3 (.13:3900 s3 / :3902 admin,/home/sam/deployment/garage/, s3 roots3.lab.audasmedia.com.au), Outline (:3000, uses Garage S3), PocketBase, family-home-lab stack. - .35 sam-ubuntu1 (192.168.20.35): Gitea Docker (web :3001, SSH :2222,
gitea.lab.audasmedia.com.au= origin) + Caddy master reverse proxy (/Docker/Containers/caddy/). - .23 file-server (192.168.20.23): NFS backup target.
- Go binary + site content run at
/var/www/kontra_dayon .13. Content origin = Gitea repo (proposedsam/kontra-day-content), production clone on .13, authoring clone on .27 (Obsidian vault subfolder).
Notes / gotchas
- Vikunja API at
vikunja.lab.audasmedia.com.au/api/v1; Outline atoutline.lab.audasmedia.com.au/api(endpoints POST; public endpoint 502s intermittently — retry, or hit container directly at .13:3000). Tokens in~/.config/environment.d/10-secrets.conf. Vikunja task-list response is a plain JSON array (not{"tasks":[]}). - Vikunja project id 10 = "Kontra Day" (tasks 118-126). Outline collection
7e85478e-8445-4b3b-b0d5-2032309981c4= "Kontra Day", docb74f3299...= "Phase One — PLAN". - PLAN.md lives at
/home/sam/home_network/web_sites/kontra_day/PLAN.md. - AGENT.md phases: 1 planning → 2 design → 3 build/test → 4 live (system-architect skill) → 5 email+DNS (Website Host Migration plan) → 6 console+backups → 7 marketing.
Evidence
- Confidence: 100%
- Reason: Manual memctx_save