46 lines
1.8 KiB
Markdown
46 lines
1.8 KiB
Markdown
# Retur
|
||
|
||
**Avdelningen för obeställbara försändelser.**
|
||
|
||
A short bureaucratic supernatural sorting game. You have five shifts at a municipal dead-letter office. Read each letter, consult an expanding and occasionally contradictory rulebook, then route it to delivery, sender, Archive 9, or quarantine.
|
||
|
||
Later regulations override earlier ones. The letters know this too.
|
||
|
||
## Stack
|
||
|
||
Vanilla TypeScript + Vite. No framework, backend, or runtime dependencies. State is kept in `localStorage`.
|
||
|
||
The visual language deliberately follows `djupet`: JetBrains Mono, near-black blue panels, restrained eldritch color, compact administrative labels, and pressure expressed through a screen-edge vignette. Retur replaces Djupet's Malmö map and idle resources with a paper desk, physical stamps, and a regulation sidebar.
|
||
|
||
## Development
|
||
|
||
```bash
|
||
npm install
|
||
npm run dev # http://localhost:5691
|
||
npm run typecheck
|
||
npm test
|
||
npm run build
|
||
```
|
||
|
||
## Rules
|
||
|
||
- Inspect the sender, recipient, address, postmark, letter text, and marks.
|
||
- Select one of four routes and stamp the decision.
|
||
- New regulations arrive each morning. Later and more specific rules take precedence.
|
||
- Incorrect sorting costs composure and raises suspicion.
|
||
- A completed day restores one composure; suspicion persists.
|
||
- Survive all five days to receive a permanent position. This is not necessarily a reward.
|
||
|
||
Keyboard: `1`–`4` selects a route, `Enter` stamps or continues, `?` opens help.
|
||
|
||
## Deployment
|
||
|
||
The production image is a static Vite build served by nginx. A push to `main` triggers the Gitea Actions workflow, which builds and publishes `repo.explewd.com/explewd/retur:latest` plus an immutable short-SHA tag. The deployment host pulls that image through Docker Compose.
|
||
|
||
```bash
|
||
docker compose pull
|
||
docker compose up -d
|
||
```
|
||
|
||
**Live:** [retur.games.goonk.se](https://retur.games.goonk.se)
|