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.

  • LearnR's landing page. A top bar carries the logo, a four-character code box with a Go button, and a "Sign in with Google" button. Under it a tinted hero panel reads "Maths practice that meets your child where they are." over "Short rounds of maths at their own school year, in a place with nothing to lose - and a straight weekly read for you on how it is really going.", with a pill above reading "Year K to Year 6 · Australian Curriculum", a second sign-in button, the line "Free to set up. Your child needs no email and no password." and the LearnR pencil logo beside it. Two panels below are headed "For your child - Somewhere it is safe to be wrong." and "For you - You'll know how it is going.", each listing three points.

    LearnR

    Maths practice that leans into what a child finds hard

    • Next.js
    • TypeScript
    • Prisma
    • PostgreSQL
    • Auth.js
    • Tailwind CSS
    • Recharts
    • Vitest
  • 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 headed "Your bottles", showing six messages sealed and set adrift, a row of child avatars for Amara and Theo to start a letter from, a count of sent messages, and one draft card. Sample data.

    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
  • The spectator view on a large screen: "The Trial - Round 1" beside a parchment panel asking who shall be cast out, with a horizontal bar per player showing three votes against one name and two against another, five of eight voted, and a roster of the eight living players down the right with connection dots. Sample data.

    Villagers

    Social deduction for one room and one phone per player

    • Next.js
    • TypeScript
    • Redis
    • Server-Sent Events
    • Tailwind CSS
    • Playwright
  • The quest master's quest board - a grid of daily chores as illustrated medieval quest cards, each with a point value, a frequency tag, and avatars on the two quests assigned to particular children. Sample data.

    Family Quests

    Household chores as a family adventure game

    • Next.js
    • TypeScript
    • tRPC
    • Prisma
    • PostgreSQL
    • NextAuth
    • Tailwind CSS
  • Week overview of a twelve week upper/lower block: tabs for all twelve weeks, and the seven days of week one side by side as cards. Monday, Tuesday, Thursday and Friday each list their exercises with a muscle tag and a set count and an estimated duration, and Wednesday, Saturday and Sunday are narrow rest columns. Sample data.

    Workout Program Builder

    Build twelve-week training programs faster than a spreadsheet

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

Showing LearnR, 1 of 6

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)

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