Добрый день.
Решил немного переписать свой велосипед. Все делаю по принципу package-by-feature.
Так как пишу бэк и фронт, то встал вопрос как это все красиво организовать по директориям.
Структура проекта JS:
├── public # Публичная директория
│ ├── assets # Симлинк на src/assets ?
│ ├── index.js # Бандл js
│ └── index.css # Бандл css
├── src #
│ ├── assets # Директория для ресурсов fonts, images etc.
│ ├── js # Директория для js
│ │ ├── components # Директория для ядра и модулей
│ │ │ ├── app.js #
│ │ │ └── moduleX.js #
│ │ ├── plugins # Директория для плагинов
│ │ │ ├── drawer.js #
│ │ │ └── pluginX.js #
│ │ ├── utils # Директория для утилит
│ │ │ └── utilX.js # Утилита Х
│ │ ├── index.js # Точка входа для js
│ └── scss #
└── node_modules # npm
Соответственно на момент разработки js работает по ESM.
На продакшене - билд в /public тем же webpack.
/src/js/components - тут модули.
Данная структура отлажена, вопросов нет.
Но что делать с php?
В моем понимании модуль:
├── ModuleX #
│ ├── Controller #
│ ├── Model #
│ ├── Service #
│ ├── Template #
│ ├── js #
│ │ └── index.js #
│ ├── scss #
│ └── assets #
То есть инкапсулированная бизнес-логика и представление в отдельный модуль, DDD архитеуктура.
ВОПРОС: как объединить js и php с учетом модулей, если пишешь и front- и back-end.
ВОПРОС2: где логично хранить разные шаблоны для одного домена.
ВОПРОС3: где логично хранить данные по разным доменам при мультисайтовой системе (шаблоны, ресурсы и тд).
Так же немного подглядел архитеуктуру в разных фреймворках.
Структура с примера пользователя хабр:
├── config # Директория для конфигов
├── Framework # Взято с примера пользователя хабр
├── Module # Взято с примера пользователя хабр
├── public # Публичная директория
│ └── index.php # Точка входа php
└── vendor # composer
Структура Zend:
├── config #
├── module #
│ └── Application #
├── public #
│ └── index.php #
└── vendor #
Структура Laravel:
├── app #
│ ├── Http #
│ ├── Models #
│ └── ... #
├── bootstrap #
├── config #
├── bootstrap #
├── public #
│ └── index.php #
└── resources #
└── routes #
└── vendor #
Структура Symfony:
├── assets #
├── config #
├── public #
│ └── index.php #
└── src #
│ ├── Controller #
│ ├── Twig #
│ └── ... #
└── templates #
└── vendor #