Projects

Personal projects I design, build, and use every day. Built with AI pair-programming tools; the product decisions, architecture, data modeling, and code review are mine.

  1. 01 — loa-planner

    Lost Ark Planner

    Character progression and gold planner for Lost Ark

    SvelteKitSvelte 5TypeScriptTailwind CSSVite

    Plans progression across a full roster of characters. It calculates honing and material costs, tracks owned materials and weekly gold income, and projects whether the roster will have enough gold by a target date.

    • Roster management with per-character honing, karma, engraving, and accessory planning
    • Gold projection chart comparing logged balance history with the gold required by a target date
    • Automatic gold log covering every purchase, deposit, and raid clear
    • Saved plans persisted locally in the browser
  2. 02 — anime

    Anime Watchlist

    Anime tracking and discovery built on the AniList API

    SvelteKitSvelte 5TypeScriptTailwind CSSGraphQLIndexedDBCloudflare WorkersWorkers KV

    A watchlist manager backed by the AniList GraphQL API. It browses current and past seasons, recommends shows by genre, tracks progress and rewatches, and builds shared watch-party lists. A Cloudflare Worker backed by Workers KV keeps everything in sync across browsers.

    • AniList responses cached in IndexedDB for six hours, so repeat visits load quickly and survive flaky connections
    • Season browser, genre-based recommendations, backlog, and rewatch tracking
    • Cross-browser sync through a Cloudflare Worker with Workers KV storage, so the watchlist follows you between devices
    • Shareable list URLs and exportable image infographics
  3. 03 — mouse-research

    Mouse Research Intelligence

    Knowledge graph platform built from mouse genetics literature

    In progress ReactViteTypeScriptHonoMongoDBSQLitePrismaLLM extraction

    Ingests papers from PubMed, Europe PMC, MGI, UniProt, ChEMBL, and other biomedical sources, then uses an LLM to extract sourced facts about genes, diseases, and drugs into a MongoDB knowledge graph. Every fact keeps a receipt back to its paper and quote, and every quote is checked against the source text before it's trusted, so researchers can verify AI-read findings rather than take them on faith.

    • Ingestion pipeline across ten public sources (PubMed, Europe PMC, PubTator, MGI, UniProt, Gene Ontology, Reactome, ChEMBL, Disease Ontology) with raw payloads landed in SQLite before deterministic shaping into MongoDB
    • LLM-driven fact extraction with quote verification against source text, confidence scoring, and multi-pass re-reads that stop once no new facts are found
    • Conflicting evidence is kept and flagged rather than silently resolved, so contradicting papers stay visible for a human to weigh
    • Investigation workspaces with a human-in-the-loop verification queue for AI-extracted quotes, gap detection, and entity bookmarking
  4. 04 — my-gym 5 screens

    My Gym

    Subscription-free iOS and Android app for home exercise equipment

    In progress ExpoReact NativeTypeScriptExpo RouterSQLiteBluetooth LEReact Native SVGJest

    Reads live data straight from a home treadmill, bike, elliptical, rower, or heart-rate strap over Bluetooth FTMS or Wi-Fi, records every workout second by second, and keeps it all on the device. No account, no server, and no subscription to see your own numbers.

    • Bluetooth FTMS parsing for treadmill, indoor bike, cross trainer, and rower data, plus a heart-rate strap that can join any live session
    • Live workout screens tailored to each machine type, with 1 Hz sample recording, pause and finish, and auto-pause when movement stops
    • History with weekly, monthly, and yearly charts, a per-session timeline, and calorie estimates from power or distance
    • Local-first SQLite storage with CSV export, and Wi-Fi discovery over mDNS for Wahoo DIRCON devices
    • Phone and tablet layouts from one codebase, designed screen by screen before implementation
  5. 05 — recipes

    Recipes

    Recipe collection fed by a companion Chrome extension

    SvelteKitTypeScriptTailwind CSSChrome ExtensionsCloudflare WorkersWorkers KV

    Clips recipes from any website with a Chrome extension and syncs them into a personal collection through a Cloudflare Worker backed by Workers KV, so the collection is the same in every browser. Recipes can be rated, tagged, and turned into a shopping list.

    • Chrome extension that captures recipes from any page
    • Cloudflare Worker and Workers KV backend that syncs the collection between the extension and any browser, secured by a private collection key
    • Ratings, tags, favorites, and a generated shopping list