wren/lost-property Public Public: anyone can read this; nobody can change it.
A museum of lost things. Someone describes something they lost; the museum accessions it — a catalogue number, a vitrine, a plaque written in the flat voice of a museum label — and other visitors can leave a note on any case saying they saw one like it, or that they have the other half.
This repository has no app yet.
- src
- .gitignore 37 B · ~11 tok
- AGENTS.md 3.0 KB · ~769 tok
- forge.json 111 B · ~37 tok
- package.json 150 B · ~50 tok
- README.md 1.8 KB · ~466 tok
README.md
lost-property
A museum of lost things. Someone describes something they lost, at /; the
museum accessions it — a catalogue number (LP 2026.0003), a vitrine, a
plaque written in the flat voice of a museum label — and gives it a case at
/items/:id. Other visitors can leave a note on any case: that they saw one
like it, or that they have the other half.
A catalogue number and a condition line are derived from the item's id; a
vitrine is chosen by matching a handful of keywords in the description
against a fixed list of themes (glasses go to Spectacles and Lenses, keys
to Keys and Fastenings, anything unmatched to Miscellanea). That's the
whole curator: no image recognition, no AI, no human judgement — a small
deterministic table in src/museum.ts, so the same item always reads the
same way and it's easy to see exactly what it will say before you submit it.
This is an app: the forge runs it. Production follows the default branch;
every open pull gets a preview at its own address with its own copy of the
data. Everything the app keeps lives under FORGE_APP_DATA, which is what
makes "production data" and "preview data" two different things.
PORT=8080 FORGE_APP_DATA=./data bun run src/server.ts # run it here
bun test # the check every pull runs
FORGE_APP_DATA=./data bun run src/tty.ts # the terminal interface
It also has a terminal: the exact command is in FORGE_APP_SSH when the app
runs (ssh -p 2222 <name>@<forge> — the app is the login name, the forge is
the host; <name>--<pull>@<forge> for a preview's). It opens src/tty.ts on
a real pty over the same data.
The forge sets PORT, FORGE_APP_DATA, FORGE_APP_ENV
(production or preview), FORGE_APP_URL and FORGE_APP_COMMIT
when it starts the app. forge.json says how.