MATTES.DEV

Blog

Writing

Notes on frontend architecture, local-first software and small builds without dependencies.

RSS feed →

Coffee Time: a passkey PWA for the shared office coffee tab

A PWA for the shared coffee tab in an office kitchen: passkey login without usernames, account names sealed with an RSA key the server never holds, prices frozen per booking, and an offline queue that cannot double-count.

EPaper: a web component library for e-paper displays

A web component library for electrophoretic displays: just over eighty custom elements without a framework, form-associated controls, and a design that follows from the refresh and contrast behaviour of e-paper panels.

WordPace: measuring speaking pace on device

A speaking-pace meter for iPhone and Mac: a words-per-minute limit, a full-screen warning when it is exceeded, measurement over speaking time instead of wall-clock time, and audio that is discarded after the calculation.

An e-paper departure board on a reTerminal

A Seeed reTerminal E1001 as a live VVS departure board with ESPHome: the API is queried and parsed on the device, and no intermediate server is involved.

Clessira: a local-first time tracker for macOS

A local-first time tracker for macOS, iPhone and iPad: idle detection with confirmation prompts, pivot-table reporting, Jira import, Git branch awareness, and a local JSON file as the data store.

Local-first, and why it shapes Clessira

Local-first software keeps the authoritative copy of the data on the user's device. What that storage model means in practice, and which design decisions it implies for a time tracker.