We took over four codebases we did not write, rebuilt them on one design system, and shipped all four inside a single phase.
5miles ran a US local marketplace from an app-first codebase, and the web platform trailed behind it. Node, Sails, and EJS rendered pages server-side; every filter change reloaded the whole page. Six channels and 107 categories buried what people actually bought. We rebuilt desktop web, mobile PWA, iOS, and Android on one design system, one taxonomy of eleven, and one ad-slot spec. Four codebases. One release train.
5miles ran a local buy-and-sell marketplace across the US from Dallas, with product and engineering split between Texas and R&D teams in Beijing and Shanghai. They came to us with four codebases they had inherited, grown, and never consolidated. They wanted a team that would read the code first and tell them what would not survive the redesign.
The website was built as an afterthought to the app, and it showed. Sails rendered pages on the server, EJS templated them, and AngularJS and jQuery patched the front end. Applying a filter reloaded the entire page with new query parameters. Nothing lazy-loaded. Sellers could not edit a listing once it was posted.
Desktop and mobile web disagreed with the app on navigation, filter behavior, and the sell flow. Six channels and 107 categories sat on top of all of it, and most of those categories had sold fewer than three items. The AdSense inventory funding the platform lived in placements nobody had written down.
The code came first. We took delivery of the web repositories on 18 December and the mobile codebases after that, stood up local environments for all four, and ran a full architecture review on Android, iOS, desktop web, and mobile web before design moved past concepts. We knew the design system had to be buildable inside constraints that already existed, and those constraints were only visible in the source.
Category structure went in before layout. Navigation, filters, the sell wizard, and every product template read from the taxonomy, so getting it wrong meant redesigning all four platforms twice. We pulled 5miles’ own listing and sold-item counts and rebuilt the tree against them. Furniture had moved 1,287 items. Apartment-for-rent had moved one. Six channels and 107 categories became eleven.
Ad placements were treated as a requirement rather than a design output. We wrote the slot spec across eight page positions before wireframes started, because the revenue those slots carried was not something a redesign could be allowed to quietly remove.
A unified marketplace experience across web and mobile, supported by a shared design system and structured data foundation.
Fourteen people ran Phase 1: a project manager, a development manager, a systems administrator, two designers, a front-end developer, four platform engineers, a release engineer, and QA. Confluence held requirements and design approvals; JIRA held six sprints. Every screen carried an approval status, and finals routed through a WeChat group for Beijing sign-off before build. Three deployments and three QA cycles landed inside Phase 1, tested with JMeter, Postman, and JIRA against Android 4.4 and iOS 8 floors.
Desktop web, mobile web, iOS, and Android now draw from the same eleven-category structure, the same icon set, and the same component conventions. A filter change updates the listing in place instead of reloading the page. Sellers move through one “List It” wizard whose fields change by channel. Ad inventory sits in eight documented positions across the page set, so the revenue side of any future redesign starts from a spec instead of an audit. New categories, new product templates, and new channel-specific fields drop into a structure that already accounts for them.
The part I did not expect was how early they pushed back. They had our code for a week and came back with a list of things in it that would not survive what we were asking for. That list is what made the timeline real.
If that is the shape of your problem, we will tell you what we find in the code before we tell you what we would design.
Start the conversation