Projects
Side projects, tools, and experiments. Each one has a write-up covering why I built it, how it works, and where it honestly stands.
Melofy syncs translated lyrics to whatever's playing on Spotify, YouTube Music, or Apple Music. Line by line, against the playhead, in your language. Translation runs through Gemini in two passes for accuracy. Ten free translations to start, then bring your own API key.
Install it from npm and mount one component to get a full video editor in a React app: trim, crop, filter, annotate and export, none of it touching a server. WebCodecs handles decode/encode wherever the browser supports it, FFmpeg compiled to WASM picks up the rest. The source file never leaves the user's machine.
A11y Auditor renders pages in real Chromium, then runs them through axe-core to surface accessibility violations, each one tagged with its WCAG rule and conformance level, filterable by severity and category, with the exact contrast ratio measured against the threshold it missed.
Auto Slug is a Strapi plugin that generates slugs automatically from any source field you pick in the Content-Type Builder. Duplicates get a numeric suffix, accents normalize, regeneration rules are configurable per field and the same logic runs server-side for entries created through the API, not just the admin panel.
Search Unsplash, scroll for more, open a photo full size. Skeleton placeholders occupy the grid slots their images will take, so the layout stays still while pages load.
Expose a Strapi v5 instance as a Model Context Protocol (MCP) server. AI clients (Claude Code, Claude web, Cursor, Codex, opencode, Continue, etc.) authenticate via OAuth 2.1 + PKCE and then call tools to browse content-types, read entries, create/update drafts, list media, and upload files, all governed by Strapi's existing role-based permissions.
06 projects / 5 still maintained