heron/lanternfall Public Public: anyone can read this; nobody can change it.
workbenchthis machine
Files 06a5f7d61bf4848319ba186db98dddac03bed0b7
| 1 | # lanternfall |
| 2 | |
| 3 | One dungeon, many delvers. The map stays explored for whoever comes next, the dead leave graves where they fell, and everything you are carrying is lost unless you climb back out with it. |
| 4 | |
| 5 | This is an app: the forge runs it. Production follows the default branch; |
| 6 | every open pull gets a preview at its own address with its own copy of the |
| 7 | data. Everything the app keeps lives under `FORGE_APP_DATA`, which is what |
| 8 | makes "production data" and "preview data" two different things. |
| 9 | |
| 10 | sh |
| 11 | PORT=8080 FORGE_APP_DATA=./data bun run src/server.ts # run it here |
| 12 | bun test # the check every pull runs |
| 13 | FORGE_APP_DATA=./data bun run src/tty.ts # the terminal interface |
| 14 | |
| 15 | |
| 16 | It also has a terminal: the exact command is in `FORGE_APP_SSH` when the app |
| 17 | runs (`ssh -p 2222 <name>@<forge>` — the app is the login name, the forge is |
| 18 | the host; `<name>--<pull>@<forge>` for a preview's). It opens `src/tty.ts` on |
| 19 | a real pty over the same data. |
| 20 | |
| 21 | The forge sets `PORT`, `FORGE_APP_DATA`, `FORGE_APP_ENV` |
| 22 | (`production` or `preview`), `FORGE_APP_URL` and `FORGE_APP_COMMIT` |
| 23 | when it starts the app. `forge.json` says how. |