A few projects I built and maintain.

Some I built for family. The rest I built to scratch an itch.

  • The planmybackpack home page, with a pack list preview below the headline

    Side project, 2021 to present

    planmybackpack.com

    A gear planner for ultralight backpacking.

    Next.js and GraphQL over Postgres, with Prisma in between. Gear data is collected lazily through a queue: pages fall back across three extraction providers, and anything that can’t be parsed from markup goes to an LLM cleaning stage. Images and comments run through automated moderation. Terraform for infrastructure, and CI runs the suite against a real Postgres instead of mocks.

    • TypeScript
    • Next.js
    • GraphQL
    • Prisma
    • PostgreSQL
    • Redis
    • AWS
    • Terraform

    planmybackpack.com

  • The ezform home page, with a contact form snippet beside the headline

    Side project, 2026 to present

    ezform.io

    A form backend that does not lose leads.

    The public endpoint validates, persists the submission and returns, so nothing in the request path can fail once the lead is durable. Everything after that sits behind a queue: triage classifies and resolves routes, a drain worker renders the mail, sends it and records every attempt, and an hourly sweep recovers whatever stalled. Postgres through Prisma, Terraform for infrastructure.

    • TypeScript
    • Next.js
    • Astro
    • Prisma
    • PostgreSQL
    • AWS Lambda
    • SQS
    • Terraform

    ezform.io

  • The Ritual Beauty Room home page

    Built and maintained for my wife

    ritualbeautyroom.com

    The site for her permanent makeup studio.

    A page per service, from microblading to brow lamination and lash lifts, plus reviews, a blog, gift cards, and booking through Square. Next.js on Vercel.

    • Next.js
    • TypeScript
    • Tailwind
    • Vercel

    ritualbeautyroom.com