Raiju/AGENTS.md
2026-10-25 06:05:42 +03:00

3.4 KiB
Raw Blame History

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