Корпоративное обучение — это один из тех процессов, которые в малом бизнесе всегда работают «на коленке». Папка в Google Drive, видеозвонок с руководителем, несколько PDF. Работает, пока компания маленькая. Перестаёт работать, когда нужно масштабировать найм.
Клиенту нужна была не идеальная LMS — ему нужен был рабочий инструмент как можно быстрее.
Анализ: что реально нужно на старте
Я изучил существующие корпоративные LMS и их типовые болезни: перегруженный функционал, сложная настройка, высокая цена, долгий онбординг самой платформы. iSpring, Moodle, TalentLMS — всё это мощно, но избыточно для команды в 30–50 человек.
Сформулировал минимальный рабочий набор:
- Создать курс из текстовых блоков и видео
- Назначить курс сотруднику
- Пройти тест с проверкой результата
- Руководитель видит, кто прошёл, кто нет
Всё остальное — в будущих итерациях, если подтвердит ценность.
Решение: BaaS как архитектурное решение для скорости
Ключевой выбор — Supabase вместо собственного backend. Это дало:
- PostgreSQL из коробки с RLS (Row Level Security) для ролевой модели
- Аутентификацию без написания auth-кода
- Storage для медиафайлов курсов
- Realtime для обновлений прогресса без polling
Это решение сократило время до MVP вдвое. Никакого компромисса по надёжности — Supabase под капотом это production PostgreSQL с правильными индексами.
Ролевая система
Три роли с разными правами через Supabase RLS:
- Администратор — создаёт и управляет курсами, видит всю аналитику
- Автор курса — создаёт материалы в своей зоне ответственности
- Сотрудник — проходит назначенные курсы, видит только свой прогресс
RLS-политики работают на уровне базы данных — не на уровне API. Это означает, что даже прямой запрос к Supabase не вернёт чужие данные.
Тестирование с защитой от списывания
Тесты поддерживают одиночный и множественный выбор. Таймер на прохождение. Вопросы перемешиваются случайным образом при каждом запуске — это не позволяет передавать ответы коллегам.
Результат теста сохраняется с временной меткой и score. Руководитель видит в дашборде: кто сдал, кто нет, сколько попыток, средний балл по команде.
Frontend
React + Vite + TypeScript, стилизация через Tailwind CSS. Весь UI через shadcn/ui компоненты с кастомными токенами. SPA без SSR — в корпоративных приложениях это нормально: аудитория известна, SEO не нужен.
Результат
Платформа закрыла задачу онбординга: новый сотрудник проходит назначенные курсы самостоятельно, руководитель видит результаты без лишних разговоров.
Ключевой урок: правильный выбор инфраструктуры — это продуктовое решение, а не техническое. Supabase позволил запустить рабочий продукт тогда, когда это было нужно бизнесу.