The client work below is what pays the bills. This is what I build to find out whether I can. Every one of these is checkable, because the code is on GitHub.
A self-hosted family media server. A Go backend with JWT auth, HLS streaming, seek, per-user watch progress, TMDB metadata, subtitle download, trickplay and a background job runner, over SQLite.
The client is a single Flutter codebase that builds to Android, Windows, Linux and the web. Tests cover the media, playback and job layers.
GoFlutterSQLiteJWTHLS
A desktop player that unifies Spotify and YouTube Music into one queue, built as an Omarchy plugin. A roughly 3,800-line Python engine sits behind a QML service and bar widget.
The engine speaks to the Spotify Web API, spotifyd, MPD, ytmusicapi, yt-dlp and pactl. The HTTP API is loopback-only with a minted bearer token, Origin and Referer rejection, a Host allowlist and POST-only mutations. Runs as a systemd user service.
QMLPythonOAuthsystemd
A Final Fantasy XIV plugin that manages party-finder presets, with a crowdsourced API client, an achievements and rating system, and a full in-game UI.
It has been forked and adopted by other developers, which is the part I did not expect.
C#.NETPlugin API
A desktop bar widget showing live Discord voice-call state: a latency-coloured dot, who is talking right now, and mute state, read over local RPC.
It uses Discord’s own voice detection rather than guessing, and works against native, Flatpak, Snap and Vesktop clients.
PythonQuickshellDiscord RPC
A React and Material UI admin panel for a transcription service, with live queue status, call history and error panels over WebSockets.
Still on react-scripts, which is deprecated. Migrating to Vite is on the list.
ReactMaterial UIWebSockets