Projects

A handful of things here outgrew the post that started them and turned into something with a repository, a version number and a reason to keep running. These are those, with everything I wrote about them along the way.

FDDB-Exporter

MCP · Spring Boot · MongoDB · InfluxDB Actively maintained

fddb.info keeps a good food database and a usable diary, and then throws the diary away after a while. It also keeps every graph behind the premium tier. FDDB-Exporter pulls your own entries out of it and puts them in a database you control, with a REST API, a web UI and a Grafana-shaped view of what you actually ate.

It started in 2021 as a Python script that scraped a daily calorie total into Postgres. It grew into a Java application with full entry retrieval, then got a Flutter app on top of the same API, later re-released against a rewritten backend. That Flutter app is deprecated now that the backend has gone through a full redesign and got its own UI: a mobile-installable web app, an MCP server so an assistant can answer questions about the diary, and graphs, stats and trends for what you actually ate.

Smart Home Dashboard

Inkplate 10 · ESP32 · Home Assistant · k3s Built and running

A 10" e-ink panel on the wall showing weather, calendar, room temperatures, server load, power draw and internet traffic. It runs on a battery, wakes every 20 minutes to fetch one pre-rendered image from Home Assistant, reports its own voltage over MQTT and goes back to sleep.

I could not find a guide that covered the whole thing end to end, so I wrote one: the hardware and the battery, the architecture, the ESP32 code, the Home Assistant setup, every component on the dashboard, and the k3s cluster behind it. It later ended up featured on Soldered’s Kickstarter campaign for the Inkplate 2.

Smaller tools

The rest of the workshop: small enough that a repository and a line of explanation is the whole story. Several are forks I changed to fit my own setup and left public because someone else had the same problem.

Everything else is in the archive →