Каноническая главная опубликована
Исходный код в GitLab, production-сборка на dev-univer.psy21v.ru, HTTPS и статические ресурсы проверены.
Цель: единая платформа для продажи программ, обучения людей и команд, создания курсов преподавателями и дистрибуции образовательных продуктов.
Развернуть текущий лендинг на собственном сервере, подключить GitLab CI/CD, затем сделать каталог программ и карточку курса с реальными данными.
Три коротких статуса для принятия следующего решения.
Исходный код в GitLab, production-сборка на dev-univer.psy21v.ru, HTTPS и статические ресурсы проверены.
Зафиксировать продуктовые требования, затем строить каталог программ и карточку курса на реальных данных.
Новый блокер фиксируется здесь вместе с владельцем решения и условием разблокировки.
Последовательность, которая быстрее всего приводит к рабочим продажам и обучению.
GitLab → сборка → сервер → HTTPS → мониторинг.
Программы, карточка курса, заявка, заказ и интеграция оплаты.
Личный кабинет, уроки, задания, прогресс и сертификаты.
Логотип, финальная адаптация, SEO-мета, аналитика, формы, юридические страницы, GitLab CI/CD, HTTPS, резервное копирование.
Claude помогает уточнить требования, сценарии, тексты и структуру данных до начала каталога. Codex сохраняет ответственность за код, проверки, GitLab и безопасную публикацию.
Каталог, фильтры, страница программы, преподаватели, формы заявок, CRM/почта, UTM, контент из административной панели.
Регистрация, вход, профиль, корзина, заказ, промокоды, онлайн-оплата, документы, доступ к купленным программам.
Модули, уроки, видео, материалы, тесты, задания, дедлайны, обратная связь, прогресс и сертификаты.
Создание программы, редактор уроков, задания, банк вопросов, проверка работ, версии и публикация курса.
Организации, команды, приглашения, назначения, отчёты, витрины партнёров, лицензии и white label.
Есть проверяемый результат, ссылка или коммит и выполнены критерии приёмки.
Определён один следующий результат, его владелец и условие завершения.
Записан конкретный недостающий факт или доступ, без которого нельзя безопасно продолжать.
| Маршрут | Страница | Главные блоки | Релиз |
|---|---|---|---|
| / | Главная | Hero, направления, программы, обучение, преподаватели, B2B, истории, CTA | R0 |
| /programs | Каталог | Поиск, направления, уровень, длительность, формат, сортировка | R1 |
| /programs/[slug] | Программа | Обзор, программа, задания, материалы, эксперты, цена, FAQ, заявка | R1 |
| /corporate | Компаниям | Решения, диагностика, академия, кейсы, расчёт, запрос КП | R1 |
| /teachers | Преподавателям | Условия, роли, создание курса, анкета эксперта | R1 |
| /experts/[slug] | Эксперт | Биография, компетенции, программы, публикации | R1 |
| /about | Об университете | Миссия, лицензия, команда, партнёры, реквизиты | R0 |
| /contacts | Контакты | Форма, адреса, каналы связи, реквизиты | R0 |
| /privacy · /offer · /license | Юридические | Политика, оферта, согласие, образовательная лицензия | R0 |
Фильтры, полнотекстовый поиск, сортировка и URL-состояние.
Контент, цена, расписание, CTA, вкладки и SEO schema.org.
Политика, согласия, оферта, лицензия и реквизиты.
Профиль, покупки, обучение, календарь, задания, прогресс, сертификаты, поддержка.
Курсы, уроки, расписание, проверка заданий, обратная связь, аналитика группы.
Структура курса, шаблоны, критерии, версии, контроль качества и публикация.
Команды, приглашения, назначения, лимиты, отчёты, документы и поддержка.
Пользователи, роли, каталог, заказы, платежи, контент, интеграции и аудит.
| Возможность | Слушатель | Преподаватель | Методист | B2B | Админ |
|---|---|---|---|---|---|
| Проходить курс | ✓ | просмотр | просмотр | отчёт | контроль |
| Редактировать курс | — | свои | ✓ | — | ✓ |
| Публиковать курс | — | заявка | ✓ | — | ✓ |
| Назначать обучение | — | — | — | ✓ | ✓ |
| Финансы и доступы | свои | свои | — | компания | все |
Навигация по модулям, видео, текст, файлы, закладки, продолжение с места остановки.
Банк вопросов, попытки, таймер, проходной балл, случайный порядок, разбор ошибок.
Текст/файл/ссылка, дедлайн, критерии, комментарии, доработка и оценка.
Завершение уроков, проценты, обязательные шаги, дедлайны и история активности.
Шаблон PDF, уникальный номер, QR-проверка, реестр и автоматическая выдача.
Вебинары, дедлайны, email/Telegram/push, часовые пояса и напоминания.
Цена, скидка, промокод, чек, статус платежа, возврат и автоматическая выдача доступа.
Формы, UTM, источник, менеджер, этап сделки, задачи, звонок и история коммуникаций.
Оферта, согласия, счёт, акт, чек и закрывающие документы.
Просмотр → заявка → заказ → оплата → старт → завершение; отчёт по каналам.
Drag & drop: программа → модуль → урок → элемент.
Текст, видео, изображение, файл, цитата, embed, тест, задание и вебинар.
Черновик, проверка методистом, исправления, предпросмотр, публикация и архив.
Структура компании, подразделения, сотрудники, роли, импорт и приглашения.
Программа, группа, срок, обязательность, лимит мест и автоматические напоминания.
Активность, прогресс, просрочки, оценки, компетенции и экспорт XLSX/PDF.
Логотип, цвета, домен, витрина, письма и документы конкретной компании.
Пакеты, срок, использованные места, продление, дополнительные места и история.
Витрины партнёров, доли, промокоды, источники продаж и расчёты с авторами.
Страницы, меню, баннеры, SEO, преподаватели, отзывы, FAQ и медиафайлы.
Программы, направления, цены, наборы, расписание, витрины и публикация.
Профили, роли, доступы, блокировки, согласия, входы и действия.
Лиды, заказы, платежи, возвраты, промокоды, документы и менеджеры.
Потоки, группы, назначения, прогресс, проверки, сертификаты и отчёты.
Интеграции, шаблоны писем, очередь задач, журнал ошибок и аудит.
| Слой | Инструмент | Зачем | Решение |
|---|---|---|---|
| Frontend | Next.js + React + TypeScript | Публичные страницы, кабинеты, SSR/SEO, общие компоненты | Базовый стек |
| UI | Tailwind CSS + shadcn/ui | Единая система компонентов, быстрая разработка кабинетов | Для продукта; лендинг сохраняет авторский CSS |
| Motion | Motion + GSAP + Three.js | Интерфейсная анимация, сложные таймлайны, WebGL-сцены | Использовать дозированно |
| API | Next.js server / отдельный Node-модуль | Бизнес-логика, авторизация, платежи, интеграции | Модульный монолит для MVP |
| База | PostgreSQL | Пользователи, курсы, уроки, заказы, прогресс, организации | Основное хранилище |
| ORM | Prisma или Drizzle | Схема данных, миграции, типобезопасные запросы | Выбрать один после аудита текущего кода |
| Файлы | S3-совместимое хранилище | Видео, изображения, материалы, работы, сертификаты | Не хранить крупные файлы на веб-сервере |
| Видео | Object Storage + CDN / видеосервис | Адаптивное воспроизведение и защита ссылок | HLS для учебных видео |
| Очереди | Redis + BullMQ | Письма, сертификаты, импорты, отчёты, вебхуки | С R2–R3 |
| Авторизация | Auth.js / OIDC | Email, magic link, пароль, соцвход, SSO для компаний | Сначала email+пароль, потом SSO |
| Платежи | Платёжный провайдер + онлайн-касса | Оплата, чеки, статусы, возвраты | Через вебхуки, идемпотентно |
| Транзакционный почтовый сервис | Вход, чеки, напоминания, уведомления | Очередь и шаблоны | |
| Аналитика | Яндекс Метрика + продуктовые события | Маркетинг, воронка и поведение в обучении | Событийная карта до разработки |
| Ошибки | Sentry | Ошибки frontend/backend, релизы и производительность | Обязательно с R0 |
| Тесты | Vitest + Playwright | Логика, ключевые сценарии оплаты и обучения | Smoke на каждый релиз |
| CI/CD | GitLab CI + Docker | Проверка, сборка, миграции и выкладка на сервер | main → dev; tag → production |
| Proxy/TLS | Nginx/Caddy + Let's Encrypt | HTTPS, домены, кеш, сжатие и проксирование Node | Caddy проще; Nginx гибче |
| Документация | OpenAPI + Storybook | API-контракт и каталог UI-компонентов | С R2 |
GitLab main → проверки → production build → Docker image → сервер univer-dev → reverse proxy → HTTPS → dev-univer.psy21v.ru.
Ветки функций, локальная БД, тестовые ключи.
Общая проверка, демонстрация, тестовые данные и платежи.
Реальные пользователи, данные, платежи, мониторинг и резервные копии.
Контроли подключаются вместе с функциями, которые создают риск. Сейчас нужен baseline для публичного сайта; защита авторизации, кабинетов, платежей, файлов и API становится обязательным gate до публикации соответствующего модуля.
HTTPS, безопасные HTTP-заголовки, отсутствие секретов, контролируемые зависимости, минимальные права deploy и проверяемый откат.
Auth, кабинеты, API, платежи, загрузки и серверные интеграции не выходят без своих authorization, abuse и data-safety тестов.
| Контроль | Когда обязателен | Что проверяет Codex | Когда появляется тест |
|---|---|---|---|
| Auth, rate limits, 2FA | Вход, восстановление доступа, admin | Перебор паролей и кодов ограничен; reset-токены одноразовые; для администраторов обязателен второй фактор. | В первом релизе auth/admin, R2 |
| Secrets scanning | Уже сейчас и всегда | В tracked-файлах, истории изменений, сборке и логах нет приватных ключей, токенов и production env. | CI каждого merge request, R0 |
| Authorization / IDOR | Кабинеты, организации, курсы, заказы | Пользователь не читает и не меняет чужой объект по подменённому ID; tenant isolation проверяется негативными сценариями. | Вместе с первой защищённой сущностью, R2 |
| Server-side admin authorization | Admin API и служебные операции | Каждый endpoint сам проверяет роль и scope; скрытая кнопка в UI не считается защитой. | Для каждого admin endpoint, R2 |
| SQL parameterization | После подключения PostgreSQL | Нет конкатенации пользовательского ввода в SQL; запросы параметризованы; небезопасный raw SQL блокируется review. | С первым repository/service слоем, R2 |
| Payment webhooks | Оплата, возвраты, онлайн-касса | Проверяются подпись и timestamp; повтор и неверная подпись отклоняются; обработка идемпотентна. | До sandbox-платежа и обязательно до production, R2 |
| Dependency governance | Уже сейчас и всегда | Lockfile не обходится; новые major-зависимости обоснованы; известные уязвимости и лицензии сканируются. | CI каждого MR + плановый scan, R0 |
| Sessions, XSS, cookies | С появлением авторизации | Cookies имеют HttpOnly, Secure и подходящий SameSite; проверяются CSRF, XSS-экранирование, CSP и завершение сессии. | В первом auth-релизе, R2 |
| Upload validation | Аватары, задания, материалы, импорт | Проверяются размер, magic bytes, допустимый тип и имя; файлы изолированы и не исполняются как активный контент. | До первого upload endpoint, R3 |
| SSRF | Импорт по URL, webhooks, server-side fetch | Разрешены только нужные схемы и адреса; блокируются loopback/private IP, опасные redirect и повторное DNS-разрешение. | Вместе с первым server-side fetch, R3–R4 |
| Strict CORS | Публичный или кабинетный API | Origin, методы и заголовки перечислены явно; wildcard не совмещается с credentials; preflight покрыт тестом. | При открытии первого browser API, R2 |
| Race conditions | Заказы, места, прогресс, сертификаты | Параллельные запросы не создают дубли; применяются транзакции, unique constraints, locks и idempotency keys. | С первой конкурентной операцией, R2–R4 |
| Log redaction | Backend, auth, платежи, интеграции | Пароли, токены, cookies, ключи, платёжные и лишние персональные данные не попадают в application/deploy логи. | С первым backend logger, R2 |
| Риск | Что произойдёт | Решение | Когда |
|---|---|---|---|
| Сразу строить всё | Долгий запуск без обратной связи и продаж | Релизы R0–R5, измеримый результат каждого | Сейчас |
| Смешать лендинг и LMS | Хрупкий код и медленные изменения | Общая дизайн-система, разделённые доменные модули | R1 |
| Хранить видео на сервере | Закончится диск, медленная выдача | S3/CDN, HLS и подписанные ссылки | R3 |
| Нет версий курса | Изменения ломают обучение текущих групп | Published version + enrollment snapshot | R4 |
| Слабая модель ролей | Утечки данных компаний и лишние доступы | RBAC + tenant isolation + аудит действий | R2 |
| Дубли платежей | Повторные доступы/возвраты и финансовые ошибки | Идемпотентные вебхуки и журнал транзакций | R2 |
| Нет резервных копий | Потеря курсов, заказов и прогресса | Ежедневные backup + тест восстановления | R0/R2 |
| Тяжёлая анимация | Падение FPS и конверсии на слабых устройствах | Quality tiers, reduced motion, lazy loading, WebGL fallback | Всегда |
| Юридические пробелы | Риски обработки данных и продаж обучения | Политика, согласия, оферта, лицензия, хранение согласий | R0–R2 |