Configuration
The Shelf is configured entirely through environment variables, set in your .env file or compose file.
| Variable | Purpose |
|---|---|
DATABASE_URL | PostgreSQL connection string. Required. |
DATA_DIR | Where uploaded images are stored. Default ./data (/data in the container). |
BGG_API_TOKEN | BoardGameGeek API token. Enables the title lookup on the add-game form. |
COOKIE_SECURE | Set to true when the app is served over HTTPS. |
AUTO_MIGRATE | Set to false to skip database migrations on start. |
TRASH_RETENTION_DAYS | Days a deleted item stays in the trash before it is removed for good. Default 30. 0 keeps items until an admin deletes them. |
Trash
Deleting a game, copy, play, wishlist item, place or player moves it to the trash. An admin can restore it or delete it for good, and anything older than TRASH_RETENTION_DAYS is purged automatically. A game that still has copies cannot be deleted.
BoardGameGeek lookup
Optional. With BGG_API_TOKEN set, the “Look up” button on the add-game form searches the BoardGameGeek XML API and can prefill the title, a short description, player counts, play time, minimum age, complexity, up to six categories and the cover image.
- Lookups happen only on demand, when a signed-in, non-restricted member searches. There is no bulk crawling, background syncing or scheduled polling.
- Requests use your own token. Nothing is proxied through a third party.
- The cover is downloaded by your server only when you pick a game and save it, then stored on your instance. Your browser never loads images from BoardGameGeek.
- Fetched data stays on your instance for personal use, and guest links expose only the games you explicitly allow.
Data and images belong to BoardGameGeek and its contributors. Powered by BoardGameGeek.