Files
lms-sb/LMS_PROJECT_BRIEF.md
T
admins 80ca4b2d9d Initialize Stage 0: Next.js 16 scaffold with auth and role-based routing
- Next.js 16.2.2 + React 19 + TypeScript + Tailwind v4
- Better Auth with email/password and role system (student/curator/admin)
- Prisma 7 schema: User, Session, Account, Verification + full LMS model
- Role-based dashboards: student /dashboard, curator /curator/dashboard, admin /admin/dashboard
- Auth pages: login, register, verify-email
- Better Auth API route handler
- Middleware for route protection
- Docker Compose with PostgreSQL 16
- Seed script with test users (admin/curator/student)
- CLAUDE.md and ROADMAP.md project documentation

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 10:32:37 +05:00

14 KiB
Raw Permalink Blame History

LMS-проект: стартовый бриф для Claude Code

Этот документ — отправная точка проекта. Положи его в корень репозитория как PROJECT_BRIEF.md. В первой сессии Claude Code попроси: «Прочитай PROJECT_BRIEF.md, задай мне уточняющие вопросы по архитектуре, затем предложи план работ по этапам и создай CLAUDE.md с ключевыми правилами проекта».


1. Контекст и цель

Я — автор образовательных курсов (PKM, Obsidian). Сейчас размещаюсь на сторонней LMS-платформе (emdesell.ru), хочу переехать на собственное решение, которое буду развивать сам с помощью Claude Code.

Цель: собственная LMS, развёрнутая на моём сервере в Hetzner, с бесшовной интеграцией Kinescope, ролями, прогрессом и проверкой ДЗ.

Масштаб: ~1000 учётных записей, ~200 активных, до 10 курсов одновременно. Это камерный проект, не маркетплейс — простота и поддерживаемость важнее «масштабируемости на миллионы».

Мой технический уровень: уверенный пользователь — git, терминал, деплой знаю; код самостоятельно не пишу. Значит: стек должен быть популярным (много примеров), архитектура — простой и читаемой, шаги Claude Code — небольшими и обратимыми.


2. Роли пользователей

  • Ученик — регистрируется сам или добавляется админом, проходит курсы, сдаёт ДЗ, оставляет комментарии.
  • Куратор — проверяет ДЗ, оставляет обратную связь, видит прогресс группы.
  • Админ (я) — всё вышеперечисленное + создание/редактирование курсов, управление пользователями, аналитика, импорт/экспорт.

3. Функционал MVP (обязательно)

3.1. Курсы и контент

  • Курс → модули → уроки. До 10 курсов.
  • Типы контента в уроке: видео Kinescope (через iframe-embed с защитой), форматированный текст, PDF/файлы для скачивания, картинки.
  • Редактор уроков в админке: WYSIWYG с базовым форматированием (заголовки, списки, цитаты, код, ссылки, картинки).
  • Импорт урока из .md-файла — желательно (frontmatter → метаданные урока, тело → контент). Это критично, потому что я работаю в Obsidian.
  • Водяные знаки на загружаемых картинках и PDF — если просто, добавляем; иначе в бэклог.

3.2. Kinescope-интеграция

  • Хранение видео — только Kinescope.
  • Бесшовная вставка: в админке вставляю ID видео или ссылку, во фронте отрисовывается плеер.
  • Защита от скачивания обеспечивается самим Kinescope (signed URLs / referrer-проверка).
  • На этапе планирования: Claude Code должен изучить актуальное API Kinescope и предложить, как удобнее всего его подключить.

3.3. Прохождение и прогресс

  • Линейное прохождение: следующий урок открывается только после завершения предыдущего.
  • Урок засчитывается как пройденный по совокупности: просмотр видео + (если есть) сданный тест + (если есть) отправленное ДЗ.
  • ДЗ принимается автоматически при отправке — ученик сразу идёт дальше. Куратор оставляет обратную связь асинхронно, она прилетает ученику уведомлением и появляется в карточке урока.
  • Прогресс-бар по курсу и по модулю в личном кабинете.

3.4. Тесты и квизы

  • Типы вопросов: одиночный выбор, множественный выбор, короткий текстовый ответ.
  • Авто-проверка, показ правильных ответов после прохождения (настраивается).

3.5. Домашние задания

  • Формат отправки: текст + прикреплённые файлы.
  • Комментарии куратора к ДЗ — обязательны.
  • История переписки по конкретному ДЗ.

3.6. Комментарии под уроками

  • Тред обсуждения у каждого урока. Видны всем ученикам этого курса. Модерация — куратор/админ может удалять.

3.7. Уведомления (email)

  • Учеников: регистрация, новый комментарий куратора к ДЗ, ответ в обсуждении урока.
  • Админа/куратора: новое ДЗ на проверку, новый комментарий в обсуждении, регистрация нового ученика.
  • Telegram-бот для уведомлений админа/куратора (новое ДЗ, ошибки) — добавить во вторую итерацию MVP.

