Case study: rebuilding a legacy monolith into a modern React/Node.js platform for a Series B Dutch e-commerce company.
Key Results
StepTo rebuilt a legacy Rails monolith (340,000 lines of code) into a headless Next.js storefront backed by three independent Node.js microservices for a Series B e-commerce company in the Netherlands. The project took 24 weeks with a 6-engineer team. Post-launch results measured over 90 days: LCP dropped from 8.2 seconds to 0.5 seconds (94% faster), conversion rate increased by 31%, and release cadence improved from bi-monthly to weekly (3× faster). Migration of 2.4 million product records and 8 years of order history completed with zero data loss and zero downtime, using a dual-write strategy with a 5-minute DNS rollback window. Total cost was under one third of a competing quote from a London agency for equivalent scope.
A Series B Dutch retailer had outgrown its Rails monolith. Product pages took 8+ seconds to load on mobile, the codebase was too fragile to release features safely, and Black Friday 2023 had caused three hours of downtime. They needed a complete rebuild — without stopping the business.
StepTo assembled a 6-person dedicated team in Belgrade and delivered a fully decomposed React/Node.js platform in 8 months, migrating 2.4 million product records with zero data loss and zero downtime.
Measured 90 days after full production cutover
The client's platform had been built incrementally since 2015 — a Rails monolith that had grown to 340,000 lines of code with no clear module boundaries. Every feature release required two weeks of QA because any change could break unrelated functionality. The engineering team of 4 was spending 60% of their time on maintenance and regression testing.
Performance had degraded to the point where mobile users saw 8–12 second load times. With 68% of traffic on mobile, this was directly impacting revenue. A Google PageSpeed audit gave the site a score of 14/100.
The client needed to rebuild the platform completely but couldn't pause trading. They also needed to do it at a cost that wouldn't threaten their runway — their previous quote from a UK agency was £1.2M for the same scope.
StepTo proposed a strangler-fig migration: decompose the monolith domain-by-domain while keeping the old system live, gradually routing traffic to the new services until the monolith could be switched off.
The new architecture used a Next.js storefront for the frontend (SSR for SEO, ISR for catalogue pages), backed by three independent Node.js services: catalogue, cart/checkout, and order management — each with its own PostgreSQL database. Redis handled session state and catalogue caching. AWS CloudFront served static assets globally.
Audited the existing monolith, mapped data flows, designed the new service boundaries and migration strategy.
Built product catalogue, cart, checkout, and order management as independent services with a unified Next.js storefront.
Migrated 2.4M product records and 8 years of order history with zero data loss using staged dual-write migration.
Load testing, Core Web Vitals optimisation, accessibility audit, cross-browser QA.
Phased traffic cutover, team training, full documentation handover.
“We were quoted £1.2M by a London agency for the same project. StepTo delivered it for less than a third of that, on time, and the results exceeded everything we projected. The team felt like an extension of our own engineering org — not a vendor.”
We used a dual-write migration strategy: for 4 weeks before cutover, every write went to both the old and new database. This let us verify data integrity in production conditions before flipping traffic. The cutover itself was a DNS change with a 5-minute rollback window — the client never noticed.
The primary driver was load time. The old site averaged 8.2 seconds to LCP on mobile — below the threshold where most users abandon. After the rebuild, LCP dropped to under 500ms. We ran the new site as a 50/50 A/B for 30 days before full cutover to confirm causality.
The team was a 6-person dedicated squad: 2 senior React engineers, 2 senior Node.js engineers, 1 DevOps/infrastructure engineer, and a tech lead who acted as the client's primary point of contact. All based in Belgrade, working CET hours to overlap with the client's Amsterdam team.
Whether you need a full rebuild, a dedicated team, or an architecture review — let's talk. We'll have a scoped proposal to you within 48 hours.
Start the conversationContact Us
Ready to start your next project? Let's discuss how we can help bring your vision to life.
We'll get back to you within 24 hours.
Work with accountable, English-fluent professionals who communicate clearly, protect quality, and deliver with a steady operating rhythm. Cost efficiency matters, but performance is why clients stay with us.