Skip to content
~/skunk $ ls ./projects

PROJECTS

Things I'm building and breaking

~/skunk $ cat gigfiend.md

GigFiend

Facebook Events died in 2018. This is what replaced it.

GOAL

Turn "I saw something cool" into "I know if my friends are actually free and how many tickets to buy" for local gigs and events, without relying on the discovery platforms that quietly died along with Facebook Events' public API.

NEEDS

A real event data pipeline (Ticketmaster's Discovery API, PredictHQ for the community long tail Ticketmaster misses), a swipe interface that earns its keep instead of reading as a Tinder reskin, and a friend-invite/RSVP loop that replaces the scattered group chat — then it deep-links to the real ticket source instead of pretending to own the purchase.

PURPOSE

Proof that a "boring" coordination problem — who's actually free, how many tickets to buy — is worth solving properly instead of leaving it to chat threads. A live, authenticated Next.js app with a real Postgres backend, not a demo.

Next.js 15TypeScriptDrizzle/PostgresNextAuth (Google)Ticketmaster Discovery APIFramer Motion

STATUS Live (Sydney, Melbourne fast-follow)

Show more →
~/skunk $ cat dream-home-pipeline.md

Dream Home Pipeline

The real-estate portal shows you the photos. I built the rest.

GOAL

Find cheap NSW rural land that already carries valuable native bush — the kind that earns biodiversity-credit income — and screen it systematically over a multi-year search.

NEEDS

A 30-second automated screen of any listing against 31+ government biodiversity and hazard layers, a scoring rubric that finds income-ready blocks — enough of the right native vegetation, in a catchment with real demand — and a per-property credit-revenue projection, so every candidate gets an auditable dossier instead of a gut feel.

PURPOSE

Biodiversity credit markets are opaque and broker-mediated, and the "buy cheap bush → earn credit income" thesis has no public tooling. This turns a years-long search into a versioned shortlist and flags the dealbreakers (title, slope, native title) before a wasted site visit.

Python4× MCP servers (FastMCP)NSW SEED/cadastre dataBAM scoring

STATUS Active (personal)

Private — locations & financials generalized.

Show more →
~/skunk $ cat imagen-mcp.md

Imagen 4 MCP Server

Imagen 4 + Claude, actually talking to each other.

GOAL

Expose Google's Imagen 4 and Veo video generation directly inside Claude as a Claude Code plugin.

NEEDS

Stop copy-pasting between a chat and a web UI — "generate this" and it happens, in-session.

PURPOSE

Ship production AI tooling at the bleeding edge, native to the Claude Code plugin system.

TypeScriptNodeGoogle Imagen/Gemini APIMCP

STATUS Active (v2)

Private repo — publishable.

Show more →
~/skunk $ cat casevault.md

CaseVault

Built for people whose adversary has server access.

GOAL

A workers-comp case-management app where the server is blind by design — zero-knowledge encryption, client-held keys only.

NEEDS

Claimants need court-ready document handling the insurer can't covertly read; subpoena the database and you get ciphertext. Cross-platform (iOS, Android, web) with ML document classification.

PURPOSE

Show real security thinking under an adversarial constraint, not tutorial CRUD.

SvelteKitCapacitor (iOS/Android)XChaCha20-Poly1305Drizzle/PostgresONNX ML

STATUS Pre-beta

Not yet public.

Show more →
~/skunk $ cat spinners.md

Spinners

Spent three months getting Beyblade physics right.

GOAL

A LÖVE2D roguelike with real Box2D physics, built to a standard most hobby games never reach.

NEEDS

60+ modules, 700+ automated tests, and a headless balance simulator that runs thousands of rounds to tune the spin physics — because the wrong physics bothered me.

PURPOSE

The craft card: proof the engineering rigour is real, even on a weekend project.

Lua 5.1 / LÖVE 11.5Box2DBusted (700+ tests)

STATUS Active (hobby)

Private repo.

Show more →
~/skunk $ cat skunk-systems-site.md

This Site — skunk.systems

You're looking at the portfolio piece.

GOAL

Ship a fast, distinctive site that is itself the proof of work — designed, built and tuned end-to-end, not a template.

NEEDS

A published, reusable design system, light/dark theming, a terminal identity, a markdown blog, and genuine performance — mobile Lighthouse 90, CLS 0, auto-optimized images, and server-rendered content for SEO + AI discovery.

PURPOSE

Best-practice "vibe coding" in the open: Next.js App Router, a token-driven design system, agentic-discovery SEO. The medium is the message — if my own site is sloppy, why trust me with yours?

Next.js 14TypeScriptTailwindnext/font + sharpDesignSync

STATUS Live (you're on it)

Show more →