Projects
A connected ecosystem of frontends, APIs, and infrastructure I design, build, and self-host. The apps are the surface. Underneath, every project deploys to the same Kubernetes platform that runs this site, sharing sign-on, real-time messaging, and delivery pipelines.
Under the hood
Federated single sign-on
One account works across every app, with Google and GitHub sign-in federated through a self-hosted Dex identity provider.
Real-time everywhere
Live grids, scores, and standings update instantly for everyone, powered by WebSockets fanned out across instances over NATS.
Self-hosted on Kubernetes
Every app runs on a self-managed k3s cluster behind a single Envoy gateway, with highly available Postgres, sealed secrets, and full observability.
Continuous delivery
Shared CI/CD pipelines and reusable Helm charts build and test every service the same way, then Argo CD syncs the cluster to match Git.
The repositories
Real-time NFL squares platform built around a live grid that updates instantly as numbers are drawn and quarters end. Includes a contest state machine, automated winner calculation, and Google and GitHub sign-in through Dex.
Backend API that powers the Super Bowl squares game. Owns the contest lifecycle, persists state in PostgreSQL, and fans real-time updates out to every connected client. Documented with Swagger and protected with OIDC-validated JWTs.
Self-hosted k3s cluster that runs every app on this site: Argo CD keeps it in sync with this repo, Envoy Gateway fronts all traffic, and Dex federates Google and GitHub sign-in. Highly available Postgres, NATS messaging, Sealed Secrets, and a full metrics and logs stack back it all.
Reusable Helm charts shared across all my app deployments. Each chart bundles the standard pieces (Deployment, Service, HTTPRoute, autoscaling, monitoring) so a new app only needs a values file. Keeps every workload in the cluster consistent.
Reusable GitHub Actions workflows that build, test, and release every other repo. Covers Node, Go, Docker image publishing, and Helm releases, plus security scanning with Trivy and automated dependency updates with Renovate. Deploys are GitOps: a workflow bumps the Argo CD Application manifest and the cluster reconciles itself.
This portfolio site. React 19 + Vite prerendered to static HTML with React Router framework mode, styled with Material UI and Emotion, with persistent light/dark theming and scroll-driven animations. Shipped as a Docker image through the same workflows that deploy everything else.