79 lines
3.4 KiB
Markdown
79 lines
3.4 KiB
Markdown
# 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 использования без внешних зависимостей.
|