Структура проєкту

Структура проєкту

Нижче — карта каталогів і за що відповідає кожен. Розуміння цієї структури — половина успіху під час доопрацювання рушія.

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.phpPSR-4 автозавантажувач
Kernel.phpІніціалізація застосунку, контейнер, сервіси
Container.phpDI-контейнер (авто-резолвінг через рефлексію)
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; код крос-СУБД.