Back to home

My work

Things I've built.

A running list of projects — from homelab infrastructure to iOS apps. Some shipped, some in progress, all built because I wanted to learn something.

cayson.dev — portfolio
In progress iOS 01
Grove

A personal finance app for iOS built in Swift and SwiftUI, designed specifically for students and young adults. Most budgeting tools are built for people who already know what they're doing — my app will be built for people who are just starting out.

The goal is to make managing money feel approachable rather than overwhelming. Clean UI, minimal friction onboarding, and a design language that doesn't feel like a bank threw up on your screen. Built entirely for iPhone.

Currently in active development. More details coming when it ships.

Swift SwiftUI iOS Xcode
Platform
iOS
iPhone only

Category
Finance
Personal money mgmt

Status
WIP.
Active development
Live Self-hosted 02
cayson.dev Homelab

A full self-hosted server infrastructure running out of my dorm room on a 1U rack server. Built from scratch on Proxmox VE with 8+ LXC containers — each isolated, networked, and purpose-built.

Public services (this site, Gitea, Nextcloud, Vaultwarden) are exposed via Cloudflare Tunnels through Nginx Proxy Manager with zero open ports on the home router. Internal services like Grafana and the Proxmox dashboard are Tailscale-only. Pi-hole handles DNS ad-blocking across the whole network.

Monitoring is handled by Prometheus + Grafana with Node Exporter on the host. An ML trading bot (NVDA Trader v5) runs continuously in its own container. Phase 6 — Docker, K3s, and CI/CD via Gitea Actions — is next.

Proxmox Linux Tailscale Cloudflare Nginx Docker Grafana Prometheus
Containers
8+
LXC on Proxmox

Uptime
24/7
Room rack server

Public domain
cayson.dev
Via Cloudflare Tunnel
Shipped Desktop App 03
John DnD

A D&D 5e character management desktop app built in PyQt6 as a freshman CS final project. Dark crimson flat UI with a sidebar-driven layout for managing characters, stats, inventory, and campaign lore.

Features a signal-driven stat system where ability score changes automatically propagate to all derived modifiers, a notes and lore persistence layer backed by JSON, and a dynamic window title that reflects the active campaign name. Built collaboratively for my Freshman Final Project.

Python PyQt6 JSON Desktop
Platform
Desktop
Windows / macOS / Linux

Framework
PyQt6
Python GUI

Status
Done.
CS final project