Full-stack engineer in Melbourne, building SaaS on the edge.
Astro · React · TypeScript · Cloudflare Workers · Supabase · Stripe
StreamVault — a production Twitch VOD archiving SaaS. Automatic stream capture, chat archive, role-based team access, and a self-pruning storage quota. Server-rendered Astro on Cloudflare Workers with Stripe-driven subscriptions, Supabase auth, and Backblaze B2 storage.
Hyperliquid Autotrader — a fully mechanical trading bot for Hyperliquid perpetual futures. WebSocket-driven entries and exits (~2s reaction), rule-based signals (RSI, Bollinger Bands, regime detection), ATR trailing stops with profit-locking giveback floors — no AI in the trading loop. Backtest numbers are pinned by a golden-master regression test in CI, so any change that shifts results fails the build.
VyOS DNS Manager — a web UI for managing DNS A records on VyOS routers, built for IT ops teams who'd rather not hand out router SSH access. FastAPI with server-rendered Jinja2 (no frontend framework), Azure Entra ID SSO with group-based admin roles, CSRF-protected forms, and a syslog audit trail on every change. Fully stateless Docker deployment — no database. MIT licensed.
→ Repo
- Ship to production, then iterate. StreamVault auto-deploys on every push to
mainvia Cloudflare Workers; CI gates type-checking, build, npm audit, and secret scanning. - Edge-first SSR over SPA wherever it fits. Astro for marketing + dashboard, React islands only where interactivity earns it.
- Database-layer access control. Postgres RLS on every table in StreamVault; the app and webhook handlers use distinct roles.
- Webhooks as the source of truth for any state that lives in a third party (Stripe subscriptions reconcile into Supabase, never the other way around).
- Golden-master testing for anything with money on the line. The autotrader's 180-day backtest is frozen byte-for-byte in CI — behavior changes must be intentional and re-blessed, never accidental.
📍 Melbourne, Australia