Есть еще один вариант, возможно очень глупый - делать письменный договор о неразглашении "начинки" проекта. И давать полный доступ к файлам проекта, который будет лежать на сервере для разработки.
Это не глупый, а единственный нормальный вариант.
Все остальные попытки что-то спрятать обречены на провал.
Я не поверю, чтобы в крупных проектах давался доступ ко всему коду, каждому back-end разработчику.
Для разделения можно использовать git submodules или просто отдельные репозитории хотя бы фронта-бекенда.
Но делать это только для того чтобы спрятать код друг от друга бессмысленно.
Можно и модулями кодить, и как угодно вообще, но это всего огромный оверхед для продуктивной работы.
А в худшем случае вообще будете только и делать что бороться с этим монстром из кучи модулей/репозиториев, вместо нормальный работы над продуктом.
2. Если, допустим фронтендер сделал обновление кода шаблона, как сделать так, чтобы не дергать постоянно back-end'а для внесения эти изменений?
Значит скорее всего у вас проблемы с "архитектурой", если только дизайнер это верстальщик в html, а на бекенде шаблоны надо еще интегрировать с логикой/кодом, тогда это логично пропускать через бекендеров.
А если дизайнер это фронтендер который делает конечный кусок кода, то значит надо менять подход.
А так вообще с такими вопросами - нужен проект менеджер с техническими скиллами или тим лид, раз ни у кого в команде нет компетенции разрулить эти задачи.