Главный рабочий документ

От эффектного лендинга
до полноценной EdTech-платформы

Цель: единая платформа для продажи программ, обучения людей и команд, создания курсов преподавателями и дистрибуции образовательных продуктов.

Приоритет: запуск публичной версии
6основных релизов
функциональных задач
задач завершено
5ключевых ролей

Что уже есть

Следующая контрольная точка

Развернуть текущий лендинг на собственном сервере, подключить GitLab CI/CD, затем сделать каталог программ и карточку курса с реальными данными.

Лендинг — презентационный слой. Для платформы отдельно создаются API, база данных, авторизация, кабинеты и образовательный движок.

Состояние работ

Три коротких статуса для принятия следующего решения.

Сделано

Каноническая главная опубликована

Исходный код в GitLab, production-сборка на dev-univer.psy21v.ru, HTTPS и статические ресурсы проверены.

Далее

Подключить Claude и перейти к R1

Зафиксировать продуктовые требования, затем строить каталог программ и карточку курса на реальных данных.

Блокер

Активных блокеров нет

Новый блокер фиксируется здесь вместе с владельцем решения и условием разблокировки.

Критический путь

Последовательность, которая быстрее всего приводит к рабочим продажам и обучению.

Сейчас

01. Публикация

GitLab → сборка → сервер → HTTPS → мониторинг.

MVP

02. Каталог и оплата

Программы, карточка курса, заявка, заказ и интеграция оплаты.

MVP

03. Обучение

Личный кабинет, уроки, задания, прогресс и сертификаты.

Очередность разработки

Шесть релизов без хаоса

R0
1–2 недели

Публичный лендинг на собственном домене

Логотип, финальная адаптация, SEO-мета, аналитика, формы, юридические страницы, GitLab CI/CD, HTTPS, резервное копирование.

AI
После R0 · до R1

Подключение Claude к продуктовой работе

Claude помогает уточнить требования, сценарии, тексты и структуру данных до начала каталога. Codex сохраняет ответственность за код, проверки, GitLab и безопасную публикацию.

R1
3–5 недель

Каталог и лидогенерация

Каталог, фильтры, страница программы, преподаватели, формы заявок, CRM/почта, UTM, контент из административной панели.

R2
6–10 недель

Продажа и личный кабинет

Регистрация, вход, профиль, корзина, заказ, промокоды, онлайн-оплата, документы, доступ к купленным программам.

R3
10–16 недель

LMS: прохождение обучения

Модули, уроки, видео, материалы, тесты, задания, дедлайны, обратная связь, прогресс и сертификаты.

R4
16–22 недели

Конструктор и преподаватели

Создание программы, редактор уроков, задания, банк вопросов, проверка работ, версии и публикация курса.

R5
22–32 недели

Корпоративная платформа и дистрибуция

Организации, команды, приглашения, назначения, отчёты, витрины партнёров, лицензии и white label.

AI в рабочем процессе

Claude в работе

Момент подключения: после завершения R0 и до начала каталога R1. Сначала фиксируются цели, сценарии, сущности и критерии приёмки; затем они переходят в реализацию.
Claude

Продукт и содержание

  • Декомпозиция пользовательских сценариев и требований.
  • Черновики текстов программ, уроков, писем и справки.
  • Проверка полноты ролей, состояний, исключений и критериев приёмки.
  • Предложения по структуре курса, заданиям и методическим шаблонам.
Codex

Код и поставка

  • Архитектура, реализация frontend/API/базы и интеграций.
  • Типизация, lint, тесты, сборка и проверка ресурсов.
  • Коммиты и push в приватный GitLab.
  • Атомарное развёртывание, HTTPS smoke-check, мониторинг и откат.

Правило передачи задачи

Сделано

Есть проверяемый результат, ссылка или коммит и выполнены критерии приёмки.

Далее

Определён один следующий результат, его владелец и условие завершения.

Блокер

