Featured Projects

Recent projects showcasing full-stack development, AI integration, and modern web technologies.

Azure OpenAI
Claude
Cloudflare Access
Cloudflare R2
Cloudflare Workers
Drizzle ORM
Expo
Google Gemini
Next.js
PostgreSQL
React
Stripe
TypeScript
WebSockets
better-auth
tRPC
MigrationCRM
Live
MigrationCRM screenshot

Multi-tenant practice-management CRM for Australian migration agents: matters, documents, e-signing, trust accounting and invoicing, with an AI document-analysis layer.

Next.js
TypeScript
PostgreSQL
Drizzle ORM
+3 more
PunchHQ
Live
PunchHQ screenshot

Time-clock SaaS for multi-venue hospitality. Staff clock in at a shared iPad kiosk with a PIN and selfie; owners get live rosters. Tenant isolation enforced by Postgres row-level security.

Next.js
TypeScript
PostgreSQL
Cloudflare Workers
+2 more
SayForge
Live
SayForge screenshot

Mobile AI recorder that transcribes on-device as you speak, then reshapes the transcript into a finished document: a clinical note, a site report, a client quote.

Expo
TypeScript
tRPC
PostgreSQL
+2 more
VisaShape
Live
VisaShape screenshot

Website and client portal for an Australian immigration practice: eligibility assessment, consultation booking and document upload. Fully bilingual English/Persian with RTL layout.

Next.js
TypeScript
Drizzle ORM
better-auth
+2 more
AI Planner
Live
AI Planner screenshot

Describe a goal in one sentence and AI designs the tracker for it, whether that is a gym split or a 30/60/90 onboarding plan. Edit inline, track with widgets, share read-only.

Next.js
React
TypeScript
PostgreSQL
+2 more
FairShare
Live
FairShare screenshot

Splits shared costs for groups and works out the fewest payments that settle everyone up. Add an expense by typing or speaking a sentence. Web plus native iOS and Android.

Next.js
Expo
TypeScript
PostgreSQL
+2 more
The Salsa Foundation
Live
The Salsa Foundation screenshot

Website and member app for a Melbourne salsa studio: class schedules, check-ins, attendance and training videos, synced read-only against the studio's existing CRM.

Next.js
TypeScript
Drizzle ORM
better-auth
+2 more
FoodLens
Live
FoodLens screenshot

Point your phone at a foreign menu for an instant translation with cultural context and a generated image of every dish. Eighteen languages, on web and native mobile.

Next.js
Expo
TypeScript
Google Gemini
+2 more
DataExtractify
Live
DataExtractify screenshot

Turns invoices, receipts, forms and ID documents into structured data. Describe the fields you want in plain English, then batch-process hundreds of files at once.

Next.js
React
TypeScript
Google Gemini
+2 more
ai-gateway
Live

ai-gateway

One OpenAI-compatible endpoint in front of every model provider. Apps call a stable tier name instead of a model id, and each request is cost-metered against a per-key budget.

TypeScript
Cloudflare Workers
Claude
Google Gemini
+1 more
Real-time social matching platform

Real-time social matching platform

Community matching product: a profile discovery deck, mutual matching, and one-to-one chat over WebSockets with moderation and safety tooling. Shown unnamed by choice.

Next.js
TypeScript
PostgreSQL
WebSockets
+2 more
uptime-monitor

uptime-monitor

Uptime checker that catches the outage a status-code check misses: it asserts text that only appears once a page has fully rendered, so a 200 that hangs is reported as down.

TypeScript
Cloudflare Workers
Self-hosted secrets platform
Live

Self-hosted secrets platform

A self-hosted secrets manager on a Raspberry Pi behind Cloudflare Access, with one wrapper that injects secrets into every project's dev and CI runs. Write-up on the blog.

Cloudflare Access
JokeHub
Live
JokeHub screenshot

Community joke-sharing site with search, filtering, ratings, favourites and moderation.

Next.js
TypeScript
PostgreSQL
better-auth