$ ls ./projects
My Projects
Course work, personal projects, and the infrastructure I run at home.
Homelab Infrastructure
// the_stack
How the pieces fit together. Guests live inside the Proxmox host, storage attaches to it, and Tailscale reaches it as an overlay rather than through an open port.
- wired LAN
- Tailscale overlay
- attached storage
- Proxmox VE
- The core of my lab, running on a Lenovo System x3250 M6. A bare-metal host with 32GB of RAM running LXC containers and VMs for development and production.
- ZFS on a 5TB DAS
- Direct-attached storage for the host, running ZFS for storage reliability.
- Docker Compose
- Orchestration for microservices including web servers and internal tools.
- Jellyfin media pipeline
- Automated media delivery stack with hardware-accelerated transcoding and ZFS-backed persistent storage.
- media-automation
- Request handling and library automation for the Jellyfin library. Several services running together in one container.
- Tailscale VPN
- Remote access built on WireGuard. Lets me manage internal services without opening a port at the edge.
// Hardware: Lenovo System x3250 M6, 32GB RAM, ZFS on a 5TB DAS for storage reliability.
Software Development
Sendline
Built a ski and snowboard tracking app in Flutter, backed by Supabase and PostGIS. Modelled runs as geospatial data and enforced per-user access to it with row-level security policies at the database layer.
Taskd - Distributed Task Scheduler
Task scheduler with priority queues, retry handling, and real-time metrics. Built around the Strategy, Decorator, Builder, Observer, and Factory patterns, with 90%+ test coverage and 1000+ tasks/second throughput.
[ View Code ]SteadyPlan
Built the backend for a Kanban-style project management app in PHP and PostgreSQL. Designed the database around task reordering and team collaboration, and wrote the API the frontend consumes.
[ View Code ]Bracket Bets
Client-side prediction game that pulls historical tournament data from a third-party GraphQL API, parses the JSON brackets, and renders them as a Top 8 guessing interface.
[ View Code ]