Fixmora

White-label CRM for repair businesses.

fixmora.com
Fixmora landing page with the repairs dashboard
Role
Founder, sole engineer, operatorMay 2023 – 2026
Status
Three years in production, winding down
In numbers
3 years live · ~10 tenant domains · 3,200 commits · 859 backend tests
Hosted on
Hetzner server with Docker Compose through Coolify; self-managed Kubernetes from 2025
Stack
Djangodjango-ninjaNext.js 15WagtailCeleryRedisPostgreSQL 17PlaywrightLibreTranslateAWS SES · SQS · SNS · LambdaKubernetes

The problem

A watchmaker runs repairs on paper and WhatsApp: who brought what, what was promised, when to call back. Agencies would love to sell them software, but can't build and host it.

What I built

A multi-tenant CRM: repairs with a QR-coded work form, appointments, customers, automated email flows. A partner adds their logo and domain and resells it under their own brand; I ran the infrastructure.

Outcome

Paying clients for three years across about ten tenant domains. The longest-running thing I have built, and the one that taught me to run production alone.

Multi-tenancy is a product decision before it is a database decision. Every feature had to answer: whose data, whose brand, whose bill.what I took from it

How it works
Fixmora architecture and the watchmaker workflow it was built for

Fixmora architecture and the watchmaker workflow it was built for. Click to open full size

Decisions

  • One shared database, row-level tenancy through a site key. The default manager filters on the current request and fails closed.
  • Email is idempotent: claims, cooldowns per recipient, a suppression list, a cap per flow. A CRM that double-sends is worse than one that doesn't send.
  • Custom domains get TLS on first request through Caddy on-demand mode, after a DNS check by a small service. A partner goes live on their own domain without a ticket to me.
  • Marketing pages in Wagtail so partners edit their own copy. Work forms and other PDFs rendered with Playwright from the same templates as the screen, so there is one layout to keep right.

Timeline

  1. 2023Core CRM, Stripe, forms; first client live by autumn
  2. 2024Dashboard, maps, subscriptions, Wagtail pages
  3. 2025Partner model, white-label domains, email flows; moved from Coolify to a self-managed Kubernetes cluster
  4. 2026Maintenance mode, then offline as the main client winds down