# Raiju CMS - Структура и Логика ## Архитектура **Flat-file CMS без базы данных** - всё хранится в JSON файлах: - `content/pages/*.json` - страницы с секциями контента - `content/settings.json` - глобальные настройки - `content/users.json` - пользователи (multi-user система) - `content/events.json` - события/мероприятия - `content/analytics.json` - локальная аналитика ## Структура директорий - **admin/** - админ-панель и API эндпоинты - **includes/** - хелперы (content-loader, footer, header, ai, backup) - **api/** - публичные API (контакт, лайки, поиск) - **cli/** - CLI инструменты для бэкапов и обслуживания - **assets/** - медиа файлы (images, audio, video, documents) - **css/** - стили (локальные, без CDN) - **content/** - JSON контент - **backups/** - ZIP бэкапы ## Модель контента Каждая страница - JSON с массивом `sections[]`: - heading, text, image, quote, list, card - youtube, soundcloud (embed) - divider, spacer (layout blocks) Рендеринг через PHP хелперы из `includes/content-loader.php`. ## Пользователи Multi-user система в `users.json`: - `id`, `username`, `passwordHash`, `role` (admin/editor), `email` - Аутентификация через `admin/users.php` - Сессии с CSRF защитой в `includes/session-helper.php` ## Настройки `settings.json` содержит: - branding (логотип, название) - theme (цвета, шрифты) - backup (удалённые цели, токены) - modules (AI, новости, события) - privacy (аналитика, email obfuscation) ## Маршрутизация `.htaccess` + `route.php` как front controller: - Перенаправляет несуществующие файлы на route.php - route.php загружает страницы по маппингу из `nav-config.php` - Поддержка многоязычности (/en/, /de/ и т.д.) ## Интеграции - **AI**: OpenAI, Anthropic, KIE.ai, Fal.ai, Comet для чата и генерации изображений - **Бэкапы**: Dropbox, Google Drive, OneDrive, S3, FTP, WebDAV - **Аналитика**: полностью локальная, без внешних запросов - **Агент**: AI-агент для контент-операций с sandboxed безопасностью ## Безопасность - CSRF токены для всех форм - Password hash (bcrypt) для паролей - Защита от SSRF в AI-агенте (raijuNetSafeFetch) - Sanitization HTML для контента - Dev login только с loopback ## Что важно для сайта: - JSON - источник истины для контента - Не редактировать core файлы (admin/, includes/, css/) при адаптации сайта - Использовать `css/website.css` для кастомных стилей - `$basePath` для путей к ассетам - `$contentPage` для admin bar Система хорошо продумана для локального self-hosted использования без внешних зависимостей.