B Squared2
←  All work

ClearHome

A self-hosted ticketing platform for households — every job on the house in one place, instead of scattered across spreadsheets, group chats, and forgotten emails.

Client
Own product
Role
Founder & Lead Developer
Year
2025
Status
Shipped
Stack
Next.js, NestJS, Postgres, Redis, Bun, shadcn/ui
B SquaredClearHomeNext.js · NestJS · Postgres

The problem

Households end up tracking work-on-the-house in a hopeless mix of spreadsheets, group chats, and forgotten emails. Quotes from one trade get lost. The boiler service date drifts six months. Recurring jobs — gutters, MOTs, deep cleans — just don't get tracked.

ClearHome is a focused ticketing system for the home: every job, recurring or one-off, with a clear status, history, and a place to keep the photos and quotes that go with it.

What we built

A production-grade full-stack application:

  • Next.js 16 frontend with shadcn/ui, dark mode, and a mobile-first layout
  • NestJS API with TypeORM, multi-tenant data isolation per household, and a typed domain model around tickets, properties, and trades
  • Bun runtime for the API — quicker cold starts, no transpilation step
  • Comprehensive testing — Playwright for end-to-end coverage, Vitest for units
  • OpenTelemetry + Sentry so issues surface fast
  • Dockerised end-to-end, deployable with a single compose file

Outcome

ClearHome is shipped and in use. The biggest payoff has been the recurring-job model — it's the thing that actually makes a difference when you've got a house full of things that need doing twice a year and nobody to remember them.

Something like this, for your business.

Tell us what you're working around at the moment and we'll tell you how we'd approach it.

00Cookies

This site uses Google Analytics to count visits and see which pages get read. It sets cookies, so it stays switched off unless you say yes. Nothing else is tracked, nothing is sold, and there is no advertising. What this means

00Analytics

We count visits with Google Analytics, which sets two cookies, to see which pages get read and improve the site. Google only processes it for us: no advertising, no data sharing, no profiles. You can turn it off now or any time from Cookie settings in the footer. The details