Muzzamil Khan (Muzza)

Hobby projects. Small, well-tested apps I built in my own time to solve day-to-day problems and try out new technology - tested down to the parts that fail quietly.

  • Dashboard showing current and lowest projected balance broken down by account, no combined shortfall, this month's money in and out, a sparkline of the projected balance across the forecast window, and the day-by-day transaction list beneath it. Sample data.

    Future Finance

    Forecast your future account balance, day by day

    • Next.js
    • TypeScript
    • tRPC
    • Prisma
    • PostgreSQL
    • Tailwind CSS
    • Vitest
  • Parent dashboard listing sealed bottles, with a prompt to pick a child and start a new letter. The child's photo and name are blurred.

    Message in a Bottle

    Letters to your kids, sealed until the day they're old enough

    • Next.js
    • TypeScript
    • Prisma
    • PostgreSQL
    • Auth.js
    • Vercel Blob
    • Tailwind CSS
  • Villagers

    Social deduction for one room and one phone per player

    • Next.js
    • TypeScript
    • Redis
    • Server-Sent Events
    • Tailwind CSS
    • Playwright
  • Quest master dashboard showing the quest board - a grid of daily chores as illustrated medieval quest cards, each with a point value.

    Family Quests

    Household chores as a family adventure game

    • Next.js
    • TypeScript
    • tRPC
    • Prisma
    • PostgreSQL
    • NextAuth
    • Tailwind CSS
  • Program builder showing a week overview with Monday and Wednesday sessions, alongside a panel of muscle overlap warnings and per-muscle volume landmarks.

    Workout Program Builder

    Build twelve-week training programs faster than a spreadsheet

    • Next.js
    • TypeScript
    • Prisma
    • Radix UI
    • dnd-kit
    • Tailwind CSS
    • Playwright

Showing Future Finance, 1 of 5

How I build

Encryption where it counts
In Message in a Bottle, a letter's contents are encrypted at the application layer before they reach the database, with the key held outside it. Reads fail closed and loud when the key is missing, so there is no quiet path back to plaintext.
Privacy by construction
In Villagers, every server-sent event stream is filtered for the player receiving it, and the projected spectator view is only ever sent public state. A client cannot leak a role it was never given.
Lean, solid testing
Tests concentrate where a mistake is silent - pure engines, schemas, and data loaders - rather than spread thinly across snapshots that break on every visual change.
A pure core, testable without the world
Future Finance's forecast engine has no React and no database access, so it runs identically on the server and in the browser and can be tested with plain function calls.

Stack

Frontend
  • Next.js
  • React
  • TypeScript
  • Angular
  • Tailwind CSS
  • CSS
Backend
  • Node.js
  • GraphQL
  • hapi.js
  • Laravel
  • PHP
  • Microservices
  • Event-sourced architecture
Cloud and infrastructure
  • AWS Lambda
  • Amazon ECS
  • AWS CDK
  • CloudFormation
  • Amazon S3
  • SQS
  • SNS
  • Docker
  • Vercel
Data
  • PostgreSQL
  • DynamoDB
  • MySQL
  • Oracle
  • Prisma
Testing
  • Vitest
  • Jest
  • Mocha
  • Playwright
Observability
  • New Relic
  • Sentry
  • Dashboards
  • Alerting
Ways of working
  • Tech lead
  • Mentoring
  • Pull request review
  • CI/CD standardisation
  • Claude-driven development

About

Muzzamil Khan (Muzza) - Senior Developer

Everything here is a hobby project. These are side projects I built in my own time to solve day-to-day problems at home and to try out technology I wanted to learn properly, not my life's work and not client work. I build them end to end - usually Next.js and TypeScript on Vercel, with a Postgres database and a pure core that can be tested without any of it. I care most about the parts that fail quietly: encryption, what gets sent to which client, and the tests that would have caught it.

Based in
Sydney, AU
Education
BSc Computing Science and Information Systems, University of the South Pacific