We took over four codebases we did not write, rebuilt them on one design system, and shipped all four inside a single phase.

5miles' Multi-Platform Marketplace Rebuild

The Objective

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.

Service Tags

UI/UX Design Web Application Development Progressive Web App iOS & Android Development

Industry Tags

Market Place and Classifieds Consumer Technology

Tech Stack

Kotlin Java Node.js Sails.js Google Maps API Microsoft Computer Vision API

The Impact

4
Platforms rebuilt on one design system
Desktop web, mobile PWA, iOS, and Android, planned and shipped as one Phase 1.
107→11
Categories consolidated
Rebuilt against 5miles' own listed and sold-item counts rather than the legacy tree.
8
AdSense placements
Ad inventory was specified as a requirement before wireframes, so revenue held
73.3%
Android install base covered
Android 4.4 and iOS 8 minimums set against actual install-base coverage.
The Client

An app-first marketplace whose web platform had stopped keeping up.

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 Problem

The web platform contradicted the app on almost every screen a user touched.

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.

Our Approach

We read four codebases before we drew a single screen.

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.

What We Built

Platform Architecture & Core Modules

A unified marketplace experience across web and mobile, supported by a shared design system and structured data foundation.

Design System
Web Marketplace
Mobile Application
User Management
Listing Management
Seller Dashboard
How It Was Built

Three time zones on one board, and a design approval that had to clear Beijing.

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.

Outcome

One taxonomy, one design system, four platforms that agree with each other.

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.

Testimonials

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.

Product Strategist, 5miles

We take over codebases we did not write and put platforms that have drifted apart back on one system.

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