Files
menu/CONTEXT.md
T
tanshu c31b73d553 Let the owner manage categories, and give the menus a shelf
Categories were baked into config/<site>.site.json, so adding one meant a
rebuild and a redeploy. They are now data: data/sections.json, seeded from the
config the first time, and managed in the admin (add, rename, reorder, remove).
A category's web address is fixed when it is created because that is what a QR
code points at, and a category cannot be removed while it still holds menus.

The landing and the top bar were the ugliest parts. The landing was a column of
hairlines with tiny meta — a broadsheet, and the paper that makes this app worth
looking at was nowhere on it. It is now a shelf: each category is a row whose
right edge is a sliver of that menu's first page, bleeding off the screen, with
the shelf edge in brass and the name in heavy tight Archivo. The bar was a row
of teal pills that would not survive more categories: it now names the menu you
are reading and opens a sheet listing the rest, each with its own paper sliver,
and the current one is the only teal thing on screen. The sheet is a link to the
landing page, so navigating still works without the script.

Also fixes the category manager's own layout, which I shipped unstyled, and the
markup contract the route tests described.
2026-09-22 22:24:53 +05:30

71 lines
2.4 KiB
Markdown

# Menu Publishing
Publishing the customer-facing menus of several brewery-restaurant Sites. A Site serves photographed pages of its printed menus, grouped into Sections and published as Menu Sets.
## Language
### Structure
**Site**:
One restaurant's customer-facing menu deployment, with its own brand, Sections and content. Each Site runs its own instance of the app.
_Avoid_: brand, tenant, deployment, instance
**Section**:
A top-level category of menu content that customers choose between, such as Food, Bar or What's On. Sections are content: the owner adds and renames them in the admin.
_Avoid_: type, tab, folder
The admin, and the owner, say **category** where the code and this glossary say Section. The two words mean the same thing; the code keeps Section so the storage layout, routes and manifests stay consistent.
**Menu Set**:
One complete set of Pages published together for a Section, with a label and an optional valid-until date.
_Avoid_: menu, version, batch, upload, album
**Page**:
One image within a Menu Set, in a deliberate order; usually a photographed page of a printed menu.
_Avoid_: sheet, slide, image, photo
**Poster**:
A Page whose content is an event or seasonal creative rather than a menu, published in the What's On Section.
_Avoid_: flyer, banner, creative
### Publication
**Draft**:
A Menu Set that has been uploaded but is not visible to customers.
**Current**:
The single published Menu Set per Section that customers see.
_Avoid_: live, active, main
**Archive**:
A Menu Set that was once Current and has been superseded. Reachable by direct URL, never listed in customer navigation.
_Avoid_: old menu, history, expired, past
**Publish**:
The act of making a Draft Current, which archives the Menu Set that was Current before it.
_Avoid_: release, deploy, go live
### Images
**Original**:
The uploaded image as stored, kept so that viewing images and thumbnails can be regenerated. Never served to customers.
_Avoid_: source, master, full-size
**Viewing image**:
The wide image shown on a Section page and opened by tap-to-zoom.
_Avoid_: preview, display image
**Thumbnail**:
The small image used only inside the admin.
_Avoid_: preview, grid image
### Surfaces
**Landing page**:
The Site root, listing the Sections that have a Current Menu Set.
_Avoid_: home, index
**Admin**:
The password-protected area where a Menu Set is uploaded, ordered, previewed and published.
_Avoid_: dashboard, CMS, back office