Legan Studio
Все статьи
~ 5 мин чтения

Сайт образовательной платформы: уроки и оплата

Как устроена EdTech-платформа — каталог курсов, плеер уроков, прогресс, домашние задания, оплата и сертификаты. Стек и архитектурные решения.

  • сайт
  • EdTech
  • сценарии

Образовательная платформа — это не просто видео плюс текст. Это связка из каталога, плеера, системы прогресса, ДЗ, оплаты подписки и сертификации. Посмотрим, как это собирается и где обычно проседают MVP.

Каталог курсов

Каталог должен решать две задачи: помочь выбрать (фильтры по теме, уровню, длительности, цене) и продать. Карточка курса — программа, длительность, преподаватель, отзывы выпускников, что после курса. Если курс с потоковым форматом — следующий старт и количество мест.

На Next.js каталог делается через SSG с ревалидацией: новый курс добавляется в админке, страница пересобирается. Поиск — Meilisearch или Postgres FTS, в зависимости от объёма. Для больших каталогов (1000+ курсов) рекомендуем Meilisearch с triggers на синхронизацию.

Плеер уроков и прогресс

Плеер — критический компонент. Что должно быть: качество (240p-1080p), скорость (0.75x-2x), субтитры, конспект урока рядом, кнопка «следующий урок», запоминание позиции при перезагрузке.

Хранение видео — отдельная история. Загрузка напрямую в S3 не работает: нужен HLS-стриминг с адаптивным битрейтом. Для РФ-инфраструктуры это VK Cloud Video, Yandex Cloud Video или собственный pipeline на ffmpeg + nginx-rtmp + S3 для сегментов.

Прогресс пользователя — Postgres. Структура: user_id, lesson_id, progress_percent, completed_at. На фронте — оптимистичные обновления через React 19 Actions, на бэке — Server Components читают актуальный прогресс из БД.

Домашние задания и проверка

ДЗ бывают разные: тесты с автопроверкой, код с автотестами, эссе с проверкой ментором. Каждый формат — отдельная подсистема. Тесты — JSON в БД и React-компонент. Код — sandbox (Docker-контейнер с лимитом CPU/памяти) и набор тестов. Эссе — форма загрузки, очередь на проверку ментору, обратная связь.

Геймификация (баллы, ачивки, лидерборд) — спорная вещь. В B2C для подростков работает, в B2B для взрослых — раздражает. Не делайте её «потому что у конкурентов есть».

Оплата и подписка

Модели монетизации: разовая оплата за курс, подписка на доступ ко всему каталогу, freemium с платными «продвинутыми» уроками. Технически сложнее всего подписка: нужны рекуррентные платежи, отмена, заморозка, апгрейд тарифа.

В РФ это ЮKassa, Тинькофф Касса, CloudPayments — все умеют рекуррентные платежи. СБП пока не поддерживает рекуррентность для большинства банков, но это меняется. Ваш бэкенд хранит токен карты (через PCI-compliant провайдера), запускает списания по cron, обрабатывает отказы.

Сертификаты

Сертификат после прохождения курса — важный мотиватор. Технически: PDF с уникальным номером, QR-код с ссылкой на страницу проверки /cert/<uuid>, где видна информация о курсе и выпускнике (с его согласия). Генерация — на сервере через PDFKit или Puppeteer.

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

Производительность и масштаб

EdTech-нагрузка пиковая: всплески при старте новых потоков. Архитектура должна выдерживать 10x от среднего: Redis для кеша, CDN для видео и статики, горизонтальное масштабирование Node/Go воркеров.

Стек, который мы используем: Next.js 15 на фронте, Go или NestJS на бэке, Postgres + Redis, S3-хранилище, Yandex Cloud или Selectel для инфраструктуры.

Итого

EdTech-платформа — это связка из 4-5 крупных подсистем (каталог, плеер, прогресс, оплата, проверка ДЗ), каждая из которых требует отдельного проектирования. MVP за 3-4 месяца и 2-3 миллиона рублей — реальный сценарий. Полноценный продукт с подпиской и менторами — 6-9 месяцев и 5-10 миллионов.

Частые вопросы

Как устроен каталог курсов на образовательной платформе?

Каталог должен решать две задачи: помочь выбрать (фильтры по теме, уровню, длительности, цене) и продать. Карточка курса — программа, длительность, преподаватель, отзывы выпускников, что после курса. Если курс с потоковым форматом — следующий старт и количество мест. На Next.js каталог делается через SSG с ревалидацией: новый курс добавляется в админке, страница пересобирается. Поиск — Meilisearch или Postgres FTS, в зависимости от объёма. Для больших каталогов (1000+ курсов) рекомендуем Meilisearch.

Как технически устроен видеоплеер для курсов?

Плеер — критический компонент. Что должно быть: качество (240p-1080p), скорость (0.75x-2x), субтитры, конспект урока рядом, кнопка «следующий урок», запоминание позиции при перезагрузке. Хранение видео — отдельная история. Загрузка напрямую в S3 не работает: нужен HLS-стриминг с адаптивным битрейтом. Для РФ-инфраструктуры это VK Cloud Video, Yandex Cloud Video или собственный pipeline на ffmpeg + nginx-rtmp + S3 для сегментов. Без HLS видео плохо работает на медленных сетях.

Как реализовать прогресс пользователя по курсу?

Прогресс пользователя — Postgres. Структура: user_id, lesson_id, progress_percent, completed_at. На фронте — оптимистичные обновления через React 19 Actions, на бэке — Server Components читают актуальный прогресс из БД. Это даёт мгновенный отклик при отметке урока пройденным и при этом надёжность данных. Прогресс — основа геймификации и мотивации продолжать обучение. Без него пользователи теряют ощущение продвижения и чаще бросают курсы на середине.

Как организовать домашние задания и проверку?

ДЗ бывают разные. Тесты с автопроверкой — JSON в БД и React-компонент. Код с автотестами — sandbox (Docker-контейнер с лимитом CPU/памяти) и набор тестов. Эссе с проверкой ментором — форма загрузки, очередь на проверку ментору, обратная связь. Геймификация (баллы, ачивки, лидерборд) — спорная вещь. В B2C для подростков работает, в B2B для взрослых раздражает. Не делайте её «потому что у конкурентов есть» — оценивайте по реальной пользе для аудитории.

Как реализовать оплату подписки на образовательной платформе?

Модели монетизации: разовая оплата за курс, подписка на доступ ко всему каталогу, freemium с платными «продвинутыми» уроками. Технически сложнее всего подписка: нужны рекуррентные платежи, отмена, заморозка, апгрейд тарифа. В РФ это ЮKassa, Тинькофф Касса, CloudPayments — все умеют рекуррентные платежи. СБП пока не поддерживает рекуррентность для большинства банков. Ваш бэкенд хранит токен карты (через PCI-compliant провайдера), запускает списания по cron, обрабатывает отказы.

Как сделать сертификаты после прохождения курса?

Сертификат после прохождения курса — важный мотиватор. Технически: PDF с уникальным номером, QR-код с ссылкой на страницу проверки /cert/UUID, где видна информация о курсе и выпускнике (с его согласия). Генерация на сервере через PDFKit или Puppeteer. Если сертификат имеет юридический вес (профессиональная переподготовка) — нужна дополнительная обвязка: реестр в Рособрнадзоре, лицензия на образовательную деятельность, специальные формы документов. Без юридической силы сертификат — это просто красивая бумажка для мотивации.