Case studies

Real systems. Real risk. Shipped without drama.

A selection of projects. Stabilising, consolidating, and modernising real-world platforms across multiple technologies, without unnecessary risk.

01  /  04
Enterprise legacy migration
Hydro International

Internal systems modernisation

Modernised a project-tracking platform ahead of a security audit. A classic ASP application alongside an ageing Rails system, both carrying growing operational risk.

Passed audit
with no rewrite required
The challenge

Years of technical debt, fragile behaviour, and security concerns made a direct rewrite risky. The business needed to pass audit requirements while keeping day-to-day operations running.

The approach

Stabilised the loudest issues first to reduce pain. Introduced a new application in parallel, redirected traffic through it, progressively replacing pages and endpoints while delegating to the legacy system underneath. Functionality migrated incrementally using a strangler-fig approach.

The outcome

A smooth migration with minimal disruption. Reduced technical debt, met audit requirements, and gave the business a platform that was easier to change and maintain.

Capabilities
Legacy stabilisation Incremental migration Platform consolidation
02  /  04
Large-scale data migration
Matalan

Digital asset repository migration

Architected and delivered a large-scale migration of Matalan’s image asset repository to a new platform provider. Millions of images and complex metadata transformation.

30 min
to migrate what was planned to take 36 hours
The challenge

The existing plan relied on a high-risk, 36-hour upload window with limited rollback options. Failure would have caused significant disruption.

The approach

Designed a distributed ETL pipeline made up of small, focused services, each handling one stage. Stages ran in parallel with clear checkpoints and idempotent operations to allow safe retries and rollbacks.

The outcome

Millions of images migrated successfully in around 30 minutes. A risky one-off process was replaced with a fast, repeatable, observable migration system.

Capabilities
High-volume ETL Distributed systems Risk reduction
03  /  04
Platform consolidation
Rent to Own

Platform migration & modernisation

Brought in to consolidate a split platform built across C# Entity Framework and Ruby on Rails into a single, modern Rails application.

1 platform
down from two, with zero-downtime cutover
The challenge

The system was brittle, slow to change, and prone to operational issues including frequent SSL problems. Payments were tied to legacy PayPal subscriptions, limiting flexibility.

The approach

Resolved infrastructure issues first to improve reliability. Migrated functionality into a single Rails platform using Turbo to deliver a fast, SPA-like experience without frontend complexity. Established a clear path from PayPal to Stripe and deployed the new frontend and admin using blue-green deployments.

The outcome

A unified, performant platform that allowed the business to move faster and adapt as requirements changed.

Capabilities
Platform consolidation Payments migration Turbo / Hotwire Zero-downtime deploys
04  /  04
Framework modernisation
ActionPark

Rails & frontend upgrade

Modernised an ActionPark platform built on Matestack, an unsupported framework that introduced long-term risk.

4× faster
load times on key screens after migration
The challenge

Outdated dependencies and a bespoke frontend abstraction limited upgrades, hiring, and performance improvements.

The approach

Upgraded Ruby to a current stable version and migrated views and interactions from Matestack to Hotwire and Turbo, preserving existing behaviour while simplifying the stack.

The outcome

A maintainable, modern Rails application with load times on key screens improved by up to 4×.

Capabilities
Framework migration Performance optimisation Hotwire adoption
Stack

Delivered across languages, clouds and databases.

Ruby on Rails
Hotwire
React
React Native
C#
.NET
Node.js
PHP
PostgreSQL
MySQL
SQL Server
MongoDB
DynamoDB
AWS
GCP
Azure
Start the conversation

A 60-minute call. No pitch, no pressure. Just a straight read on what you’re dealing with.