Projects

Shrinkcord and FlickPicks are on my resume. The rest are older client work and experiments.

  • Shrinkcord

    Compress JPEG, PNG, and WebP in the browser before you upload to Discord. Nothing leaves your machine. There is also a NestJS side project with BullMQ and Redis for queued jobs, progress events, pause, resume, and retries.

    Next.jsReactTypeScriptTailwind CSSWeb WorkersNestJSBullMQRedis

  • FlickPicks

    Movie and TV discovery app with combined search, detail pages, trailers, and an anonymous browser-scoped watchlist.

    ReactTypeScriptViteFastAPITMDBCloudflare Workers

  • LinguaPop

    Practice Spanish while you browse. This Chrome extension replaces selected eligible English words and phrases with Spanish, then saves encountered vocabulary for later review.

    TypeScriptViteManifest V3Chrome Extensions API

  • RetroTV

    Watch public-domain classics together in synchronized rooms with live chat and a TV Guide-style schedule.

    ReactTypeScriptViteTailwind CSSFastAPICloudflare WorkersDurable ObjectsWebSockets

  • Stocktwits

    Social investing site with live quotes and a loud community. I was on the team that migrated toward Next.js and shipped a homepage ticker I prototyped.

    ReactNext.jsTypeScriptREST APIsReal-time data

  • Ping Pong Multiplayer

    Browser Pong with same-keyboard, CPU, and invite-a-friend modes. Remote matches share one simulation via a Cloudflare Durable Object so both players stay in sync.

    ReactTanStack StartTypeScriptViteTailwind CSSCloudflare Workers

  • Openblock Labs

    Verifiable data intelligence for protocols

    ReactTypeScriptWeb3Data pipelines

  • Transfix FMS

    Grow and manage your freight business

    ReactTypeScriptGraphQLRESTRuby on Rails

  • Opentrons Labworks

    Robots for Life Scientists. Labs in 40+ countries trust Opentrons to help automate their workflows. We offer 60-day risk-free returns & flexible payment options.

    ReactPythonElectronHardware integration