103 lines
6.8 KiB
Markdown
103 lines
6.8 KiB
Markdown
---
|
|
type: context
|
|
id: context.kontra-day.access
|
|
title: access
|
|
status: active
|
|
source_of_truth: false
|
|
freshness: current
|
|
last_reviewed: 2026-09-08
|
|
tags:
|
|
- pack/kontra-day
|
|
- agent-memory/context
|
|
- autolearn
|
|
- rich-discovery
|
|
- repo/access
|
|
---
|
|
|
|
# access
|
|
|
|
## Rich discovery update (2026-09-08 02:23:28)
|
|
|
|
Great questions — let me answer each properly, because they cut right to the architecture.
|
|
|
|
## 1. GOTTH + `.md` files — yes, this is a strong fit
|
|
|
|
Go + templ + htmx + Alpine + Tailwind, with Goldmark (Go's CommonMark renderer) turning your `.md` into HTML at request time, is one of the best "text-first news site" stacks you can pick right now:
|
|
|
|
- **One static binary** — build once, copy to `.13`, done. No Node, no PHP runtime, no container even needed.
|
|
- **Server-rendered HTML** — SEO-friendly by default (great Lighthouse), fast.
|
|
- **templ** gives type-safe components; **htmx** gives interactivity (paging, filters, comment forms later) without a JS framework; **Alpine** for small client bits.
|
|
- **Content = files** — your Obsidian/editor workflow stays; go can even re-render on file change in dev.
|
|
- Cost: the **admin is DIY** — auth, CRUD, media browser are all code you write. And per-request markdown parsing is fine at this scale (cache rendered HTML if you care).
|
|
|
|
## 2. Laravel as the "orchestrator" — honest answer: it's the wrong tool *for that role*
|
|
|
|
Laravel is excellent at **being a web app** (Blade+htmx admin, auth, queues, and — importantly — a genuinely great **mail system** for that email phase later). But you're proposing it as a **publish-state manager** perched over Go:
|
|
|
|
- You'd run **two servers** (Go on :80, Laravel admin on :8080) both touching the same `.md` files and a shared DB. Every publish toggle, front-page order, archive move = a DB write Laravel makes and Go reads.
|
|
- That works, but it's **redundant** — Go can own a small SQLite `publish` table itself, with an htmx admin page inside the same binary. One language, one process, zero sync.
|
|
|
|
So the real fork is:
|
|
|
|
| Path | Architecture | When to pick |
|
|
|---|---|---|
|
|
| **A. All Go** | Go serves site + a minimal htmx admin page managing publish/front-page/archive in SQLite. `.md` = content truth. | You want the leanest thing. Email later = Go mail libs, or hand off to n8n/Postfix on your network. |
|
|
| **B. Laravel owns it all** | Blade + htmx admin, Laravel serves pages, S3 media via its filesystem driver, Mailables for email later. Drop Go. | You want Laravel's admin/mail/ecosystem and don't mind PHP runtime. |
|
|
| **C. Go site + headless admin** | Go serves; **PocketBase (already on .13)** is the admin/publish/media store. | You want a browser admin *without* writing one. |
|
|
| **D. Go + Laravel, loosely coupled** | Go serves; Laravel admin only writes publish-state to a **shared SQLite file** + edits `.md` on disk. | You specifically want Laravel's admin UX and Go's front. Viable, but it's path A with extra running parts. |
|
|
|
|
"Is Laravel good for this?" — good at admin, great at email, overkill as a proxy. **"Other PHP?"** — Symfony (bulkier), Slim (micro), WordPress (off-the-shelf but you'd be fighting it). If PHP is the choice, Laravel+Filament is the right one.
|
|
|
|
## 3. Garage S3 media + `.md` coordination under Laravel
|
|
|
|
- **Showing media in admin**: Laravel has a first-class **S3 filesystem driver** — configure a `garage` disk (endpoint, keys, bucket) and the admin lists objects and renders thumbnails. Public reads via a **Caddy/nginx route** (`/media/*` → bucket) rather than exposing Garage's own port; private buckets can use presigned URLs.
|
|
- **Coordination with `.md`**: the cleanest pattern is **shortcodes, not raw URLs**. In your file you write `{{media:cover}}` or `{{vimeo:12345}}`; the renderer (Go or Laravel) resolves the slug to the actual S3 URL at render time. That way you can **rename/migrate media later without touching every article** — plain URLs pasted into `.md` freeze the path forever. Upload flow: admin uploads to bucket → returns URL → editor pastes it in the `.md`. Simple and inspectable.
|
|
|
|
## 4. Is markdown good? And what's the "scientific" one?
|
|
|
|
- **Yes — Markdown (GFM/CommonMark) + front-matter is ideal** for text news/opinion with links, images, embeds.
|
|
- Variants, in case the name escapes you: **MDX** (JSX components inside markdown), **AsciiDoc** (more structure — tables, includes; great for docs, overkill here), **Org-mode**, reStructuredText.
|
|
- **The new scientific one is almost certainly Typst** (2023) — a modern typesetting language with gorgeous math, designed for **documents/PDF**. You *can* render it to SVG for web, but for a news site it's the wrong tool.
|
|
- **If you meant LSP** (Language Server Protocol) — that's an *editor autocomplete standard*, not a format; ignore it here.
|
|
- For the odd formula: keep markdown and add **KaTeX/MathML** via `$...$` in Goldmark's math extension. You get scientific notation with zero new language.
|
|
|
|
## 5. My recommendation
|
|
|
|
**Path A — all Go** (templ + htmx + Alpine + Tailwind), `.md` files as content, SQLite publish-state with a small htmx admin for live/front-page/archive, `{{media:...}}` shortcodes resolved to Garage S3. Deploy = one binary behind Caddy on `.13`. Email phase later = Go mail lib or n8n handoff — revisit then, when requirements are real.
|
|
|
|
Want me to draft **PLAN.md** on Path A — or would you rather spec out Path B (Laravel-everything) or Path C (Go + PocketBase) instead?
|
|
|
|
## Source paths observed
|
|
|
|
- `home/sam/home_network/web_sites/kontra_day/.pi`
|
|
- `home/sam/home_network/web_sites/kontra_day/.pi/memory-vault`
|
|
- `home/sam/home_network/web_sites/kontra_day/.pi/memory-vault/packs`
|
|
- `home/sam/home_network/web_sites/kontra_day/.pi/memory-vault/packs/kontra-day`
|
|
- `home/sam/home_network/web_sites/kontra_day/.pi/memory-vault/packs/kontra-day/00-system`
|
|
- `home/sam/home_network/web_sites/kontra_day/.pi/memory-vault/packs/kontra-day/00-system/pi-agent`
|
|
- `home/sam/home_network/web_sites/kontra_day/.pi/tasks`
|
|
- `home/sam/.agents`
|
|
- `extensions/pi-config/index.ts`
|
|
- `extensions/ask-user-question/index.ts`
|
|
- `sys/firmware/efi/efivars`
|
|
- `publish/front-page/archive`
|
|
- `admin/mail/ecosystem`
|
|
- `admin/publish/media`
|
|
- `live/front-page/archive`
|
|
|
|
## Evidence
|
|
|
|
- Confidence: 84%
|
|
- Reason: Update component/repository context with detailed discovered structure and configuration
|
|
|
|
## Related
|
|
|
|
- [[packs/kontra-day/00-system/pi-agent/memory-manifest|Memory Manifest]]
|
|
|
|
## Related learned memories <!-- same-turn-2026-09-08 02:23:28 -->
|
|
|
|
- session: [[packs/kontra-day/80-sessions/rich-discovery-access-2026-09-08-02-23-28|Rich discovery: access 2026-09-08 02:23:28]]
|
|
- context: [[packs/kontra-day/20-context/access|access]]
|
|
- runbook: [[packs/kontra-day/70-runbooks/access-deployment-operations|access deployment operations]]
|
|
- observation: [[packs/kontra-day/60-observations/access-repository-structure-and-configuration-patterns|access repository structure and configuration patterns]]
|