Self repository
The app, canonical data, validation and Pages deployment live together. A good default for a personal editor such as Quick Log.
Repository-backed personal apps
App Framework is a TypeScript and Astro foundation for small applications whose data, credentials, automation and publishing path stay explicit.
Every app names its canonical data and deployment repository.
Stale reads become visible conflicts, never silent overwrites.
Committed, building and published are separate facts.
A small catalogue
Choose the topology that matches who can read the data and who is allowed to produce it.
The app, canonical data, validation and Pages deployment live together. A good default for a personal editor such as Quick Log.
A public shell reads one explicitly declared private repository at runtime with a user credential. The build never absorbs the private data.
A local or hosted coding agent researches privately, then promotes only a validated, public-safe release into the reader repository.
A parent catalogue links independent applications without flattening their source, data, credential or deployment boundaries.
The generated-reader pattern
The reader is intentionally boring at runtime: it serves released files and does not know how the content was made.
A scheduler starts one deterministic occurrence.
hostAn agent writes drafts and provenance into a private repository.
editorialDomain validation and human or automatic review approve a candidate.
gateOnly allowlisted public files cross the repository boundary.
releaseGitHub Actions builds Pages; the reader becomes visible at the promoted commit.
publicDurable orchestration
The framework owns identity, retry classification, release integrity and recovery. Applications own generation, domain rules and editorial policy.
Read the scheduler contractjobId ai-daily:main
occurrence 2026-09-20T01:00+10:00
releaseKey 2026-09-20--ai
queued → claimed → generating
→ validating → needs-review
→ approved → promoting
→ promoted → building
→ published
digest 64-char SHA-256
boundary expected-head + reconciliationWorkflow ID becomes the stable executionId; Workflow History is the lifecycle authority; side effects run in idempotent Activities. Git release reconciliation remains the final cross-system correctness boundary.
Private by default
Private stays private. Prompts, drafts, credentials and hidden research never enter public source, artifacts, URLs or logs.
Writes carry the last revision. Conflicts are shown to the user or scheduler instead of being overwritten.
Capabilities are narrow. App code uses shared repository and credential contracts; it does not call GitHub directly.