Skip to main content
← Back to home

Blog

From the shop floor.

Operational writing for fleet managers, mechanics, and the people who keep heavy equipment running. No marketing fluff — practical takes from the team building DirtFleet.
  1. 6 min read

    How to track engine hours accurately

    Accurate engine hours are the foundation of every PM schedule. Here's the operator-level habit that keeps the number honest — and the fallbacks for when the meter doesn't cooperate.

    opsconstruction
  2. 5 min read

    Why end-of-month estimates break PM

    End-of-month "let me just guess what the meter said" is the most common reason PM intervals drift. Here's the math of why a 5% estimate error breaks a 500-hour service schedule.

    opsconstruction
  3. 5 min read

    Hour meter logging SOP for crews

    A copy-paste SOP for daily hour-meter logging. Who logs, when, what to do when the meter is broken, and how to flag a number that doesn't match yesterday's.

    opsconstruction
  4. 7 min read

    How small contractors should evaluate fleet software (a non-bullshit framework)

    Most fleet software is built for 500-asset enterprises and demoed by sales engineers. A 25-asset contractor needs a different evaluation framework. Here it is.

    opsconstruction
  5. 6 min read

    When spreadsheets stop working for equipment maintenance

    Excel works fine for 5 assets. Past 20 it starts to break in specific, predictable ways. Here's how to tell your spreadsheet is the bottleneck — and what to do about it.

    opsconstruction
  6. 8 min read

    How to track generators, welders, and compactors across jobs

    Engine-powered tools need PM like real assets but move between jobs like consumables. Here's how to track hours, location, and PM intervals when the tool is on a different job every week.

    opsconstruction
  7. 7 min read

    QR tool checkout for construction shops

    A practical guide to setting up QR/NFC checkout in the tool crib: which labels to buy, where to put them, who scans when, and how to keep the system from collapsing in week 3.

    opsconstruction
  8. 5 min read

    Low-stock alerts for consumables (welding rod, filters, bits)

    Consumables don't need PM — they need alerts before you run out. Here's how to set min-stock thresholds that fire early enough to reorder without panic.

    opsconstruction
  9. 8 min read

    500-hour service checklist template (heavy equipment)

    A copy-paste 500-hour PM checklist for construction equipment. Engine, hydraulics, undercarriage, filters, fluids, safety items — printable and editable.

    opsconstruction
  10. 8 min read

    How to build PM intervals for mixed fleets (hours, miles, cycles)

    When one fleet has on-road trucks, off-road equipment, and trailers, the 'common PM interval' trap costs you. Here's how to set intervals per asset class without doubling your admin load.

    opsconstruction
  11. 6 min read

    PM by engine hours vs mileage — which does your fleet actually need?

    Engine hours and odometer miles measure different kinds of wear. Picking the wrong PM trigger costs you reliability or money. Here's the decision tree.

    opsconstruction
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 5 min read

    Idempotency keys in practice: the four-line integrator pattern

    DirtFleet's hours-log write endpoints accept 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
  19. 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
  20. 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
  21. 5 min read

    The 25-asset fleet: why this size is the sweet spot

    Fleets of 5 don't need much software. Fleets of 500 need an ERP. Between them is the 25-asset fleet — the one DirtFleet was built for. Here's what changes at this size.

    opsconstruction
  22. 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
  23. 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
  24. 4 min read

    What your accountant actually wants from a maintenance app

    After two years sitting between fleet managers and their bookkeepers, here's what the accounting side wants when they ask for 'shop spend.' Spoiler: it's three CSV columns, not a dashboard.

    opsconstruction
  25. 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
  26. 5 min read

    Offline hour logs for the yard: how DirtFleet's outbox works

    A 30-second hours log shouldn't fail because cellular signal is missing. Here's the IndexedDB hour outbox + idempotency-key dedupe — and what still needs connectivity.

    engineeringops
  27. 6 min read

    Cost-per-hour is the only fleet metric most owners need

    Asset utilization, MTBF, fuel efficiency — all useful. But cost-per-engine-hour is the one number that exposes the worst unit in the fleet at a glance. Here's how DirtFleet computes it and what to do with it.

    opsconstruction
  28. 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
  29. 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
  30. 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
  31. 5 min read

    Hour-based PM beats calendar PM in heavy-equipment fleets

    Calendar reminders are easy to set up and easy to ignore. Engine-hour thresholds are harder to game and surface real risk. Here's the math.

    opsconstruction