Записан конкретный недостающий факт или доступ, без которого нельзя безопасно продолжать.

Информационная архитектура

Страницы публичного сайта

МаршрутСтраницаГлавные блокиРелиз
/ГлавнаяHero, направления, программы, обучение, преподаватели, B2B, истории, CTAR0
/programsКаталогПоиск, направления, уровень, длительность, формат, сортировкаR1
/programs/[slug]ПрограммаОбзор, программа, задания, материалы, эксперты, цена, FAQ, заявкаR1
/corporateКомпаниямРешения, диагностика, академия, кейсы, расчёт, запрос КПR1
/teachersПреподавателямУсловия, роли, создание курса, анкета экспертаR1
/experts/[slug]ЭкспертБиография, компетенции, программы, публикацииR1
/aboutОб университетеМиссия, лицензия, команда, партнёры, реквизитыR0
/contactsКонтактыФорма, адреса, каналы связи, реквизитыR0
/privacy · /offer · /licenseЮридическиеПолитика, оферта, согласие, образовательная лицензияR0

Задачи по страницам

Каталог программ

P0

Фильтры, полнотекстовый поиск, сортировка и URL-состояние.

/programs

Карточка программы

P0

Контент, цена, расписание, CTA, вкладки и SEO schema.org.

/[slug]

Юридические страницы

P0

Политика, согласия, оферта, лицензия и реквизиты.

/legal
Доступ и ответственность

Пять кабинетов платформы

Слушатель

Профиль, покупки, обучение, календарь, задания, прогресс, сертификаты, поддержка.

Преподаватель

Курсы, уроки, расписание, проверка заданий, обратная связь, аналитика группы.

Методист

Структура курса, шаблоны, критерии, версии, контроль качества и публикация.

Корпоративный менеджер

Команды, приглашения, назначения, лимиты, отчёты, документы и поддержка.

Администратор

Пользователи, роли, каталог, заказы, платежи, контент, интеграции и аудит.

ВозможностьСлушательПреподавательМетодистB2BАдмин
Проходить курспросмотрпросмотротчётконтроль
Редактировать курссвои
Публиковать курсзаявка
Назначать обучение
Финансы и доступысвоисвоикомпаниявсе
LMS-ядро

Как пользователь учится

Плеер курса

P0

Навигация по модулям, видео, текст, файлы, закладки, продолжение с места остановки.

R3

Тестирование

P0

Банк вопросов, попытки, таймер, проходной балл, случайный порядок, разбор ошибок.

R3

Практические задания

P0

Текст/файл/ссылка, дедлайн, критерии, комментарии, доработка и оценка.

R3

Прогресс

P0

Завершение уроков, проценты, обязательные шаги, дедлайны и история активности.

R3

Сертификаты

P1

Шаблон PDF, уникальный номер, QR-проверка, реестр и автоматическая выдача.

R3

Календарь и уведомления

P1

Вебинары, дедлайны, email/Telegram/push, часовые пояса и напоминания.

R3
Монетизация

Продажи частным клиентам

Заказ и оплата

P0

Цена, скидка, промокод, чек, статус платежа, возврат и автоматическая выдача доступа.

R2

Заявки и CRM

P0

Формы, UTM, источник, менеджер, этап сделки, задачи, звонок и история коммуникаций.

R1

Документы

P1

Оферта, согласия, счёт, акт, чек и закрывающие документы.

R2

Воронка

P1

Просмотр → заявка → заказ → оплата → старт → завершение; отчёт по каналам.

R2
Авторинг

Конструктор образовательных программ

Структура курса

P0

Drag & drop: программа → модуль → урок → элемент.

R4

Редактор урока

P0

Текст, видео, изображение, файл, цитата, embed, тест, задание и вебинар.

R4

Редакционный процесс

P1

Черновик, проверка методистом, исправления, предпросмотр, публикация и архив.

