Разработка образовательной платформы (LMS)
LMS (Learning Management System) — система для создания, управления и доставки учебных материалов. Платформа обеспечивает цикл: создание курса → зачисление студента → прохождение уроков → оценка → выдача сертификата. Сложность реализации зависит от типа контента, интерактивности и масштаба.
Ключевые роли
- Администратор — управляет платформой, пользователями, интеграциями
- Преподаватель/Автор — создаёт курсы, материалы, задания, оценивает работы
- Студент — проходит курсы, выполняет задания, получает сертификаты
- Менеджер/Куратор — контролирует прогресс группы, коммуникация
Структура курса
Course
├── Section 1 "Введение"
│ ├── Lesson 1.1: Video (15 min)
│ ├── Lesson 1.2: Article
│ └── Quiz 1 (5 questions)
├── Section 2 "Основы"
│ ├── Lesson 2.1: Video
│ ├── Assignment 2.1 (homework)
│ └── Lesson 2.2: Webinar (live)
└── Final Exam
└── Certificate
Каждый элемент структуры хранится в БД как course_items с типом (video, article, quiz, assignment, live_session) и порядком. Prerequisites — урок/секция недоступны пока не завершены предыдущие.
Видеохостинг
Загружать видео напрямую на сервер — плохая идея при объёме > нескольких часов. Стандартные решения:
Vimeo OTT / Vimeo Pro — защищённое видео с ограничением доменов, аналитика просмотров, адаптивный битрейт (HLS). API для загрузки и управления.
Cloudflare Stream — дешевле Vimeo, 1$/1000 минут хранения, транскодинг в HLS, встроенный плеер.
MUX — профессиональный видеохостинг с детальной аналитикой (% просмотра, rebuffer rate), Data API для построения своей аналитики.
Процесс загрузки: приложение запрашивает upload_url у провайдера → клиент загружает файл напрямую (минуя сервер) → провайдер транскодирует → webhook сигнализирует о готовности → обновляем статус урока.
Квизы и тестирование
Типы вопросов:
- Single choice — один правильный вариант
- Multiple choice — несколько правильных
- True/False
- Short answer — текстовый ввод с автопроверкой
- Essay — ручная проверка преподавателем
- Code exercise — запуск кода в sandbox (Judge0 API)
Схема хранения результатов:
CREATE TABLE quiz_attempts (
id, student_id, quiz_id, started_at, submitted_at,
score INT, max_score INT, passed BOOLEAN
);
CREATE TABLE quiz_answers (
attempt_id, question_id, answer_data JSONB, is_correct BOOLEAN, points INT
);
Ограничение по времени, максимальное количество попыток, перемешивание вопросов — настраиваются на уровне квиза.
Прогресс и завершение
Прогресс студента отслеживается через course_completions:
CREATE TABLE lesson_completions (
student_id, lesson_id, completed_at,
watch_percentage INT, -- для видео
PRIMARY KEY (student_id, lesson_id)
);
Курс считается завершённым при 100% выполнении всех обязательных элементов. Опциональные элементы (дополнительные материалы) не блокируют завершение.
Сертификаты
Сертификат генерируется автоматически при завершении курса. Шаблон в PDF с данными: имя студента, название курса, дата, подпись преподавателя. Уникальный номер сертификата + страница верификации (/certificates/verify/{hash}).
Генерация: puppeteer (HTML → PDF), @react-pdf/renderer или wkhtmltopdf.
Интеграции
- Zoom / BigBlueButton / Jitsi — для live-сессий
- Stripe — продажа доступа к курсам, подписки
- SCORM — стандарт для импорта курсов из сторонних authoring-tools (Articulate, iSpring)
- xAPI (Tin Can) — более современный стандарт отслеживания активности
- Slack / Telegram — уведомления о новых заданиях, дедлайнах
Сроки
MVP LMS (курсы с видео и квизами, прогресс студента, базовые сертификаты, простой магазин курсов): 3–5 месяцев. Полная платформа с live-сессиями, assignments с ручной проверкой, SCORM-импортом, мобильным приложением: 6–10 месяцев.







