Commit

6ccf413

replying to @dtinth
Looked around. There are 2 generations here: legacy src/ + lib/ (express/fastify, firebase auth, docker) and service/ (bun + elysia, data/ -> local server -> supabase -> static site). What's bugging you most: auth, sync flow, or supabase?
Haha I want to redesign the whole thing. About current infra, what I didn't like: ・ Dependent on VS Code, which I haven't opened in 4 months ・ Requires a laptop to write, I want a nice backoffice ・ That the vault lives in a gitignored dir in the repo, so it's like nesting repos…
Shape I'm picturing: a Bun CLI you run in the vault under pitchfork. It indexes the .md, serves a web backoffice, commits+pushes with a GitHub App token, and publishes to Supabase on save. Q: always-on box or laptop?
Then Dokploy could own it: one Bun container, vault = git clone in a volume, GitHub App token pulls/pushes, backoffice behind your existing Supabase login. Keep mise+pitchfork for local dev only, or run it bare on the host?
I think so. Vault .md = source of truth, private included. publish.ts copies only public notes (plus tree/sitegraph/index/search keys) to Supabase. generate_static_site compiles those rows, caches the result in the row, renders HTML into published/ (dt.in.th repo) and pushes to…
dt.in.thThai Pangsakulyanont
Yes: public: true but not reachable from HomePage. They still go to Supabase (row + search keys, compiled too) but get no static HTML and stay out of tree/index/sitemap. A visit hits 404.html, and the client fetches it via notes_get_contents.
Correct. We can start infra side anew. Let's start anew. Install @mattpocock skills. Put the current checkout in a worktree for reference. And let's get /grilling.
Done: mattpocock-skills plugin installed (user scope), old checkout parked at ./legacy on a legacy branch. Grilling round 1. Reply "yes" per Q to take my rec. Q1 Where it runs: bare on the VPS under pitchfork, vault as a plain git checkout so Claude Code can work in it…
Q1, Q2, Q3, Q5, Q6. Agree Q4. Right now publish is all-or-nothing, as in publishing the vault content. Not sure if with the new version, can we can just publish selectively.
Round 2, all on Q4. Selective fits well, because Supabase is already a separate copy: the static site is built from Supabase rows, not from the vault. Q7 Unit of publish: per note. "Publish" copies that note's current source into its Supabase row, and the row becomes the…
dt.in.thThai Pangsakulyanont
Q7, Q8, 10, 11. Agree Q9. Still needed. public: true is the "desired state" so to speak. To unpublish I would set public: false and the back office should slate it for unpublishing. Btw, by starting anew I mean start a new Git history. On cutover we merge main in with -s…
Got it. public: true = desired state, Supabase row = actual state. And the checkout is now on an orphan branch next, with the old code in ./legacy. At cutover: merge main into next with -s ours, then fast-forward main. Round 3: Q12 Reconcile UX: the backoffice shows a plan,…
Round 4, ops and edges: Q18 GitHub App: one app, installed on the vault repo and dtinth/dt.in.th, with contents read/write only. Its private key and the Supabase service key live in a mise env file outside the vault, so agents working in the vault never see them. -> Yes. Q19…
dt.in.thThai Pangsakulyanont
Last round, I think: Q25 Distribution: the CLI is published as a compiled Bun binary on GitHub Releases of this repo, and the vault pins it in mise.toml via the github: backend. pitchfork.toml in the vault runs notes serve. -> Yes. Q26 Cutover check: before switching,…
Fair. Bundled JS (bun build --target=bun, #!/usr/bin/env bun, bun via mise), with backoffice assets inlined so it's one file. If shiki wasm won't inline, ship a tarball instead. Writing docs/SPEC.md now.

commit 6ccf413

@dtinth docs/SPEC.md is done, committed as the first commit on (local only). It covers the 3 layers, plan/apply, the frontend contract, sync, secrets and cutover. Push to origin so you can read it there?
Typo fix: the blank above is the branch next. Spec is the first commit there, local only. Push next to origin?