Projects

Tracker TV

active

A movie and TV series tracker. Watchlist, progress season by season and episode by episode, and a catalogue that keeps itself current from TMDB.

Elixir / Phoenix (REST JSON API)Next.js (App Router, SSR), TypeScriptPostgreSQL 18Meilisearch +2

A site for learning to encode and decode characters by hand: a sandbox that breaks the conversion down as you type, and exercises where you do the work yourself, bit by bit.

Elixir 1.20 (OTP 29)Phoenix 1.8, LiveView 1.2SQLite (WAL mode), EctoTailwind v4 through Vite +2

Postr

active

A self-hosted web app to manage poster artwork in a Plex or Jellyfin library: upload, queue, push, restore.

Go 1.27, Echo v5Vue 3, TypeScript, Nuxt UI, PiniaSQLite (pure Go, no cgo), sqlc, gooseServer-Sent Events +1

Watchue

active

A self-hosted watcher for Philips Hue. It records every light that goes on or off and pings you on Telegram or Discord.

Go 1.27, Echo v5Vue 3, TypeScriptSQLite (pure Go, no cgo), sqlc, gooseHue CLIP v2 event stream +1

A Jellyfin plugin that keeps a BetaSeries account up to date on its own: whatever you finish watching on your server gets marked watched, whatever you uncheck gets removed.

C# / .NET 10Jellyfin 10.11+ / 12+ pluginBetaSeries API, OAuth2HTML/JS config page in the dashboard +2

A Jellyfin plugin that drives Philips Hue lights from playback: the room goes dark when the film starts, warms back up on pause, and returns to how it was on stop.

C# / .NET 10Jellyfin 10.11+ / 12+ pluginHue CLIP v2 API, local HTTPSHTML/JS config page in the dashboard +2