← Back to home

Blog · #engineering

Engineering (16 posts)

Every DirtFleet blog post tagged "Engineering". Latest first.
  1. 5 min read

    Six integration landings: the three-pattern template that fell out

    Zapier, Slack, QuickBooks Online, Samsara, Geotab, John Deere — all six integration landing pages converged on the same three-pattern shape (minimal / middle / deep). Documenting the template so the next page is a 90-minute fill-in instead of a 4-hour invention.

    engineeringops
  2. 7 min read

    50 iterations — what shipped, what we skipped, what's next

    Fifty 5-minute iterations later: ~33 v1 routes, two machine specs (OpenAPI + AsyncAPI), three feed formats, 24 blog posts, 787 tests. The patterns that hardened, the non-choices gathered, what the cadence actually teaches.

    engineering
  3. 6 min read

    The test architecture that fell out across 43 iterations

    768 passing tests in two layers: contract tests next to every route that mock Prisma + auth, and DB-integration tests for the bugs unit tests structurally miss. What we deliberately don't have (browser E2E, snapshots, 100% coverage targets) and the one CI flake that taught us to dynamic-import route handlers inside test bodies.

    engineering
  4. 6 min read

    How DirtFleet keeps your data separate from the next org's

    Single Postgres, organizationId on every row, FK relations that respect tenancy, lib functions that take orgId first, and 404-not-403 on cross-tenant ids. The boring rules that actually keep multi-tenancy safe — plus the one bug that almost happened.

    engineering
  5. 7 min read

    The five API conventions that stuck across 37 iterations (and three we let drift)

    From one endpoint to 22 across 14 API iterations. The patterns that hardened by the third call: { ok } envelope, cursor pagination, cross-tenant 404, forgiving enums, idempotency keys. And what we deliberately let drift.

    engineering
  6. 5 min read

    Why DirtFleet's rate limiter is 40 lines — and what we left for later

    60 requests per minute per API key, sliding-window counter, in-memory, no Redis. Here's why each non-choice (token bucket, per-endpoint caps, burst quotas) was deliberate and what ships next when we scale.

    engineering
  7. 5 min read

    Idempotency keys in practice: the four-line integrator pattern

    Every write endpoint in DirtFleet's public API accepts an Idempotency-Key. Here's how we store the binding, why we don't expire it, what we deliberately skipped, and the four lines of integrator code that make distributed systems survivable.

    engineeringops
  8. 6 min read

    The batch discipline: how DirtFleet ships a vertical slice per iteration

    Schema + lib + REST + UI + tests, one commit, before the next iteration opens. The rule we don't break — and what it costs.

    engineeringops
  9. 5 min read

    What shipped this sprint: an opinionated launch in 20 batches

    A founder-facing meta-post: 20 batches over a single sprint shipped the maintenance + tools + work orders + OSHA prep + certified payroll + public API + webhooks + trust hub + the marketing site that wraps it. Here's the operating habit behind the cadence.

    engineeringops
  10. 5 min read

    What AI does (and doesn't do) in DirtFleet

    We named 14 AI Modes in the framework doc and shipped 6 of them. Here's exactly what each one does, where the LLM is allowed to write to the database, and how we keep the system honest.

    aiengineering
  11. 5 min read

    Integration-first: why DirtFleet leads with the API surface

    Most fleet apps treat the public API as an afterthought. We treated it as the spine. Here's why every feature ships with REST endpoints + signed webhooks before the in-app UI is final.

    engineeringops
  12. 4 min read

    No data lock-in: every endpoint that lets you leave

    We don't trap your data. Here's the full list of export endpoints — the GDPR archive, the per-asset CSV, the OSHA 300 export, certified payroll, work-order history — and what we promise post-cancellation.

    engineeringops
  13. 5 min read

    Offline-first for the yard: how DirtFleet's outbox actually works

    A 30-second hours log shouldn't fail because the cellular signal is missing. Here's the IndexedDB outbox + idempotency-key dedupe that makes drivers trust the app on the worst pour day.

    engineeringops
  14. 5 min read

    Spotting stuck meters and tool theft with hours-delta anomalies

    After every hours log we z-score the delta against a 30-day rolling baseline. Most flags catch stuck meters; some catch unauthorized use. Here's the math + the false-positive guardrails.

    aiopsengineering
  15. 6 min read

    The 7-state work-order playbook we shipped (and why)

    OPEN → ASSIGNED → IN_PROGRESS → DONE with two side states for ON_HOLD and CANCELED. The state choice determines the whole shop's mental model — here's why we landed where we did.

    opsengineering
  16. 6 min read

    Tool tracking without bloating the app: how the DirtFleet module works

    Hand tools, power tools, kits, consumables — assigned to crews + trucks, scanned via QR/NFC for instant damage reports. Inside how we kept it simple.

    opsengineering