R4
Версии обязательны: уже начавшие обучение пользователи должны завершать исходную версию курса, а новые — получать опубликованную новую.
B2B-контур

Корпоративное обучение

Организации и команды

P0

Структура компании, подразделения, сотрудники, роли, импорт и приглашения.

R5

Назначение обучения

P0

Программа, группа, срок, обязательность, лимит мест и автоматические напоминания.

R5

Отчёты заказчика

P0

Активность, прогресс, просрочки, оценки, компетенции и экспорт XLSX/PDF.

R5

White label

P1

Логотип, цвета, домен, витрина, письма и документы конкретной компании.

R5

Лицензии и места

P1

Пакеты, срок, использованные места, продление, дополнительные места и история.

R5

Дистрибуция

P1

Витрины партнёров, доли, промокоды, источники продаж и расчёты с авторами.

R5
Операционное управление

Административная панель

Контент

Страницы, меню, баннеры, SEO, преподаватели, отзывы, FAQ и медиафайлы.

Каталог

Программы, направления, цены, наборы, расписание, витрины и публикация.

Пользователи

Профили, роли, доступы, блокировки, согласия, входы и действия.

Продажи

Лиды, заказы, платежи, возвраты, промокоды, документы и менеджеры.

Обучение

Потоки, группы, назначения, прогресс, проверки, сертификаты и отчёты.

Система

Интеграции, шаблоны писем, очередь задач, журнал ошибок и аудит.

Техническая основа

Инструменты и их назначение

СлойИнструментЗачемРешение
FrontendNext.js + React + TypeScriptПубличные страницы, кабинеты, SSR/SEO, общие компонентыБазовый стек
UITailwind CSS + shadcn/uiЕдиная система компонентов, быстрая разработка кабинетовДля продукта; лендинг сохраняет авторский CSS
MotionMotion + GSAP + Three.jsИнтерфейсная анимация, сложные таймлайны, WebGL-сценыИспользовать дозированно
APINext.js server / отдельный Node-модульБизнес-логика, авторизация, платежи, интеграцииМодульный монолит для MVP
БазаPostgreSQLПользователи, курсы, уроки, заказы, прогресс, организацииОсновное хранилище
ORMPrisma или DrizzleСхема данных, миграции, типобезопасные запросыВыбрать один после аудита текущего кода
ФайлыS3-совместимое хранилищеВидео, изображения, материалы, работы, сертификатыНе хранить крупные файлы на веб-сервере
ВидеоObject Storage + CDN / видеосервисАдаптивное воспроизведение и защита ссылокHLS для учебных видео
ОчередиRedis + BullMQПисьма, сертификаты, импорты, отчёты, вебхукиС R2–R3
АвторизацияAuth.js / OIDCEmail, magic link, пароль, соцвход, SSO для компанийСначала email+пароль, потом SSO
ПлатежиПлатёжный провайдер + онлайн-кассаОплата, чеки, статусы, возвратыЧерез вебхуки, идемпотентно
EmailТранзакционный почтовый сервисВход, чеки, напоминания, уведомленияОчередь и шаблоны
АналитикаЯндекс Метрика + продуктовые событияМаркетинг, воронка и поведение в обученииСобытийная карта до разработки
ОшибкиSentryОшибки frontend/backend, релизы и производительностьОбязательно с R0
ТестыVitest + PlaywrightЛогика, ключевые сценарии оплаты и обученияSmoke на каждый релиз
CI/CDGitLab CI + DockerПроверка, сборка, миграции и выкладка на серверmain → dev; tag → production
Proxy/TLSNginx/Caddy + Let's EncryptHTTPS, домены, кеш, сжатие и проксирование NodeCaddy проще; Nginx гибче
ДокументацияOpenAPI + StorybookAPI-контракт и каталог UI-компонентовС R2
Инфраструктура

Перенос на dev-univer.psy21v.ru

Целевая схема

GitLab main → проверки → production build → Docker image → сервер univer-dev → reverse proxy → HTTPS → dev-univer.psy21v.ru.

