Things I build.

A collection of apps and tools I've made — Android apps, browser tools, and little utilities. Mostly for my family and myself.

Projects

18 projects

Sentinel

In progress

A minimalist Android home launcher that doubles as a self-control tool: scheduled app blocking, tamper notifications, and linked accountability partners who can see each other's status.

AndroidKotlinJetpack ComposeHilt

Arcade

In progress

A personal, ad-free games hub for Android — one app hosting several games (Minesweeper, a Jetpack side-scroller) with more designed to drop in later.

AndroidKotlinJetpack ComposeRoom

Clean Viewing (TV)

Working

An Android TV app that loads a streaming site in a full-screen WebView and filters profanity in real time — masking profane subtitles and muting those lines. A D-pad virtual cursor makes the site usable with a remote.

Android TVKotlinWebViewTypeScript

Clean Viewing (Extension)

Working

The shared filter core, as a real Chrome/Firefox extension (Manifest V3): masks profanity in captions and mutes the audio in real time on Flixtor, Netflix, Prime Video and Crunchyroll. The TV, phone, and kiosk apps all bundle this same engine.

TypeScriptChrome ExtensionManifest V3Vite

Clean Viewing (Kiosk)

Working

Turns a spare Linux PC into an Android-TV-style streaming box: a remote-navigable hub for Flixtor, Netflix, Prime Video and Crunchyroll with the same filter applied. Desktop Chrome's fully-provisioned Widevine CDM makes this work where the Android app can't.

LinuxBashChrome ExtensionKiosk

Clean Viewing (Remote)

In progress

An Android companion app for the Clean Viewing kiosk: discovers it on the LAN and sends navigation commands, so the TV box can be driven from a phone instead of a physical remote.

AndroidKotlinJetpack Compose

Clean Viewing (Phone)

Working

The phone companion to the TV app: a full-screen WebView that loads a streaming site and injects the same shared profanity filter, with a native touch UI and auto-rotation while a video is fullscreen.

AndroidKotlinWebViewTypeScript

D&D Toolkit

In progress

A file-based D&D toolkit: a flexible character sheet today, with a campaign wiki, session log, and audio-to-summary pipeline planned. All data lives as plain JSON + markdown, versioned with git and rendered by a local dashboard.

ReactViteExpressTypeScript

Scripture Study

Working

Personal Android app that generates AI reflection questions for scripture passages and conference talks, using a bring-your-own-API-key model (OpenAI, Gemini, or Groq) with results cached locally.

AndroidKotlinJetpack ComposeRoom

VerseReflect

Working

A public Play Store fork of Scripture Study: the same AI-generated reflection questions, but backed by a shared Cloudflare Worker proxy with Google Sign-In, per-user quotas, content moderation and a cost cap instead of a personal API key.

AndroidKotlinCloudflare WorkersGoogle Sign-In

Measure

Working

A small, offline Android unit converter — length, weight, temperature, volume, cooking units and more — that copies the result to your clipboard so you can paste it wherever you need it.

AndroidKotlinJetpack Compose

Remote Claude Approval

Working

Approve or deny Claude Code's permission prompts from your phone over Telegram. When you're away from the desk, "allow this command?" prompts arrive as a message with Approve / Deny buttons; your tap decides whether the tool runs.

PowerShellTelegram Bot APIAutomation

Family Frame

In progress

A wall-mounted family dashboard for an Android tablet kiosk: a shared calendar synced from Google, a rotating chore board, a grocery list, a photo slideshow, weather, and voice input, backed by an Express API.

ReactViteCapacitorExpress

Med Reminder

Working

Post-surgery Android app for alternating Ibuprofen/Tylenol on a timer: confirming a dose schedules the next one via AlarmManager, with snooze and a repeating chime so a face-down phone doesn't get missed.

AndroidKotlinJetpack ComposeRoom

Pray Reminder

Working

Android app that shows a full-screen "remember to pray" reminder on the first unlock of the day within a configurable window, with snooze, an optional sound, and a local gratitude journal.

AndroidKotlinJetpack ComposeRoom

Project Notes

In progress

A block-based note-taking Android app for tracking household projects: headings, checklists, drawings and other block types organized per project, stored locally with export/import.

AndroidKotlinJetpack ComposeRoom

Herald

Scaffold

An early-stage household PA system: offline text-to-speech announcements broadcast to Chromecast speakers around the house, built on FastAPI with a scheduler for recurring messages.

PythonFastAPIChromecastAPScheduler

YT Music Splitter

Working

Turns a long recorded-audio file into individually tagged mp3 tracks for a kid's mp3 player: splits on silence, fingerprints each segment against AcoustID/MusicBrainz for title/artist/art, and flags low-confidence or duration-mismatched matches for manual review instead of mislabeling them.

PythonffmpegChromaprintAcoustID