Разработка проекта, который можно настраивать и легко расширять, требует тщательного планирования.Модульность - это то, что вы хотите иметь в виду, в которой вы будете делить свой проект на более мелкие части, каждая из которых обеспечивает определенную функциональность и должна легко использоваться повторно.
Возможно, вы захотите следовать определенному типуархитектура.MVC является наиболее популярным, в котором часть, которая обрабатывает взаимодействия с базой данных (M), рендеринг результатов в html (V) и часть, которая выполняет сложные операции (C), являются отдельными.
Я согласен ссоздание базового проекта, который вы должны хранить в репозитории для легкого развертывания.Создание отдельной папки / проекта для каждого клиента звучит как утомительная задача.Я не знаю степень различий, которые вы будете реализовывать, но если вы сможете справиться с этим в рамках самого базового проекта, то все будет лучше.Подумайте об этом: если у вас есть модуль в базовом проекте, то вы решили, что хотите, чтобы он отличался для одного из клиентов, вам придется редактировать каждый экземпляр проекта только потому, что он больше не является глобальным (если вы не можетенайти способ переопределить его для одного, но вы поняли идею).
Кстати, я разработчик Python / Django, и я использую эту комбинацию для создания проектов, придерживающихся DRY (не повторяйте себя)) принцип, а также для ваших нужд, имеет возможность предоставить конкретные настройки сайта.Поскольку вы упомянули в основном о различиях внешнего интерфейса, в качестве примера, он позволит вам указать приложению использовать template1 (html, css) при доступе к www.example1.com и template2 при доступе к www.example2.com,все же они все живут в одном экземпляре проекта.
Надеюсь, что это помогло.