How would you design an app architecture for a mobile product so it remains maintainable as the codebase grows?