MATTES.DEV

Projects

Things I build

Current work: two native Apple apps, an e-paper hardware project, an open-source component library and this site.

2025 → · Live

Clessira

A local-first time tracker for macOS, iPhone and iPad. The data is kept in a local JSON file; neither an account nor a server-side component is required. Idle detection with confirmation prompts, pivot-table reporting, Jira import, Git branch awareness, sandboxed export scripts, one-time purchase instead of a subscription. Available on the Mac App Store.

  • macOS
  • Swift
  • Local-first
  • Privacy

2026 → · Active

WordPace

A speaking-pace meter for iPhone and Mac. A limit is set in words per minute, and while speaking, the display shows a warning as soon as the rate exceeds it. The measurement runs over speaking time, so pauses are not counted as reduced pace. 45 presentation languages, each with its own limit; the microphone signal is processed on device and discarded afterwards. One purchase for both platforms.

  • iOS
  • macOS
  • Swift
  • On-device

2026 → · Active

reTerminal Departure Board

An e-paper departure board for Stuttgart's VVS transit network, running on a Seeed reTerminal E1001 (ESP32-S3, 7.5" e-paper). The ESPHome firmware fetches and parses live departures from the public EFA API on the device; three stops are merged into one sorted list, without an intermediate server.

  • ESPHome
  • ESP32-S3
  • E-paper
  • YAML

2026 → · v1.0

EPaper Components

A web component library for electrophoretic displays: just over eighty custom elements, no framework, no runtime dependencies. Animations, hover states and re-renders are omitted because of the refresh behaviour of the panels; interaction states are encoded as inversion and hatch patterns instead. All interactive controls are form-associated, the CSS is about 5 KB gzipped. On npm under MIT.

  • Web Components
  • TypeScript
  • E-paper
  • Design system

2026 → · Active

mattes.dev

This site. Hand-written HTML and CSS with no framework, no build step, and zero third-party requests — cookieless and DSGVO-friendly by construction. Inline scripts are pinned in the Content-Security-Policy by SHA-256 hash.

  • HTML
  • CSS
  • No build
  • A11y