SolLunar-Kitchen/README.md

58 lines
1.8 KiB
Markdown

# 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
```sh
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
```sh
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:
```sh
~/.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:
```sh
qrencode -s 12 -m 2 -o /tmp/k484-qr.png "https://<your-url>" # then scan it
```