Я бы делил на:
1 - mobile
2 - client core (subtree для 1 и 3)
3 - main (web front + backend)
Почему:
Я не уверен, но по-моему мобильный фронт живёт свое жизнью - ему не нужен SSR, у него свой релизный цикл и сборка, он никуда никогда не деплоится, нет никакой необходимости ему лежать в той же кодовой базе. Зачем он вам как subtree в основном репозитории?
Общий код вполне можно вынести в subtree
Веб фронту нужен SSR (?). Конечно, при старте проекта на работе я бы разделил SSR и API на разные репозитории, чтоб API можно было переписывать/релизить отдельно от сср и фронта, но для пет проекта не вижу в этом большого профита, кажется, удобнее весь бэкенд писать в одном месте
Честно говоря, для своего проекта я б вообще всё таки оставил монорепу + workspaces, просто чтоб не тратить время на переключения