Kontra: GOTH app (Go+templ+htmx+Tailwind tokens), markdown content, Decap admin, media shortcodes. Phase 3 build complete + verified locally.

This commit is contained in:
sam
2026-09-08 17:11:21 +10:00
commit 31e9a708cc
46 changed files with 4178 additions and 0 deletions

View File

@@ -0,0 +1,89 @@
{
"nextId": 8,
"tasks": [
{
"id": "1",
"subject": "Update DESIGN.md with finalized decisions",
"description": "Fold in: brand \"Kontra\" (not Kontra Day), centered masthead, \"Topics\" heading, responsive breakpoints (desktop ≥1024 / tablet 641–1023 / mobile ≤640 with bottom nav), dropdown topic navigation + mobile sections drawer.",
"status": "completed",
"activeForm": "Updating DESIGN.md",
"metadata": {},
"blocks": [],
"blockedBy": [],
"createdAt": 1788848933269,
"updatedAt": 1788848992737
},
{
"id": "2",
"subject": "Scaffold Go app (templ + htmx + Tailwind)",
"description": "Go project in /home/sam/home_network/web_sites/kontra_day: go.mod, templ templates, server (likely http (stdlib) or a minimal router), Goldmark for Markdown, YAML parsing for front-matter, static asset serving (kontra.css + fonts). Single static binary goal.",
"status": "completed",
"activeForm": "Scaffolding Go app",
"metadata": {},
"blocks": [],
"blockedBy": [],
"createdAt": 1788848933269,
"updatedAt": 1788851338939
},
{
"id": "3",
"subject": "Implement templates from DESIGN.md",
"description": "templ components: base layout, masthead (centered brand, meta line, desktop ribbon with topic dropdowns), mobile bottom nav + sections drawer, home (lead stack, Topics grid, Latest feed), subject index, article (header, hero plate, body, pull quote, field notes, save module, related, newsletter), site footer. Wire kontra.css design tokens.",
"status": "completed",
"activeForm": "Implementing templates",
"metadata": {},
"blocks": [],
"blockedBy": [],
"createdAt": 1788848933270,
"updatedAt": 1788851338939
},
{
"id": "4",
"subject": "Content model + loader (markdown + front-matter)",
"description": "Load .md content files with front-matter (title, author, date, tags, template, subject, image, excerpt, published, publish_at), subjects/_subject.yaml config, config/site.yaml, config/frontpage.yaml (template resolution page→subject→site→fallback). Goldmark rendering, {{media:...}} shortcode resolution.",
"status": "completed",
"activeForm": "Building content model",
"metadata": {},
"blocks": [],
"blockedBy": [],
"createdAt": 1788848933270,
"updatedAt": 1788851338940
},
{
"id": "5",
"subject": "Media: Garage S3 shortcodes + /media route",
"description": "Resolve {{media:...}} to Garage S3 URLs (bucket kontra-day on .13:3900), serve /media/* via Caddy. Shortcode defs: media, video (vimeo etc).",
"status": "completed",
"activeForm": "Wiring media shortcodes",
"metadata": {},
"blocks": [],
"blockedBy": [],
"createdAt": 1788848933270,
"updatedAt": 1788851426829
},
{
"id": "6",
"subject": "Admin: Decap CMS at admin.kontra",
"description": "Decap CMS (netlify-cms fork) config: collections for articles/subjects/pages, git backend to Gitea repo, media library pointing at Garage S3 (or local folder fallback). Serve at admin.kontra (subdomain).",
"status": "completed",
"activeForm": "Configuring Decap admin",
"metadata": {},
"blocks": [],
"blockedBy": [],
"createdAt": 1788848933270,
"updatedAt": 1788851471050
},
{
"id": "7",
"subject": "Deploy: Gitea repo + .13 systemd + timer",
"description": "Create Gitea repos (kontra content + maybe app), push, production clone at /var/www/kontra on .13, systemd service running the Go binary, 30s git pull timer, Caddy routes (kontra + admin.kontra) via .35 master proxy. Obsidian separate vault at /home/sam/obsidian/kontra/ = content repo.",
"status": "in_progress",
"activeForm": "Setting up deploy",
"metadata": {},
"blocks": [],
"blockedBy": [],
"createdAt": 1788848933270,
"updatedAt": 1788851471051
}
]
}