How would you design a mobile app architecture that stays maintainable as the codebase grows and multiple teams work in it?