kvaro.me
← All work

Fleetron

Multi-tenant fleet platform — GPS tracking, trip logs, VAT-ready records

Status
Live
In production since 2025, running the fleet it was built for
Period
2024–now
My role
Founder, lead developer, and the person who gets paged
Stack
TypeScript · Node.js · React · PostgreSQL · PostGIS · Redis · Docker · nginx · GitLab CI · Hetzner · Tailscale
Live at
fleetron.io

The problem

I run a car rental company with twenty vehicles. Knowing where a car is, who drove it, how far, and whether that trip was business or private is not a nice-to-have — it decides what you can deduct and what you owe. Every off-the-shelf tool I tried solved one slice and left the rest in spreadsheets.

How it was built

Trips are geometry, not two columns

Positions go into PostGIS as real geometry rather than a pair of float columns. That turns questions like "which trips crossed this zone" or "how far from the depot did this car get" into one query instead of post-processing in application code.

Multi-tenant from the first migration

Retrofitting tenancy is a rewrite. Every table carried a tenant from the start, so onboarding a second company was configuration rather than a branch.

The financial side is the product, not a report

Trip logs feed invoicing, CRM reporting and accounting exports directly. The value is not the map — it is that the map produces a document the tax office accepts.

Releases are versioned images, not a git pull

GitLab CI builds tagged images into the registry and production runs a specific tag. Rolling back is changing one number, not undoing a deploy.

Where it landed

  • 906 commits over 21 months, in production and carrying a real fleet
  • Six containers on a single host: API, app, web, PostGIS, Redis, nginx
  • Zero open admin ports — server access runs over Tailscale

I am my own first customer

Every feature was specified by a problem I hit that week while running the rental company. That is a narrower feedback loop than any user interview, and it is why the accounting exports exist at all — a developer without a fleet would have stopped at the map.

← All work