Структура проєкту
Структура проєкту
Нижче — карта каталогів і за що відповідає кожен. Розуміння цієї структури — половина успіху під час доопрацювання рушія.
core/ Ядро CMS (каркас, не знає про домен)
modules/ Вбудовані модулі CMS
plugins/ Плагіни (розширення)
templates/ Теми (оформлення)
public/ Публічна статика (nginx віддає напряму)
storage/ Тимчасові дані (кеш, логи, завантаження, сесії)
config/ Конфігурація (app.php, database.php, cache.php)
bin/ CLI-команди (bin/celena)
index.php Точка входу фронту
admin.php Точка входу адмінки
install.php Майстер встановлення
.env Оточення (креди БД, ключі)
core/ — ядро
| Тека/файл | Призначення |
|---|---|
Autoloader.php | PSR-4 автозавантажувач |
Kernel.php | Ініціалізація застосунку, контейнер, сервіси |
Container.php | DI-контейнер (авто-резолвінг через рефлексію) |
Config.php | Завантаження .env і файлів config/*.php |
Http/ | Router, Request, Response, middleware |
Database/ | Connection, QueryBuilder, Schema, Blueprint, MigrationRunner |
Template/ | Engine, Compiler, TagRegistry, теги шаблонізатора |
Plugin/ | Hook, PluginManager, Installer, Marketplace |
Security/ | Auth, Csrf, Permission, Filter, RateLimiter |
I18n/ | Locale, Translator |
Support/ | утиліти (Markdown тощо) |
Mail/, Queue/, Cache/, Ai/ | пошта, черга, кеш, інтеграція з ШІ |
modules/ — вбудовані модулі
Базова функціональність CMS. Кожен модуль — тека в modules/ з контролерами в просторі імен Celena\Module\<Name>\.
AdminBase, Dashboard, Users, Pages, News, Categories, Media, Menus, Comments, CustomFields, Settings, Plugins, Seo, Search, Translations, Account, Webhooks, Banners, Docs, Ai, Cities.
plugins/ — плагіни
Розширення, які можна вмикати/вимикати. Структура одного плагіна:
plugins/<slug>/
├── manifest.json метадані (обовʼязково)
├── plugin.php точка входу: роути, хуки, теги (обовʼязково)
├── src/ PHP-класи (PSR-4 Celena\Plugin\<Slug>\)
├── migrations/ міграції БД
├── templates/ .tpl плагіна (адмінка і фронт)
├── languages/ переклади ru.json/en.json/…
├── assets/ CSS/JS → копіюються в public/assets/plugins/<slug>/
└── docs/ Markdown-документація плагіна
Докладно — Створення плагіна.
templates/ — теми
Кожна тема — тека з theme.json і набором .tpl. Активна тема зберігається в опції theme. На celena.io активна тема celena-agency. Докладно — Створення теми.
public/ — публічна статика
nginx віддає ці файли напряму, повз PHP:
public/assets/
├── admin/ CSS/JS адмінки
├── runtime/ спільний фронтенд (celena.js, celena.css)
└── plugins/<slug>/ асети плагінів (авто-копія з plugins/<slug>/assets/)
storage/ — тимчасові дані
storage/
├── cache/tpl/ скомпільовані шаблони (.php)
├── cache/data/ кеш даних, rate-limit
├── logs/ логи
├── uploads/ завантажені файли
└── sessions/ файли сесій
storage/ лежить поза публічно роздаваним шляхом — вміст не віддається напряму.
config/ і .env
config/app.php— імʼя, оточення, локаль, сесії.config/database.php— параметри підключення (читаються з.env).config/cache.php— драйвер кешу..env— секрети конкретного встановлення (НЕ в репозиторії): креди БД, ключі API. Локально — PostgreSQL, на проді — MySQL; код крос-СУБД.