Rewriting a live backoffice without stopping the business
The web backoffice for a major Italian retail cooperative (Conad Nord Ovest) ran on Create React App, React 16, MUI v4 and untyped JavaScript — hard to change, harder to hire for. For a year I ran this product alone — engineering and product decisions — serving 650 stores and ~€300k/yr of revenue on its own.
Problem
The product needed new features weekly. A big-bang rewrite would freeze delivery for months; staying on the legacy stack made every feature slower and riskier.
Impact
- A typed, testable codebase the team can actually hire for.
- New listing screens go from days to hours thanks to the generic DataTable and route conventions.
- Zero production downtime during the migration.
- Owned product and delivery solo for a year: roadmap, priorities and releases for 650 stores — a product worth ~€300k/yr on its own.
Approach
- Rebuilt the application on TanStack Start, React 19, TanStack Router/Query/Table/Form, Zod, shadcn/ui and Tailwind v4 — file-based routing, Suspense loader queries, search params as the single source of truth for pagination, sorting and filters.
- Designed a generic server-side DataTable and a brand-consistent design system so new CRUD screens are configuration, not code.
- Kept the legacy app in production during the transition; the same Spring Boot backend serves both, so cutover is per-screen, not per-product.