Legacy takeover · Global consumer platform

Twenty five projects, rebuilt as one.

Five years of developers from different backgrounds and different stacks had scattered a global golf app across twenty five projects. It took two months to put it back together.

60,000+ users worldwide25 projects consolidatedHosting down 90%
1 developer2 monthsAzure, .NET Core, ReactPartner plan, $5,000 a month

The situation

GolfPlayed is a global app for golfers, built by a professional golfer. Every course in the world is listed in it. You mark the ones you have played, keep a bucket list of the ones you still want to, and the app holds both across a lifetime of golf. You can also buddy up: ask to play a course you would otherwise have no route into, because you are not a member there. Over 60,000 people use it.

Version one was built in Ionic and went stale quickly. What happened next is the most common way software dies and the least often said out loud: nobody would own it. Across five years, one developer after another worked on it, each from a different background and a different stack, each adding rather than consolidating. By the time it reached us, the product had spread across about twenty five separate projects. No single person could hold it in their head, which is exactly why no single person would take it on.

Abstract illustration of twenty five overlapping scattered projects on the left, consolidated into a single platform on the right 25 projectsONE PLATFORMOne data model
Illustrative only. A diagram of the consolidation, not a screen: GolfPlayed sits behind a login and no user data appears here.

What we did

We redesigned the database from the ground up, migrated the data onto the new schema, and rebuilt the entire platform on Azure with .NET Core and React. One developer, two months.

Two months is the part that needs explaining. Consolidating twenty five projects is nowhere near twenty five times the work of one, because most of that sprawl is repetition: the same idea solved four different ways by four people who never met. Once the data model is right, most of it collapses into itself. That is why the work started at the database rather than the code. The schema is the decision the rest of the rebuild falls out of.

The migration is the part with no margin. Courses played and bucket lists are not features of this product, they are the product, and a golfer who loses the record of a round from years back has lost the thing the app existed to keep.

Where it landed

Hosting costs came down 90%, the largest reduction of the three takeovers here, which is less surprising once you know what it replaced: twenty five projects worth of infrastructure serving one product. The client owns the code and the infrastructure. The platform runs as a Partner plan at $5,000 a month.

Your system could be the next one.

GolfPlayed had been worked on by many and owned by none. Untangling that starts the same way everything else here does, with the audit.

Book the audit