How BANFF Evolved from a Simple Sales App into a Scalable Mobile Platform

This article analyzes the architectural redesign of BANFF, an internal sales mobile app, detailing the challenges of a flat, tightly‑coupled codebase and describing how modularization, technical abstraction, and page‑level refactoring transform it into a maintainable, extensible platform for diverse business roles.

Baidu Waimai Technology Team
Baidu Waimai Technology Team
Baidu Waimai Technology Team
How BANFF Evolved from a Simple Sales App into a Scalable Mobile Platform

Abstract

The BANFF app, originally a lightweight tool for internal sales staff (BD), has grown into a complex mobile office data platform. Its flat project structure and scattered technical abstractions became bottlenecks, prompting a redesign aimed at improving development efficiency, extensibility, and alignment with evolving business needs.

Introduction

BANFF serves internal sales personnel, connecting them with merchants and business districts to boost work efficiency. Over 16 years, the app expanded from quick‑to‑market features (merchant list, contracts, visits, materials, attendance, task system) into a multi‑role platform. Rapid feature addition led to fragmented organization, poor reuse, and maintenance difficulties, especially as new products need to be integrated.

Challenges

1. Overly flat and tightly coupled business pages – The app’s architecture focused on feature accumulation, neglecting modular design. Business pages are scattered, and inter‑page calls have become complex, causing high risk when modifying or removing functionality.

2. Insufficient technical abstraction – Common capabilities such as networking, location, image handling, UI components, and time utilities remain entangled with business code, preventing clean plugin‑style integration and hindering platform‑level extensions.

3. Limited extensibility of certain page architectures – Legacy pages, especially the visit module, have grown beyond the simple MVC pattern, resulting in massive controller files and duplicated logic across similar pages.

Redesign Approach

The redesign centers on three principles:

Business page decoupling : Group related pages into distinct business modules with loose inter‑module coupling and tight coupling only to module entry points.

Technical module separation : Extract technology‑specific code into pure technical modules, using adapter layers to isolate third‑party libraries from the app core.

Complex page refactoring : Re‑evaluate and select appropriate architectural patterns (MVP, MVVM, Dagger2, etc.) for historically complex pages to improve maintainability.

The resulting architecture is illustrated in the following diagrams:

iOS architecture diagram
iOS architecture diagram
Android architecture diagram
Android architecture diagram

Module Overview

Based on business functions, the app is divided into the following modules:

Merchant Information: my merchants, competitor merchants, leads, onboarding requests, map view, KPI dashboards.

Work Behavior: task system, visits, promotions.

Attendance: alarms, sign‑in.

Other: personal profile, messages, complaints.

Benefits of Modularization

Divide‑and‑conquer mindset simplifies development.

Business logic is decoupled between modules.

Clear interfaces make modifications and maintenance straightforward.

Implementation details are hidden, providing higher‑level abstractions.

Code reuse rates increase significantly.

Conclusion and Future Development

The redesigned BANFF architecture emphasizes business‑centric module clustering, technical abstraction, and selective page refactoring, delivering a more stable and extensible platform. Current capabilities include offline H5 support, with plans to integrate React Native and native‑plugin (NA) solutions, selecting appropriate plugins per business scenario to further strengthen platformization.

A well‑structured architecture boosts productivity by enabling developers to focus on isolated modules, streamlining testing, debugging, and future enhancements while ensuring the platform remains reliable for diverse internal users.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

iOSAndroidSoftware Engineeringmodular designmobile app architecturePlatformization
Baidu Waimai Technology Team
Written by

Baidu Waimai Technology Team

The Baidu Waimai Technology Team supports and drives the company's business growth. This account provides a platform for engineers to communicate, share, and learn. Follow us for team updates, top technical articles, and internal/external open courses.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.