Sovereign · Genius · Rich · Energy

Universal Engine.
Минимум кода, максимум переиспользования.

Sogerien - веб-движок против MVC.
Тонкий front controller, страницы вместо контроллеров, одна универсальная таблица PostgreSQL.

Ядро Sogerien Universal Engine: одна таблица на всё, ~10 строк на страницу, 6+ проектов, ноль зависимостей ядра
page/hello.php php
<?php declare(strict_types=1);
Sogerien::Page()->set_templates([TemplateBlog::class]);

Sogerien::Page()->title = 'Привет, мир';
Sogerien::Page()->header();
Sogerien::Page()->mainmenu();
?>
<h1>Готово. Это вся страница.</h1>
<p>Инфраструктуры в ней ноль - всё в ядре.</p>
<?php
Sogerien::Page()->footer();
Принципы

Всё лишнее выкинуто. Осталась суть.

Шесть принципов, на которых стоит каждый проект экосистемы.

Анти-MVC

Никаких контроллеров, репозиториев и сервис-слоёв. Тонкий front controller, страницы вместо контроллеров.

Одна universal table

Вся динамика в одной таблице PostgreSQL с JSONB. Природный ключ (entity, item_key). Ноль миграционного ада.

Страница за 10 строк

Новый экран - это один файл в page/ и одна строка роута. Инфраструктура живёт в ядре.

Шаблонизатор и скины

Двухслойный: Template рисует документ, скин задаёт оболочку. Один купленный Sneat на всю экосистему.

Эффекты через шаблонизатор

Любая внешняя библиотека подключается через Affects или скин. Ни одного тега скрипта в разметке.

Один движок на всё

Пульт, CRM, кабинет, аналитика - один и тот же движок 1:1. Что переиспользуется - в ядро.

Страница за 10 строк

Один файл. Один роут. Готово.

Никакой генерации, скаффолдинга и обвязки. Создаёшь файл в page/, задаёшь скин, регистрируешь одну строку маршрута - экран в проде.

  • declare(strict_types=1) и строгие типы на всех функциях
  • Один вызов set_templates() задаёт весь скин страницы
  • Вывод наружу - только через экранировщик h()
  • UTF-8 без BOM - иначе strict_types падает
index.php - регистрация маршрута php
$routes = Sogerien::Routes();

$map = [
    ''      => '/page/landing.php',
    'hello' => '/page/hello.php',
    'docs'  => '/page/docs.php',
];
foreach ($map as $url => $page) {
    $routes->add_template($url, $page, true);
}

Sogerien::Routes()->template();
Sogerien::markDone();
Живой код

Примеры, а не обещания

Реальные паттерны движка - страница, роут, работа с universal table.

Минимальная страница page/hello.php
php

Полноценная страница в одном файле: выбор скина, заголовок, header/mainmenu/footer. Инфраструктура живёт в ядре, а не в странице.

Регистрация маршрута в корневом index.php
php

Тонкий front controller: карта «URL-сегмент -> файл страницы», один foreach и финальный template().

Чтение из universal table sogerien
php

SELECT по природному ключу (entity, item_key) с именованными params и разбором JSON-ответа sql_request.

Сделано на движке

Один движок - боевая экосистема

Пульт, CRM, кабинеты и аналитика на одном и том же Universal Engine.

claude.sogerien.top
Веб-пульт

Веб-пульт управления парком Claude-нод прямо из браузера: реестр нод, чат с нодой, дерево проектов и чатов в сайдбаре. Ставит задачи и рекомендации, запускает и останавливает ходы, показывает живые токен-счётчики и статус суб-агентов. Страницы claude_nodes/claude_chat/claude_search/claude_new поверх тонкого index.php.

Sogerien Universal EngineTemplateSneat (Bootstrap)PostgreSQL
crm.galaxyfinance.ua
CRM + сквозная аналитика

Боевая CRM Galaxy Finance с коллтрекингом и сквозной аналитикой. Отдел-дашборды по звонкам Binotel (binotel_dept.php), KPI по сотрудникам и дням, атрибуция клик-звонок-оплата и выгрузка офлайн-конверсий в Google Ads.

Sogerien Universal EngineTemplateSneat (Bootstrap)PostgreSQL
crm.sogerien.top
CRM

CRM и аналитический дашборд на скине TemplateSneat: боевой движок well_dashboard.php, роуты в Routes.php, сайдбар-меню из ролей. Инженерные данные по скважинам, сводки и графики поверх универсальной таблицы sogerien.

Sogerien Universal EngineTemplateSneat (Bootstrap)PostgreSQL
proxymint.com
Кабинет прокси

Кабинет прокси-сервиса: витрина и заказы прокси, дашборды, управление пользователями и услугами. Интеграция с Infatica API для выдачи и учёта прокси, привязка почтовых ящиков через Mailcow.

Sogerien Universal EngineTemplateSneat (Bootstrap)PostgreSQL
cabinet.sogerien.top
Кабинет

Ранний личный кабинет прокси-сервиса, предшественник proxymint. Пользователи (APIUsers), заказы услуг (APIServiceOrders), витрина прокси-магазина, доступы и рендер таблиц на универсальных компонентах ядра.

Sogerien Universal EnginePostgreSQLTableRenderer
inv.sogerien.top
Панель

Внутренняя панель на том же ядре: страница в page/, роут в index.php, данные в универсальной таблице sogerien. Пример того, как новый экран поднимается почти без обвязки - тот же скин-контракт, тот же гейт доступа, тот же деплой по FTP.

Sogerien Universal EngineTemplateSneat (Bootstrap)PostgreSQL

1

таблица на все сущности

~10

строк на новую страницу

6+

проектов на движке

0

зависимостей ядра

FAQ

Частые вопросы

Коротко о том, что обычно спрашивают про движок.

MVC ставит слои-переходники (контроллер → сервис → репозиторий → ORM) между HTTP-запросом и ответом. Sogerien - движок: страница в page/ и есть точка, где сходятся данные и разметка. Меньше кода - меньше поверхности для багов.

Все прикладные сущности лежат в одной таблице PostgreSQL с колонками entity/item_key/data(jsonb). Природный уникальный ключ (entity, item_key) даёt бесплатный upsert через ON CONFLICT.

Через класс Affects или через скин - методы get_head_css_urls()/get_head_js_urls(). Инлайнить &lt;script&gt;/&lt;link&gt; в разметке страницы запрещено - это держит порядок загрузки и версии под контролем.

Один и тот же Template-контракт (header/footer/mainmenu/add_head_*), разное наполнение. TemplateSneat - тяжёлая админка с сайдбаром для CRM и документации. Front-скины - лендинг и блог на верхнем навбаре, без сайдбара.

Небольшим и средним проектам, где важна скорость запуска страницы и минимум обвязки: админки, дашборды, публичные сайты с блогом. Экосистема на нём уже держит CRM, веб-пульт и кабинет прокси.

Меньше кода. Больше суверенитета.

Загляни в примеры и документацию - или прочитай, почему я выкинул MVC.
Примеры Читать блог