Розробка освітної платформи (LMS)
LMS (Learning Management System) — система для створення, управління та доставки навчальних матеріалів. Платформа забезпечує цикл: створення курсу → зачислення студента → прохождення уроків → оцінка → видача сертифіката. Складність реалізації залежить від типу контенту, інтерактивності та масштабу.
Ключові ролі
- Адміністратор — управління платформою, користувачами, інтеграціями
- Викладач/Автор — створення курсів, матеріалів, завдань, оцінка робіт
- Студент — прохождення курсів, виконання завдань, отримання сертифікатів
- Менеджер/Куратор — контроль прогресу групи, комунікація
Структура курсу
Course
├── Section 1 "Вступ"
│ ├── Lesson 1.1: Video (15 min)
│ ├── Lesson 1.2: Article
│ └── Quiz 1 (5 питань)
├── Section 2 "Основи"
│ ├── Lesson 2.1: Video
│ ├── Assignment 2.1 (домашнее завдання)
│ └── Lesson 2.2: Webinar (live)
└── Фінальний екзамен
└── Сертифікат
Кожен елемент структури зберігається в 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
);
Обмеження по часу, максимальне кількість спроб, перемішування питань — налаштовуються на рівні квізу.
Прогрес та завершення
Прогрес студента відслідковується через lesson_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-сесіями, завданнями з ручною перевіркою, SCORM-імпортом, мобільним приложением: 6–10 місяців.







