The offline companion app for the 9-hour Edge BlockTrain from Margao to Mumbai (1 Nov 2026).
node server.js # http://localhost:8787 — PWA + MCP endpoint at POST /mcpThe plan follows the track, not the clock. Signal zones come from a field log of the Konkan route
(coverage dashboard) and are mapped to km from Madgaon in data.js.
The app works out where the train is from GPS (which works without internet), snaps the fix to the line, and
shows the current block, the signal class and a countdown to the next signal change. Without GPS it uses the
planned time plus a "running late" offset.
| Planned | Signal | Block |
|---|---|---|
| 15:00–17:15 | Good (patchy near Pernem) | All aboard, Build Sprint 1 |
| 17:15–18:51 | Dead belt, Nandgaon → Ratnagiri | Orient Express starts, Imposter, sunset cacao with Zoe, Mafia 1 |
| 18:51–19:00 | Ratnagiri burst | Sync window: push everything |
| 19:00–20:52 | Karbude tunnel, then patchy to Khed | Tunnel story, dinner + quiz, Mafia 2, bingo |
| 20:52–23:00 | Good, Karanjadi → Panvel | Build Sprint 2 |
| 23:00–00:00 | Good | Demos at the back, awards, arrival |
The host says a codeword out loud. Each phone combines it with the rider's seat to deal the same secret roles everywhere: an Orient Express target ring across the whole roster, Mafia roles in 4 seat-block groups, Imposter words in 8 groups. When an Orient Express player is caught, their phone shows their target and a 4-letter handover code, which the catcher enters to take over that target.
data.js: route, signal zones, run-of-show, perks, roster (the one file to edit)core.js: position, signal forecast and seeded dealing, shared by the app and the MCP serverindex.html,app.js,app.css,sw.js,manifest.webmanifest: the installable offline PWAserver.js: static server plus a read-only MCP endpointagentvillage/:SKILL.mdandmanifest.jsonfor the Agent Village mini-app catalog (needs the deployed host URL)
- Add Coach C6 seat numbers to
ROSTERindata.js. - Replace station km and clock times once the train number and timetable are confirmed.
- Live at https://edge-blocktrain.vercel.app (MCP: POST /mcp). Redeploy after changes.
- Bump
CACHEinsw.json every update so phones pick up the change.