No description
  • HTML 88.5%
  • JavaScript 11.5%
Find a file
2026-09-28 15:50:19 -05:00
backups Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
server Remove Sweets Cart; show placeholder stand location on every schedule card 2026-09-28 15:50:19 -05:00
.gitignore Replace BTCPay payments with free pre-orders + live ready-status 2026-09-28 15:09:49 -05:00
_shot_cosmic.html Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
home.html Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
icon-192.png Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
icon-512-maskable.png Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
icon-512.png Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
icon.png Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
index.html Remove Sweets Cart; show placeholder stand location on every schedule card 2026-09-28 15:50:19 -05:00
logo.png Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
manifest.webmanifest Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
README.md README: phone access (LAN URL, tunnel fallback, QR) 2026-09-28 15:23:19 -05:00
sol_lunar_bw.png Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
sol_lunar_bw_emblem.png Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
sol_lunar_icon.svg Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00
SolLunar_svg_bw_notext.jpeg Initial commit: SolLunar Kitchen under version control 2026-09-23 18:57:11 -05:00

KITCHEN 484 · Solarpunk Summit

Festival kitchen site: browse the food schedule, place a free pre-order, and watch it flip to READY the moment the kitchen fires it — with the stand to pick it up from.

What it is

  • index.html — customer PWA (schedule, cart, pickup codes, live status)
  • server/server.js — zero-dependency Node backend: order store, pickup codes (K484-XXXX), SSE live status, static hosting
  • server/staff.html — staff order board at /staff (passcode-gated: mark orders READY / COLLECTED / CANCELLED, filter by stand)
  • home.html — K484 association page (separate, untouched)

Payments were removed (Sep 2026): pre-orders are free reservations; people pay at the stand. The old BTCPay proxy lives in git history (commit 601c85f) if it's ever needed again.

Run

cd server
cp .env.example .env   # set STAFF_PASSCODE (openssl rand -hex 4)
node server.js         # http://localhost:8787

Orders persist to server/.data/orders.json (gitignored).

Test

cd server && npm run test:e2e   # 14 checks: order loop, auth, SSE, restart persistence

Open it on your phone

Same Wi-Fi (if the network allows device-to-device):

http://<laptop-ip>:8787          # laptop IP from: ip -4 addr | grep 10.
http://<laptop-ip>:8787/staff    # staff board (passcode from server/.env)

If the phone can't connect (some Wi-Fi networks isolate devices — this happens on ours), use a tunnel instead:

~/.local/bin/cloudflared tunnel --url http://localhost:8787
# prints https://<random>.trycloudflare.com — open that on the phone
# (URL changes on every tunnel restart)

Typing the long URL fails often (browser eats it as a search). QR to the rescue:

qrencode -s 12 -m 2 -o /tmp/k484-qr.png "https://<your-url>"   # then scan it