# llms-full.txt — технический контекст CMS для coding-агентов (не для GEO/AI Overview). # Публичный бизнес-профиль для поисковых ИИ: /llms.txt # Проект: сайт студии «Вебстар Технологии» (webstartechnology.ru) # Обновляйте при существенных изменениях архитектуры. ## Назначение Кастомная CMS на PHP: публичный сайт (страницы, блог, новости, портфолио, услуги, поиск), админка, SEO, Schema.org, интеграция с AmoCRM (папка amo/). Фронт: статические ассеты в assets/, стили в css/ и assets/css/. ## Стек - PHP 8+ (strict_types где включено), без фреймворка Laravel/Symfony — собственный слой App\Core - MySQL (PDO), таблицы posts, post_meta, taxonomies, post_taxonomy, media и др. - Маршрутизация: app/Core/Router.php + единая точка входа index.php - Представления: app/Views/ (front/, admin/, layout/main.php) - Локальный dev-сервер: из корня репозитория `bash scripts/local-dev/serve.sh` или `php -S 0.0.0.0:3022 -t Webstar_new scripts/local-dev/router.php` (не в каталоге выгрузки на хостинг) ## Критично для безопасности - Учётные данные БД и секреты только в config/config.local.php (не коммитить; в репозитории шаблонов example нет). - Не вставлять реальные пароли и API-ключи в код, llm.txt и публичные ответы. - Продакшен-URL ориентир: PRODUCTION_PUBLIC_URL в config (канонический домен без слеша в конце). ## Корень проекта (важные пути) - index.php — front controller - config/config.php — базовые константы (ROOT_PATH, APP_PATH, BASE_URL, DB_*, SITE_NAME) - app/ — вся логика (Controllers, Models, Views, Core) - storage/ — загрузки пользователей (изображения и т.д.) - assets/ — публичные css/js/img для веба - ../tools/ — офлайн-скрипты вне корня сайта: импорт портфолио, скриншоты (Node/Playwright), вспомогательные PHP ## Sitemap и robots.txt - Динамические URL: GET `/sitemap.xml` (SitemapController), GET `/robots.txt` (RobotsController, текст из настроек `seo_robots_content` или шаблон с `Sitemap: {{SITEMAP_URL}}`). - Плейсхолдер `{{SITEMAP_URL}}` в robots подменяется на `BASE_URL/sitemap.xml` при выводе. - Настройка: админка `/admin/seo` (вкладки Sitemap и robots). ## Маршруты (упрощённо) - GET / → PageController::index (главная, slug home) - GET /{slug} → SlugController::dispatch — разрешение: таксономия → пост → страница (PageController::show) - Архивы: /blog, /news, /portfolio, /service (+ /page/N) - Рубрики портфолио: /{taxonomy_slug} например korporativnyy-sayt, shops, sajt-lending (через Taxonomy и SlugController) - GET /search?q=… — поиск - /admin/* — админка (Bootstrap), CRUD по пост-тайпам ## Пост-тайпы (PostTypeRegistry, Application::registerPostTypes) - page — статические страницы, URL /{slug}; шаблоны страниц: PageTemplateManager, app/Views/front/page.php и app/Views/front/page-templates/* - post — блог, префикс blog, с категориями/тегами - news — новости, префикс news - portfolio — проекты, префикс portfolio, таксономия portfolio_category - service — услуги, префикс service Страница /price: slug price; при необходимости принудительный шаблон app/Views/front/page-templates/price.php (см. PageController::show). ## Ключевые классы - App\Core\Application — регистрация типов, маршрутов, AJAX - App\Core\SlugController — единый вход по slug, пагинация - App\Core\Pagination — HTML пагинации (nav.pagination) - App\Models\Post — работа с записями и meta - App\Core\Seo, SchemaBuilder, BreadcrumbsBuilder ## Вёрстка и стили - Основной CSS для фронта: подключается assets/css/style.min.css (есть синхронная копия/ветка в css/) - Шрифты: Manrope, Unbounded; цвет акцента --primary-color (синий), кнопки .btn-* - Общий layout: app/Views/layout/main.php ## Инструменты портфолио (../tools/) - portfolio_cases_data.php — массив кейсов (slug, url, tax, тексты) - import_portfolio_corporate.php, import_portfolio_shops.php, import_portfolio_lending.php — синхронизация с БД - capture_real_portfolio.mjs, crop_logo_from_01.mjs — скриншоты и логотипы - apply_portfolio_screens.php, apply_portfolio_logos.php — подстановка в медиатеку ## Соглашения для правок кода (AI) - Минимальный дифф: не рефакторить несвязанное; соблюдать стиль файла (имена, отступы, declare(strict_types=1) в новых PHP). - Не добавлять документацию *.md без запроса пользователя. - Пути в цитатах кода: формат startLine:endLine:path ## Язык интерфейса и контента - Сайт на русском (SITE_LANG ru); тексты UI и SEO на русском.