How we rebuilt Luna's ops platform on a modern stack
A full platform rebuild — multi-module, deeply integrated — delivered in about ten weeks using the same iterative loop we run on thirty-day builds. And it eclipses anything available off the shelf.
Luna came back to us for a second project — a ground-up rebuild of their operations platform. The original was something we'd worked on the year before. This was a different kind of ask: bigger scope, longer horizon, and a lot more at stake.
The rebuild was properly large. Not a single-purpose tool this time, but a multi-module platform covering dispatch, fleet planning, driver logistics, exception handling, and several deep integrations into their accounting and telematics systems. The modules needed to feel like one product rather than a collection of apps bolted together, and the integrations had to be production-grade from day one.
We kept the same iterative approach — short loops, constant conversations, scope decisions made together — but the shape stretched. Instead of a single 30-day window, the rebuild ran over about ten weeks with a clear milestone every two to three. Each module got its own sub-phase, then was woven into the main product before the next one started. That cadence is what kept it from turning into a typical six-month slog.
The tech stack is everything we'd recommend if you were starting something new today: Next.js app router on the front, a typed Postgres schema behind it, an event-sourced audit trail, and a thin integration layer that keeps each third-party service isolated enough that a change in one doesn't ripple through the rest. End-to-end typed, versioned, deploys cleanly, monitored from the first commit.
The result, by Luna's own measurement, outperforms anything available off the shelf for what they do. It handles volumes the previous platform would have buckled under, and it eclipses the competitors they looked at before bringing us back in. More to the point, they're shipping changes to it themselves now — which is the real signal that the handover worked.
A couple of things we took away. First: the short-loop cadence scales. Fixed windows, non-negotiable scope, constant iteration — the mechanic works just as well at ten weeks as at four, as long as each window is carved into its own sub-project with a clear end state. Second: a rebuild is a fundamentally different engagement from a first build. You come in knowing the shape of the problem (a head start), but you also come in with users who already have strong expectations. Both need to be respected, and neither is optional.