Перейти к содержимому
d.nikolaev
Все проекты
ФлагманПродуктПод NDA

Конструктор курсов

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

Роль
Frontend-разработчик: фичи, рефакторинг, оптимизация, ревью
Период
сентябрь 2023 г. — по настоящее время
Команда
5 человек
Компания
LazurM

Детали и код закрыты соглашением: описываю задачи и решения без раскрытия внутренностей.

Обезличенный интерфейс конструктора курсов под пометкой NDA

Инструмент, в котором методисты и преподаватели собирают курсы: структура из модулей и уроков, контентный редактор лонгридов, конструктор тестов, проекты и публикация в плеер. Мой самый долгий проект — больше семисот коммитов.

Что сделано

  • Больше 700 коммитов: от отдельных фич до перестройки слоёв приложения
  • Дерево модулей и уроков с перетаскиванием, переносом и массовыми операциями
  • Редактор лонгридов на собственной библиотеке — один контентный слой на конструктор и плеер
  • Конструктор тестов: типы вопросов, ранжирование, сопоставление, проверка ответов
  • Сценарии с GPT: уточнение и доработка содержания курса прямо в редакторе
  • Строгие правила зависимостей по FSD, проверяемые линтером на CI

Контекст

Продукт

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

Продукт живой: требования появляются от методистов, преподавателей и администраторов, поэтому редактор постоянно обрастает новыми типами контента и правилами.

Задача

Задача

Главная сложность редактора — состояние. Дерево курса, черновики блоков, порядок элементов, незакоммиченные правки и валидация живут одновременно, а пользователь ожидает, что ничего не потеряется.

Вторая сложность — общий контент с плеером. Один и тот же лонгрид должен редактироваться в конструкторе и одинаково отображаться студенту, иначе автор не понимает, что увидит группа.

Третья — рост кодовой базы. За несколько лет редактор из набора страниц превратился в большое приложение, и без формальных правил зависимостей связи между модулями быстро запутались бы.

Решение

Решение

Конструктор и плеер используют один контентный слой: автор редактирует те же блоки, которые видит студент. Новые типы материалов добавляются, не ломая уже собранные курсы.

Результат

Результат

Конструктор — продукт, где я проработал дольше всего и где видно накопленный эффект: структура приложения выдержала несколько волн новых требований, а типовая фича перестала требовать правок в половине кодовой базы.

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

Интерфейс

Обезличенный интерфейс конструктора курсов под пометкой NDA

Связанные проекты