26.3 · Multi-brand apps and SDKs for other teams

When several apps or teams share code, the design question changes from “does it work” to “can other people use it without breaking each other, and can we change it later”.

Mental model. Make differences data and configuration, make contracts small and stable, and make the right usage the easy usage.

Many brands

One codebase, several apps: configuration, theming, build variants and release.

  1. How do you architect several brands or white-label apps from one codebase: configuration, theming, build variants, release and the risk of forks? 26.3.1 · L8
    The goal is many apps that differ only where they must, with the shared core staying one codebase. Separate what varies into layers. Identity: each brand that…

SDK design

What you owe the teams that consume your code.

  1. How do you design an SDK or shared module for other teams: surface area, configuration, errors, concurrency, dependencies, documentation and support? 26.3.2 · L5
    An internal SDK is a product whose customers are other engineers, and the design rules follow from that. Keep the public surface small: everything public is a…

More in System design & staff+