Projects tafelrunde

tafelrunde

Live · sign-in required

A map of the restaurants we have been to, blind ratings and a date planner. Four people, one evening a month.

Period
2026
Role
Solo — concept to operations
Status
Live, behind single sign-on
Code
Private repository

Four people, one evening a month, and every time the same question: where have we been, and was it any good? The answer sat in a PDF that nobody opened.

Tafelrunde turns that into a map where every visit carries its photos and its rating, a wish list with a random pick for the evenings nobody has an idea, and since the last round of work a planner that settles the date of the next one.

Across forty-two commits the project carries nineteen architecture decisions — more than anything else here. That is no accident: with four users a wrong decision costs little, so it is worth writing it down instead of debating it.

Stack
TypeScriptFastifySQLite (better-sqlite3)React · ViteMapLibre GL JSProtomaps / PMTilesSingle-Sign-on (OIDC)Docker

Decisions

ADR 0004

SQLite instead of Postgres

Four users, a few hundred rows. A file on disk is backed up by copying it — a second container with a backup routine of its own would be effort with nothing in return.

ADR 0003

Protomaps instead of MapTiler

The map data sits on my own server as a single PMTiles file and is read with range requests. No key, no quota, no third party reading along where we go to eat.

ADR 0011

Single sign-on instead of Basic Auth

Basic Auth had no notion of “who”: a rating could not be attributed to anyone. With a real sign-in behind it, every rating has a sender.

ADR 0017

Rate blind, reveal together

See the others' marks before you give yours, and the mark you give is no longer yours. Everyone rates alone; the reveal happens together.