3.8. Регистрация и доступы

  • Самостоятельная регистрация по email + подтверждение.
  • Админ может вручную создать аккаунт и выдать доступ к курсу.
  • Доступ к курсу — на уровне «есть/нет» (продажи на платформе не делаем).

3.9. Миграция с emdesell

  • Перенос базы пользователей (email, имя, прогресс если возможно) — критично.
  • Перенос контента курсов (тексты уроков, ссылки на видео Kinescope, файлы) — критично.
  • На этапе планирования: Claude Code должен изучить документацию emdesell и предложить стратегию (API / экспорт CSV / парсинг HTML).

4. В бэклог (после MVP)

  • Геймификация (баллы, бейджи, рейтинги).
  • Сертификаты по окончании курса.
  • Промокоды, рассрочки, продажи через платформу (место в архитектуре заложить, реализацию — потом).
  • Дедлайны и расписания.
  • Мобильное приложение.

5. Технические требования и предпочтения

  • Хостинг: собственный сервер в Hetzner.

  • Локальная разработка: возможна, кроме видео (Kinescope доступен только онлайн).

  • Дизайн: тёплый и дружелюбный, подходящий для образования. Не корпоративный, не «тёмный энтерпрайз». Качественная типографика, читабельность важнее «вау-эффектов».

  • Язык интерфейса: русский (i18n не нужен).

  • Стек: не зафиксирован — Claude Code должен предложить на выбор 2–3 варианта с обоснованием. Критерии выбора:

    1. Простота поддержки в одиночку.
    2. Большое сообщество и много примеров (чтобы Claude Code хорошо его знал).
    3. Удобный деплой на VPS (Docker Compose как базовый сценарий).
    4. Хороший Markdown-рендеринг и возможность подключить TipTap/аналог для WYSIWYG.

    Мои ожидания (но я открыт к альтернативам): что-то вроде Next.js + PostgreSQL + Prisma + NextAuth + Tailwind, либо Laravel + Inertia + Vue, либо Django + HTMX.


6. Интеграции

  • Kinescope — обязательно, MVP.
  • SMTP / email-сервис (Postmark, Resend, или свой SMTP) — обязательно, MVP.
  • Telegram-бот — для уведомлений, вторая итерация MVP.
  • Аналитика — Yandex.Metrika и/или Plausible, в конце MVP.
  • Платежи — место в архитектуре заложить, реализацию отложить.

7. Что НЕ нужно делать

  • Продажи, корзина, промокоды, рассрочки.
  • Многоязычность.
  • Мобильное приложение.
  • Сложные ролевые иерархии помимо трёх ролей.
  • Дедлайны и жёсткие расписания.

8. Как я хочу работать с Claude Code

  • Маленькими шагами, с git-коммитами после каждого осмысленного куска.
  • В начале каждой большой фичи — короткий план в чате, потом реализация.
  • README и комментарии в коде — на русском или английском, но последовательно.
  • Перед любой миграцией БД или удалением файлов — спросить меня.
  • Все секреты — только в .env, никаких токенов в коде.

9. Первые шаги для Claude Code (план первой сессии)

  1. Изучить документацию Kinescope API (особенно: вставка плеера, защита от скачивания, получение метаданных видео).
  2. Изучить документацию emdesell (https://docs.emdesell.ru/) — есть ли API для экспорта пользователей и контента; если нет — предложить альтернативы.
  3. Предложить 2–3 варианта стека с плюсами/минусами под мои критерии.
  4. После выбора стека вместе со мной — создать CLAUDE.md в корне проекта со следующими разделами:
    • Стек и версии.
    • Структура каталогов.
    • Команды (dev, build, test, lint, db migrate).
    • Правила: маленькие коммиты, не трогать миграции без подтверждения, секреты только в env, русские названия только в UI-строках.
    • Чек-лист перед коммитом.
  5. Инициализировать репозиторий, базовый каркас, Docker Compose с приложением + PostgreSQL, минимальную страницу «hello world» с auth.
  6. Создать ROADMAP.md с разбивкой на этапы:
    • Этап 0: каркас, auth, роли.
    • Этап 1: курсы → модули → уроки (CRUD в админке).
    • Этап 2: интеграция Kinescope, рендер уроков для ученика.
    • Этап 3: прогресс и линейное открытие уроков.
    • Этап 4: тесты и квизы.
    • Этап 5: ДЗ и комментарии куратора.
    • Этап 6: обсуждения под уроками.
    • Этап 7: email-уведомления.
    • Этап 8: импорт .md, водяные знаки.
    • Этап 9: миграция с emdesell.
    • Этап 10: Telegram-бот, аналитика.
    • Этап 11: деплой на Hetzner.

10. Критерий «MVP готов»

Я могу: создать курс из админки, добавить модули и уроки с видео Kinescope и текстами, импортировать ученика из старой LMS, дать ему доступ, он зарегистрируется, пройдёт первый урок, сдаст тест, отправит ДЗ, получит автоматический допуск к следующему уроку, а позже — комментарий куратора по почте.

Когда этот сценарий работает end-to-end на production-сервере в Hetzner — MVP считается готовым.