Blog
From the shop floor.
- 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 - 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 - 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 - 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 - 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 - 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 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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 - 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