
Платформа онлайн-школы
Платформа онлайн-школы: кабинеты ученик/преподаватель/админ, курсы, вебинары, AI Course Studio и биллинг.
Ценность
Вайбкодинг
210 ч
Строк кода
~ 66 600+
Аналог у студии
от 1 450 000 ₽
Экономия на токенах
≈ 20 000 ₽
Инструкция из репозитория
Sozdai
Платформа онлайн-обучения и корпоративного L&D: курсы, живые занятия, wiki, OKR, онбординг, геймификация и AI Course Studio.
Версия 0.1.0 · Next.js 16 · MongoDB 7 · pnpm
Возможности · Админка · Стек · Установка · Env · Структура · Скрипты · Деплой · Git · Безопасность · Документация
Возможности
Каталог поверхностей из кода (lib/navigation/dashboard.ts + app/dashboard/**).
| Модуль | Пути | Назначение |
|---|---|---|
| Курсы и уроки | /dashboard/student/courses, /dashboard/teacher/courses, /courses | Каталог, прохождение, редактор, видео с прогрессом |
| Задания и проверка | /dashboard/*/assignments, /dashboard/teacher/reviews | ДЗ, submissions, очередь проверки |
| Квизы | /dashboard/teacher/quizzes, /dashboard/teacher/quiz-stats | Конструктор, попытки, аналитика |
| Группы и слоты | /dashboard/teacher/groups, .../slots, .../meetings | Потоки, запись, Telemost |
| AI Course Studio | /dashboard/teacher/studio | Архитектор курсов, lesson-builder, записи, review |
| Learning paths | /dashboard/teacher/learning-paths | Программы из нескольких курсов |
| Шаблоны курсов | /dashboard/templates | Каталог шаблонов, рейтинг, apply |
| Wiki / база знаний | /dashboard/wiki | Spaces, страницы, комментарии, acknowledge |
| Synced blocks | /dashboard/synced-blocks | Общие блоки контента с reuse |
| Умные таблицы | /dashboard/tables | Smart tables + rows API |
| Задачи | /dashboard/tasks | Task boards / канбан |
| OKR | /dashboard/okrs, /dashboard/okrs/rollup | Цели, rollup-сводка |
| 1-on-1 | /dashboard/notes | Заметки one-on-one |
| Pulse-опросы | /dashboard/pulse, /dashboard/admin/pulse | Анонимные pulse-surveys |
| Сценарии диалогов | /dashboard/dialog-scripts | Редактор и прогон диалогов |
| Онбординг | /dashboard/student/onboarding, /dashboard/admin/onboarding | Треки и назначения |
| Рекрутинг | /dashboard/recruiting, /welcome/[token] | Кандидаты, welcome-портал |
| Компетенции / навыки | /dashboard/admin/competencies, /dashboard/student/skills | Матрица навыков, grant |
| Геймификация | /dashboard/student/rewards, /dashboard/leaderboard | XP, kudos, лидерборд |
| Объявления | /dashboard/admin/announcements | Баннеры, ack, reads |
| Биллинг | /dashboard/billing, admin orders/tariffs/promo | Заказы, тарифы, промокоды |
| Вебинары | /webinar/[slug], /dashboard/admin/webinars | Публичная воронка + админка |
| Сертификаты | /dashboard/student/certificates | Выдача сертификатов |
| PWA | /offline, public/sw.js | Service worker, offline |
Роли: admin, teacher, student, hr, manager, employee.
Админка
Полный список разделов (sidebar admin + detail routes).
| Раздел | Путь | Функции |
|---|---|---|
| Обзор | /dashboard/admin | KPI / сводка |
| Заявки | /dashboard/admin/leads | CRM лидов с лендинга |
| Пользователи | /dashboard/admin/users | CRUD, роли, оргпривязка |
| Темы | /dashboard/admin/topics | Каталог тем курсов |
| Компетенции | /dashboard/admin/competencies | Справочник + grant |
| Курсы | /dashboard/admin/courses, .../[id] | Админ-управление курсами |
| Группы | /dashboard/admin/groups | Группы потоков |
| Заказы | /dashboard/admin/orders | Подтверждение оплаты |
| Тарифы | /dashboard/admin/tariffs | Прайс |
| Промокоды | /dashboard/admin/promo-codes | Скидки |
| Встречи | /dashboard/admin/meetings | Глобальный календарь |
| Вебинары | /dashboard/admin/webinars, .../new, .../[id] | CRUD, регистрации, funnel |
| Письма | /dashboard/admin/email-preview | Превью SMTP-шаблонов |
| Telemost | /dashboard/admin/telemost | OAuth / интеграция встреч |
| Журнал | /dashboard/admin/audit | Audit log |
| Система | /dashboard/admin/system | Health / конфиг-флаги |
| Аналитика | /dashboard/admin/analytics | Когорты и метрики |
| Бэкапы | /dashboard/admin/backup | Export |
| Объявления | /dashboard/admin/announcements, .../[id]/reads | Создать / прочтения |
| Pulse | /dashboard/admin/pulse, .../[id] | Создание и отчёты |
| Онбординг | /dashboard/admin/onboarding | Треки и assignments |
| Структура | /dashboard/admin/org | Оргединицы, CSV import |
| Рекрутинг | /dashboard/recruiting, .../[id] | Кандидаты |
| OKR сводка | /dashboard/okrs/rollup | Rollup по оргструктуре |
Дополнительно admin видит AI Studio, шаблоны, Q&A inbox, отзывы, sync-блоки, задачи, wiki, таблицы (см. sidebar).
Tech stack
| Слой | Технология |
|---|---|
| App | Next.js 16.2.4 (App Router), React 19, TypeScript 5.7.3 |
| UI | Tailwind CSS 4, Radix / shadcn, Lucide |
| Auth | JWT в HTTP-only cookie (jose + AUTH_SECRET), bcrypt |
| DB | MongoDB driver 7.x, БД по умолчанию sozdai |
| Nodemailer (SMTP) | |
| Media | Локальные uploads и/или S3-compatible (MinIO / Yandex Object Storage) |
| AI | Replicate (LLM + Whisper) |
| Meetings | Yandex Telemost OAuth |
| Push | Web Push (VAPID) |
| Deploy | Vercel (cron в vercel.json); возможен self-host next start |
| Package manager | pnpm |
Инфраструктура для локальной разработки: MongoDB 7 (Docker). Redis в текущем коде не обязателен.
Prerequisites
- Node.js 20+
- pnpm 9+
- Docker (рекомендуется для MongoDB) или локальный
mongod - Git + SSH-доступ к приватному remote (выдаёт администратор)
Clone / доступ
git clone <SSH_URL_выдаёт_администратор>
cd sozdai.com
Публичный web-URL git-хостинга в документации не публикуется. SSH clone URL и права доступа выдаются out-of-band.
Локальная разработка
1. Установка зависимостей
pnpm install
2. Env
cp .env.example .env.local
Заполните как минимум:
MONGODB_URI,MONGODB_DBAUTH_SECRET(≥ 32 символов)SEED_ADMIN_EMAIL,SEED_ADMIN_PASSWORDSEED_TEACHER_PASSWORD,SEED_STUDENT_PASSWORD,SEED_DEMO_PASSWORD
Source of truth по переменным: .env.example. Production-шаблон: .env.production.example.
3. MongoDB (локальный Docker)
docker run -d --name sozdai-mongo -p 27017:27017 mongo:7
Альтернатива: уже установленный mongod
Убедитесь, что слушает 127.0.0.1:27017, и укажите тот же URI в .env.local.
Облачный Atlas / managed MongoDB как основной путь локальной разработки не рекомендуется. Используйте только если администратор явно выдал URI.
4. Seed
pnpm seed
pnpm seed:demo # опционально: расширенные демо-данные
Админ создаётся только из SEED_* env. Пароли в коде не хранятся.
5. Dev-сервер
pnpm dev
По умолчанию Next.js слушает http://localhost:3000.
В non-production на /login доступен Dev Quick Login (пароли читаются на сервере из SEED_*, в клиентский бандл не попадают).
Переменные окружения
| Группа | Примеры | Обязательность |
|---|---|---|
| Core | MONGODB_URI, MONGODB_DB, AUTH_SECRET, NEXT_PUBLIC_SITE_URL | Required |
| Seed | SEED_ADMIN_*, SEED_TEACHER_PASSWORD, SEED_STUDENT_PASSWORD, SEED_DEMO_PASSWORD | Required для seed |
SMTP_*, ADMIN_NOTIFY_EMAIL, PUBLIC_BASE_URL | Recommended | |
| Cron | CRON_SECRET | Required для cron routes |
| Meetings | TELEMOST_*, NEXT_PUBLIC_TELEMOST_CLIENT_ID | Recommended |
| AI Studio | REPLICATE_API_TOKEN, REPLICATE_*, STUDIO_WATCH_DIR | Recommended для Studio |
| Push | VAPID_* | Recommended |
| Media / Billing | S3_*, PAYMENT_PROVIDER_* | Production-only |
Полный список и комментарии — в .env.example. Секреты и токены интеграций выдаёт администратор out-of-band.
Структура проекта
app/ # Next.js App Router (pages + API)
api/ # REST handlers
dashboard/ # Кабинет по ролям
webinar/ # Публичные вебинары
welcome/ # Welcome-портал кандидата
components/ # UI и dashboard-компоненты
lib/
auth/ # session, password
db/ # mongodb client, models
navigation/ # sidebar / mobile nav
schemas/ # zod
services/ # бизнес-логика (wiki, pulse, push, …)
scripts/ # seed, seed-demo
docs/ # документация (см. docs/README.md)
public/ # статика, PWA, uploads (uploads в gitignore)
Скрипты
| Команда | Описание |
|---|---|
pnpm dev | Dev-сервер |
pnpm build | Production build |
pnpm start | Запуск после build |
pnpm typecheck | tsc --noEmit |
pnpm lint | ESLint |
pnpm seed | Базовые пользователи / темы / стартовые данные |
pnpm seed:demo | Расширенный демо-набор |
Production deploy
Текущий целевой контур в репозитории: Vercel (vercel.json — cron для meeting-reminders и webinar-funnel).
Критичные правила:
- Все секреты — только в host env / secret store, не в git.
AUTH_SECRETиCRON_SECRET— уникальные production-значения.- Cron вызывает
/api/cron/*с заголовкомAuthorization: Bearer <CRON_SECRET>. - Для media в проде настройте S3-compatible storage (см.
.env.production.example). - Не используйте
SEED_*пароли в публичных окружениях после первичного bootstrap.
Self-host альтернатива: pnpm build && pnpm start за reverse-proxy, MongoDB в Docker/отдельном хосте.
Дополнительные runbook-заметки: docs/ops/.
Git workflow
Ветки:
| Ветка | Назначение |
|---|---|
master | production |
develop | интеграционная |
feature/* | рабочие ветки |
Поток:
feature/<short-name> → develop → master
Правила:
- Не коммитить напрямую в
master/develop - Conventional commits:
feat|fix|docs|refactor|chore|test|style(scope): … - Не коммитить
.env,.env.local, бэкапы и реальные секреты - Merge предпочтительно
--no-ff
Пример:
git checkout develop
git pull
git checkout -b feature/my-change
# …работа…
git add <релевантные файлы>
git commit -m "feat(scope): краткое описание"
git push -u origin HEAD
# merge feature → develop → master (по процессу команды)
Подробнее: docs/git/.
Troubleshooting
| Симптом | Что проверить |
|---|---|
MONGODB_URI не задан | .env.local существует и загружается |
| ECONNREFUSED к Mongo | docker ps / порт 27017 |
Seed падает на SEED_* | Все seed-пароли заполнены в .env.local |
| Quick Login недоступен | Только non-production; выполнен pnpm seed |
| 503 на cron | Задан CRON_SECRET, Bearer совпадает |
| Studio / AI ошибки | REPLICATE_API_TOKEN выдан и валиден |
| Письма не уходят | SMTP_* заполнены; иначе отправка пропускается |
Безопасность для внешних разработчиков
- Секреты и SSH-доступ выдаются out-of-band, не через git и не через чаты с историей.
- Не коммитьте
.env*, дампы БД, ключи S3/SMTP/OAuth/AI. - Не логируйте пароли, JWT, токены.
- Demo Quick Login и seed-пароли — только для локальной среды.
- Если секреты когда-либо попадали в историю git — их нужно ротировать до выдачи доступа (см. security report владельца).
- Production credentials не копируйте в личные машины без необходимости.
Документация
Индекс: docs/README.md
| Раздел | Содержание |
|---|---|
docs/product/ | Продуктовая концепция / LMS |
docs/plans/ | Роадмапы и планы (Studio и др.) |
docs/audits/ | Аудиты |
docs/marketing/ | Маркетинговые материалы |
docs/setup/ | Onboarding / env |
docs/git/ | Git workflow |
docs/ops/ | Deploy / ops |
docs/security/ | Security notes |
License / contacts
Приватный репозиторий. Доступ и лицензионные условия — у владельца проекта.
Вопросы по onboarding: администратор репозитория (контакт выдаётся вместе с SSH-доступом).
Master Prompt
Скопируйте в Cursor / Claude Code. Каждый copy даёт новый токен; предыдущий действует ещё 48 часов.
Master Prompt в Премиум
Скопируйте один prompt в Cursor, Claude Code или Codex — и соберите приложение end-to-end. Внутри — персональный доступ к приватному репозиторию.
Оплата после выбора тарифа — затем вход или регистрация.
Changelog
v1.0.0 · 2026-07-16
Каталожный релиз sozdai.com с private repo placeholders.