PWA icons now ship from public/icons/ (generated by
@vite-pwa/assets-generator, gitignored). The seven hand-crafted
binaries at public/ root come out of the tree.
Changes:
- 7 deleted: public/{favicon.ico, apple-touch-icon.png, mask-icon.svg,
icon-{192,512}.png, icon-maskable-{192,512}.png}
- 9 HTML: <link rel="icon"|"apple-touch-icon"> hrefs prefixed with
/icons/. mask-icon link dropped (PNG source → no sharp SVG; modern
browsers prefer favicon.svg anyway, which we can revisit when an
SVG brand source lands).
- 8 vite configs: includeAssets[] + manifest.icons[].src prefixed
with icons/. Vite rewrites /icons/foo → <base>/icons/foo when base
is set (so /events/icons/favicon.ico under /events/ deploys).
Build is now dependent on `pnpm generate-pwa-assets` running first
(or whatever invokes the generator — Phase 2 NixOS builds wire this
into buildNpmPackage). Standalone dev runs the generator on first
boot or whenever BRAND_DIR changes.
Part of aiolabs/webapp#95.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Standalone customer-facing bundle for the LNbits 'restaurant'
extension, modeled on the market bundle. v1 ships single-venue
(URL-driven via /r/:slug) with REST-only order placement; festival
aggregator and NIP-17 transport are tracked as
aiolabs/restaurant#8 and #9 respectively.
Skeleton this commit lands:
vite.restaurant.config.ts — port 5186, dist-restaurant/, green
theme color, PWA manifest, alias
@/app.config -> restaurant-app/.
restaurant.html — entry; title 'Restaurant — Order'.
src/restaurant-app/
main.ts — startApp + PWA SW registration.
app.ts — module registration glue
(baseModule + restaurantModule).
app.config.ts — modules.restaurant config block.
Reserves a features:{} slot for
tier-gated UI (aiolabs/restaurant#2).
App.vue — AppShell with Browse / Cart /
Orders bottom-nav tabs.
src/modules/restaurant/
index.ts — ModulePlugin shell with the future-
roadmap context inlined as
top-of-file comment (#1..#9).
views/HomePage.vue — placeholder; commit 4 replaces it
with real discovery + redirect.
src/core/di-container.ts — RESTAURANT_API +
RESTAURANT_NOSTR_SYNC tokens
reserved (consumers land in 3 / 8).
package.json — dev:restaurant, build:restaurant,
preview:restaurant scripts and
append to dev:all + build:demo.
Verified:
- vue-tsc -b passes (whole webapp, all bundles).
- vite build --config vite.restaurant.config.ts builds clean
against VITE_LNBITS_BASE_URL=http://localhost:5001
VITE_RESTAURANT_DEFAULT_SLUG=big-jays-bustaurant.
- vite dev server boots on :5186 and serves the entry.
Companion branch: extension repo aiolabs/restaurant on branch
feat/restaurant-by-slug already provides
GET /restaurants/by-slug/{slug} that the webapp will consume in
commit 3.