Как решать, что выносить в модуль по мере роста приложения?
По границе, которая меняется вместе, и по времени сборки. Фича-модуль, который собирается и тестируется без остальных, окупается скоростью компиляции и тем, что делает направление зависимостей явным. Деление по слоям — модуль из всех вью-моделей — обычно даёт модули, которые всегда меняются вместе, то есть цену без выигрыша.