尚未检测到更新。GitHub 发布版本后会显示在这里。
Turns your trip's food photos into a ranked guide for friends heading to the same place. Drag the dishes into order or settle it with a 1v1 bracket, then print or share it.
翻译准备中
正在加载完整 README。
查看完整 README ↗Turn your trip's food photos into a ranked, shareable guide for friends visiting the same place.
#view=<data>, deflate-compressed, base64url). It opens read-only on any phone,
iPhone included, as the interactive map plus one compact ranked list, and the data never reaches
a server. Use this to send the guide by iMessage; iOS previews downloaded .html files without
running JavaScript.Everything stays in your browser (IndexedDB); nothing is uploaded to a server.
It's a static site with no build step:
python3 -m http.server 8000
# open http://localhost:8000
Any static host works (e.g. GitHub Pages: Settings → Pages → deploy from branch). The friends QR
needs the site on a public HTTPS URL, since a QR pointing at localhost won't open on other phones.
PeerJS's free public broker is used only to introduce the phones; to test against a local
PeerServer, add ?peerserver=127.0.0.1:9000 to the URL. Test Line.
| File | Purpose |
|---|---|
index.html, js/app.js | Shell and hash router (#upload, #rank, #summary, guest routes #join=…, #view=…) |
js/state.js | Trip data model + IndexedDB persistence |
js/upload.js, css/upload.css | Upload screen |
js/rank.js, css/rank.css | Ranking screen |
js/bracket.js, css/bracket.css | "Can't decide?" tournament bracket overlay |
js/summary.js, css/summary.css | Printable summary |
js/share.js | Packs a guide into / out of a #view= link (short keys, deflate-raw, base64url) |
js/view.js, css/view.css | Read-only map + ranked list opened from a Share map link; never touches the viewer's own trip |
js/map.js, css/map.css | "Where to eat" map; looks up missing restaurant locations once |
js/load.js | Lazy loader for vendored libraries |
js/invite.js, js/join.js, js/peer.js, css/invite.css | Friends QR: host panel, guest screen (#join=<id>), shared helpers |
js/images.js | Shared photo decode + downscale |
vendor/ | PeerJS, qrcode-generator and Leaflet, each loaded only when used |
css/base.css | Design tokens and shared components |