Розробка системи прогресу навчання (Progress Tracking) для LMS

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Розробка системи прогресу навчання (Progress Tracking) для LMS
Середня
~3-5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Розробка системи прогресу навчання для LMS

Progress Tracking в LMS—це більше ніж "завершено X з Y уроків". Повнофункціональна система відстежує активність на рівні секунд, аналізує паттерни навчання та виявляє студентів, які рискують кинути курс.

Що та як відстежувати

Рівень уроку:

  • Час відкриття та закриття
  • Рівень завершення відео (не просто "відкрив", а "переглянув 85%")
  • Прокрутка текстового контенту
  • Клики по інтерактивних елементах

Рівень курсу:

  • % завершених уроків
  • % завершених завдань
  • Остання дата активності
  • Streak (днів поспіль)

Рівень платформи:

  • Середнє час сесії
  • Пристрої та час піку активності
  • Cohort retention (% студентів активних через 7/14/30 днів)

Модель даних

CREATE TABLE lesson_progress (
  id              UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  student_id      UUID REFERENCES users(id),
  lesson_id       UUID REFERENCES lessons(id),
  course_id       UUID REFERENCES courses(id),
  status          VARCHAR(30) DEFAULT 'not_started', -- not_started, in_progress, completed
  started_at      TIMESTAMPTZ,
  completed_at    TIMESTAMPTZ,
  video_progress  JSONB,  -- { "duration_ms": 3600000, "watched_ms": 3060000 }
  time_spent_secs INTEGER,
  created_at      TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX idx_lesson_progress_student ON lesson_progress(student_id, created_at);

Відстеження подій (клієнт)

// Відстежуйте прогрес відео кожні 30 секунд
video.addEventListener('timeupdate', debounce(() => {
  fetch('/api/lessons/track/video-progress', {
    method: 'POST',
    body: JSON.stringify({
      lessonId,
      currentTime: video.currentTime,
      duration: video.duration,
    }),
  });
}, 30000));

// Відстежуйте завершення уроку
async function completeLesson(lessonId) {
  await fetch(`/api/lessons/${lessonId}/complete`, {
    method: 'POST',
    body: JSON.stringify({ completedAt: new Date() }),
  });
}

Виявлення ризику

-- Студенти в групі ризику відсіву
SELECT u.id, u.email, c.name, datediff(day, lp.started_at, NOW()) AS days_inactive
FROM lesson_progress lp
JOIN users u ON u.id = lp.student_id
JOIN courses c ON c.id = lp.course_id
WHERE lp.status = 'in_progress'
  AND datediff(day, lp.started_at, NOW()) > 14
  AND u.email NOT IN (SELECT email FROM support_tickets WHERE status != 'closed')
ORDER BY days_inactive DESC;

Часова шкала

Базове відстеження прогресу—3–5 днів. Виявлення ризику з сповіщеннями—1–2 тижні.