Почему так
  • Каждое обновление воспроизводимо.
  • Можно откатить предыдущую версию.
  • Код остаётся в приватном GitLab.
  • Секреты не попадают в репозиторий.

Чек-лист первого переноса

Среды

Local

Компьютер разработчика

Ветки функций, локальная БД, тестовые ключи.

Development

dev-univer.psy21v.ru

Общая проверка, демонстрация, тестовые данные и платежи.

Production

Основной домен

Реальные пользователи, данные, платежи, мониторинг и резервные копии.

Публикация и мониторинг

Каждая публикация

После публикации

Обязательное направление

Безопасность и контроль качества

Контроли подключаются вместе с функциями, которые создают риск. Сейчас нужен baseline для публичного сайта; защита авторизации, кабинетов, платежей, файлов и API становится обязательным gate до публикации соответствующего модуля.

Правило выпуска: отсутствие функции не считается реализованной защитой. Codex добавляет негативные и интеграционные тесты в том же релизе, где появляется защищаемая поверхность, и блокирует публикацию при провале обязательного контроля.

Baseline публичного сайта

Сейчас · R0

HTTPS, безопасные HTTP-заголовки, отсутствие секретов, контролируемые зависимости, минимальные права deploy и проверяемый откат.

До следующего публичного релиза

Feature-gated security

R2–R4

Auth, кабинеты, API, платежи, загрузки и серверные интеграции не выходят без своих authorization, abuse и data-safety тестов.

Вместе с каждой функцией

Baseline сейчас

Публичный сайт и публикация

Код, зависимости и данные

Контроли по мере появления функций

КонтрольКогда обязателенЧто проверяет 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 authorizationAdmin 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Публичный или кабинетный APIOrigin, методы и заголовки перечислены явно; wildcard не совмещается с credentials; preflight покрыт тестом.При открытии первого browser API, R2
Race conditionsЗаказы, места, прогресс, сертификатыПараллельные запросы не создают дубли; применяются транзакции, unique constraints, locks и idempotency keys.С первой конкурентной операцией, R2–R4
Log redactionBackend, auth, платежи, интеграцииПароли, токены, cookies, ключи, платёжные и лишние персональные данные не попадают в application/deploy логи.С первым backend logger, R2
Security Definition of Done: threat surface описана, серверная проверка доступа реализована, негативный тест добавлен, секреты и логи проверены, зависимости просканированы, а результат входит в обязательный release checklist.
Управление качеством

Риски и обязательные решения

РискЧто произойдётРешениеКогда
Сразу строить всёДолгий запуск без обратной связи и продажРелизы R0–R5, измеримый результат каждогоСейчас
Смешать лендинг и LMSХрупкий код и медленные измененияОбщая дизайн-система, разделённые доменные модулиR1
Хранить видео на сервереЗакончится диск, медленная выдачаS3/CDN, HLS и подписанные ссылкиR3
Нет версий курсаИзменения ломают обучение текущих группPublished version + enrollment snapshotR4
Слабая модель ролейУтечки данных компаний и лишние доступыRBAC + tenant isolation + аудит действийR2
Дубли платежейПовторные доступы/возвраты и финансовые ошибкиИдемпотентные вебхуки и журнал транзакцийR2
Нет резервных копийПотеря курсов, заказов и прогрессаЕжедневные backup + тест восстановленияR0/R2
Тяжёлая анимацияПадение FPS и конверсии на слабых устройствахQuality tiers, reduced motion, lazy loading, WebGL fallbackВсегда
Юридические пробелыРиски обработки данных и продаж обученияПолитика, согласия, оферта, лицензия, хранение согласийR0–R2
Definition of Done: функция считается готовой только после мобильной проверки, доступности с клавиатуры, аналитического события, обработки ошибок, теста ключевого сценария и краткой документации.
По этому запросу ничего не найдено.