← Home

All projects

The full registry — 25 entries. The six on the homepage are the ones worth your time first.

A screenshot of the project

Triangulator

Enterprise platform that automates course transfer evaluation between universities. I was technical lead: credit equivalency is modelled as a graph in Neo4j alongside Postgres, served through a Python/Flask GraphQL API, and reviewed in a Nuxt admin where institutions assign, boost, and reject ranked equivalency suggestions with a reason attached.

TypeScriptVueTailwindNuxtPostgresPython+6
A screenshot of the project

gamezilla.app

gamezilla.app is a real-time multiplayer gaming platform built on a full-stack TypeScript implementation of the Elm architecture. Migrated off the Lamdera platform — reimplementing what Lamdera gave away for free (wire format, state persistence, client reconnect) over plain WebSockets, incrementally, without a flag day.

TypeScriptReactPostgresTailwindWeb SocketsBun+1
A screenshot of the project

Geviti

Health and longevity platform combining bloodwork analysis, personalized supplement protocols, prescription therapies, and care team coordination. I ship member-facing features across web and React Native, on Postgres and AWS, in a domain where correctness and auditability outrank velocity.

TypeScriptReactPostgresBunAWSReact Native

Infrastructure control plane

One services.yaml is the desired state for a personal production fleet — Railway services, Cloudflare DNS and redirects, Neon databases, R2 buckets, GitHub secrets, and tunnels. A reconcile loop plans every phase and applies it. Stateless drift is removed freely; stateful resources are never auto-deleted, only reported with the explicit destroy command to run by hand. CI gates on Vault readiness before it will deploy anything. This is the fleet this site is served from, alongside a self-hosted OpenBao secrets service and a Turborepo remote cache backed by Cloudflare R2.

TypeScriptBunDockerPostgresS3
A screenshot of the project

headless-combobox

A production-ready, framework-agnostic, zero-dependency TypeScript combobox library. The widget is a state machine with no DOM of its own, so one core drives React, Svelte, or anything else while staying WCAG conformant. Documentation site.

TypeScript
A screenshot of the project

LLM Proxy

Self-hosted OpenAI-compatible HTTP proxy that routes requests to configurable upstream APIs, supports custom auth headers (API keys and bearer tokens), and logs traffic to Postgres for analysis, health checks, and cost visibility.

TypeScriptReactTailwindBunPostgresDocker+1
A screenshot of the project

Orchard

ASU platform that lets instructors build highly customizable assignments. I architected and implemented the LTI 1.3 integration with ASU's LMS — OIDC single sign-on, signed grade passback, key rotation, and the failure paths for when a grade does not post.

PHPMySQLDrupalBootstrapJavaScript
A screenshot of the project

Study Hall

Education platform ASU runs in partnership with the Study Hall YouTube channel. I rebuilt payment processing — cutting payment failures and turning a fragile flow into one that could be reasoned about and changed safely.

JavaScriptVueNuxtBootstrapAWSDynamoDB+3
A screenshot of the project

normalizer.app

Automates data normalization workflows, mapping tabular data (Excel, CSV) between schemas without manual spreadsheet surgery or one-off Python scripts.

TypeScriptReactTailwindBunPostgresS3+2
A screenshot of the project

Image service

Image optimization service written in Go for zero-configuration self-hosting, so an application can serve optimized images without taking on a vendor.

Go
A screenshot of the project

Screenshots as a Service

SaaS for generating web page screenshots programmatically, with retries and queueing around a headless browser pool. Its successor still generates every screenshot on this site.

CSSHerokuMaterial UINode.jsPostgresPuppeteer+4
A screenshot of the project

moviefinder.app — one app, four runtimes

The same movie-discovery app, built four times, to find out where each runtime actually charges you. Rust for the strictest version, Go for the plainest, React for the familiar baseline, and ClojureScript for the one that reshaped the data model. Holding the product constant is what makes the comparison mean anything.

RustGoTypeScriptReactClojureScript
A screenshot of the project

ASU Earned Admissions

Platform where learners earn college credit toward admission to over 100 ASU degree programs. I refactored the main backend, built the Salesforce automation that syncs with ASU's Canvas LMS, and shipped a new program opt-in flow.

SalesforceNode.jsTypeScriptExpressDynamoDBAWS
A screenshot of the project

Airr Product Demo

Interactive product demo for Airr, an enterprise tool that automates transcript consumption and analysis — the data processing pipeline and the workflow UI over it.

TypeScriptNode.jsPostgresReactTailwindTRPC+1
A screenshot of the project

Sun Devils

Official site for ASU's Sun Devils athletics program. I built the interactive React components — live game schedules and dynamic news feeds.

BootstrapDrupalJavaScriptReactCSSPHP
Everything else — 10 early and small projectsgames, toys, and client sites
A screenshot of the project

Fullstack Todo App

Full-stack task management application with user authentication and real-time synchronization. Demonstrates end-to-end development capabilities from database design to responsive UI implementation.

TypeScriptVueCSSExpressJavaScriptTailwind+2
A screenshot of the project

Connect Four: AI & Multiplayer

Real-time multiplayer Connect Four game with WebSocket-based synchronization. Features smooth animations, responsive design, and seamless online gameplay for multiple concurrent users.

CSSGreensockHerokuMaterial UINode.jsRamda+4

LTI compatible quiz maker

LTI-compatible quiz creation platform that integrates seamlessly with Learning Management Systems. Enables instructors to build custom quizzes and assessments while providing students with a native LMS experience.

CSSExpressNode.jsTailwindTypeScriptVue
A screenshot of the project

Courier Company Website

Professional marketing website for a healthcare courier company, featuring responsive design, optimized performance, and clear communication of services to potential clients.

CSSMaterial UINext.jsReactTypeScript
A screenshot of the project

Anime Blog

Modern JAMstack blog built with Vue and Gridsome, featuring a headless CMS integration for content management. Demonstrates static site generation and performance optimization techniques.

CSSJavaScriptSanityVueBootstrapGraphQL+1
A screenshot of the project

Smooth Snake Game

Classic Snake game implemented using functional programming principles, featuring smooth animations and responsive controls. Showcases clean code architecture and modern React patterns.

CSSJavaScriptRamdaReact
A screenshot of the project

Match Three

Match-three puzzle game inspired by Candy Crush, featuring engaging gameplay mechanics, smooth animations, and responsive design. Demonstrates game development skills and state management expertise.

CSSJavaScriptRamdaReactReduxRedux Saga
A screenshot of the project

Simon Says

Interactive implementation of the classic Simon Says memory game, featuring visual and audio feedback, progressive difficulty, and polished user interface design.

CSSJavaScriptRamdaReactReduxRedux Saga
A screenshot of the project

Cheese

Web application for generating customizable event identification cards with client-side image manipulation. Explores advanced browser APIs for image processing and demonstrates creative problem-solving in web development.

CSSTypeScriptMaterial UIReactFirebase
A screenshot of the project

Pickflix

Social movie discovery platform enabling users to watch trailers, write reviews, and collaborate on movie lists with friends. Features real-time updates and a comprehensive movie database integration.

ExpressHerokuJestMaterial UINode.jsPostgres+7