Add a navigable Obsidian vault as the project's first-class technical documentation. Notes cross-reference with [[wikilinks]]; docs/index.md is the Map of Content. New notes: index.md MOC, entry point architecture.md what the extension owns vs what lives outside data-model.md entity-by-entity schema reference menu-tree.md the arbitrary-depth tree concept order-flow.md state machine + invoice listener + print nostr-layer.md kinds 0/30402/5/1059, signing, t-tags api-reference.md endpoint catalog by audience cms.md Vue 3 + Quasar 2 UMD conventions, q-tree webapp-integration.md multi-restaurant cart pattern + atomicity glossary.md domain terms Existing notes (kept as-is): adr-0001-menu-tree.md the storage choice rationale design-conversation.md trimmed transcript README.md adds a Documentation section pointing at docs/index.md with the headline note list. Each note links to ~3-5 others; the vault forms a connected graph. A project-level memory rule (saved outside the repo) commits us to keeping these docs in sync as the code evolves: any commit that materially changes schema, API, order flow, Nostr surface, CMS conventions, or webapp integration must update the relevant note(s) in the same commit.
50 lines
1.8 KiB
Markdown
50 lines
1.8 KiB
Markdown
# Restaurant extension — docs
|
|
|
|
Map of Content for the restaurant LNbits extension.
|
|
|
|
> Treat this folder as an Obsidian vault: notes use `[[wikilinks]]` to
|
|
> cross-reference. Open the folder in Obsidian (or any markdown editor
|
|
> that resolves bare-name links) for the full graph.
|
|
|
|
## Start here
|
|
|
|
- [[architecture]] — what the extension is and how it sits inside
|
|
LNbits, alongside the customer webapp and Nostr.
|
|
- [[glossary]] — domain terms used throughout the docs.
|
|
|
|
## Concepts
|
|
|
|
- [[data-model]] — every table, every relationship.
|
|
- [[menu-tree]] — the arbitrary-depth menu structure (capped at 4
|
|
levels), where items can attach to any node.
|
|
- [[order-flow]] — the order state machine, the invoice listener,
|
|
and the kitchen pipeline.
|
|
- [[nostr-layer]] — what we publish to Nostr (kind 0, kind 30402,
|
|
kind 5) and what we listen for (kind 1059, scaffolded).
|
|
|
|
## Surface
|
|
|
|
- [[api-reference]] — REST endpoints organized by audience
|
|
(public read, customer order placement, owner CRUD).
|
|
- [[cms]] — the operator UI: Vue 3 + Quasar 2 UMD conventions,
|
|
template structure, q-tree menu builder.
|
|
- [[webapp-integration]] — how the AIO webapp aggregates multiple
|
|
restaurants into a single cart and pays each one's invoice.
|
|
|
|
## Decisions
|
|
|
|
- [[adr-0001-menu-tree]] — why an adjacency list with materialized
|
|
path, not a closure table or `ltree`.
|
|
|
|
## Process
|
|
|
|
- [[design-conversation]] — trimmed transcript of the design
|
|
discussion that produced the initial scaffold. Keep for
|
|
rationale that didn't make it into commit messages.
|
|
|
|
## Maintenance
|
|
|
|
This vault is the project's first-class technical documentation.
|
|
Every commit that changes the surface listed in [[architecture]] or
|
|
the rules above must update the matching note(s) in the same commit.
|
|
Stale docs are worse than no docs.
|