Development journal.

Notes from building Kanvo — architecture decisions, migrations, dead ends, and what running a field service business teaches you about writing software for one. Written by the person shipping it.

RSS feed Submit feedback
4 min read

One bucket, many businesses: how Kanvo isolates customer files

Every contractor on Kanvo uploads job photos, signed agreements, and equipment records. Here is how those files stay separated — and why one bucket beat one bucket per customer.

ArchitectureStorageMulti-tenancy
4 min read

Moving Kanvo to Cloudflare Workers, and what broke

Migrating Kanvo CRM onto the Workers runtime meant giving up three dependencies that quietly assumed a Node process. Here is what each cost, and what replaced it.

InfrastructureCloudflareMigrations

Field service software is usually a black box. This one isn't.

Most platforms in this category ask you to trust a roadmap you can't see, maintained by people you'll never talk to. We'd rather show the work: what got built, why it got built that way, and what we got wrong the first time.

Part of that is accountability — publishing a decision makes you defend it. The rest is practical. If you run a contracting business and you're evaluating whether Kanvo can handle your operation, reading how it was built tells you more than a feature list ever will.