EducationПремиум

Платформа онлайн-школы

Платформа онлайн-школы: кабинеты ученик/преподаватель/админ, курсы, вебинары, AI Course Studio и биллинг.

~60 минСреднийREADME
Next.jsTypeScriptMongoDBShadcn UIReplicateTailwindpnpm

Ценность

Вайбкодинг

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/wikiSpaces, страницы, комментарии, acknowledge
Synced blocks/dashboard/synced-blocksОбщие блоки контента с reuse
Умные таблицы/dashboard/tablesSmart tables + rows API
Задачи/dashboard/tasksTask 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/leaderboardXP, kudos, лидерборд
Объявления/dashboard/admin/announcementsБаннеры, ack, reads
Биллинг/dashboard/billing, admin orders/tariffs/promoЗаказы, тарифы, промокоды
Вебинары/webinar/[slug], /dashboard/admin/webinarsПубличная воронка + админка
Сертификаты/dashboard/student/certificatesВыдача сертификатов
PWA/offline, public/sw.jsService worker, offline

Роли: admin, teacher, student, hr, manager, employee.


Админка

Полный список разделов (sidebar admin + detail routes).

РазделПутьФункции
Обзор/dashboard/adminKPI / сводка
Заявки/dashboard/admin/leadsCRM лидов с лендинга
Пользователи/dashboard/admin/usersCRUD, роли, оргпривязка
Темы/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/telemostOAuth / интеграция встреч
Журнал/dashboard/admin/auditAudit log
Система/dashboard/admin/systemHealth / конфиг-флаги
Аналитика/dashboard/admin/analyticsКогорты и метрики
Бэкапы/dashboard/admin/backupExport
Объявления/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/rollupRollup по оргструктуре

Дополнительно admin видит AI Studio, шаблоны, Q&A inbox, отзывы, sync-блоки, задачи, wiki, таблицы (см. sidebar).


Tech stack

СлойТехнология
AppNext.js 16.2.4 (App Router), React 19, TypeScript 5.7.3
UITailwind CSS 4, Radix / shadcn, Lucide
AuthJWT в HTTP-only cookie (jose + AUTH_SECRET), bcrypt
DBMongoDB driver 7.x, БД по умолчанию sozdai
EmailNodemailer (SMTP)
MediaЛокальные uploads и/или S3-compatible (MinIO / Yandex Object Storage)
AIReplicate (LLM + Whisper)
MeetingsYandex Telemost OAuth
PushWeb Push (VAPID)
DeployVercel (cron в vercel.json); возможен self-host next start
Package managerpnpm

Инфраструктура для локальной разработки: 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_DB
  • AUTH_SECRET (≥ 32 символов)
  • SEED_ADMIN_EMAIL, SEED_ADMIN_PASSWORD
  • SEED_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_*, в клиентский бандл не попадают).


Переменные окружения

ГруппаПримерыОбязательность
CoreMONGODB_URI, MONGODB_DB, AUTH_SECRET, NEXT_PUBLIC_SITE_URLRequired
SeedSEED_ADMIN_*, SEED_TEACHER_PASSWORD, SEED_STUDENT_PASSWORD, SEED_DEMO_PASSWORDRequired для seed
EmailSMTP_*, ADMIN_NOTIFY_EMAIL, PUBLIC_BASE_URLRecommended
CronCRON_SECRETRequired для cron routes
MeetingsTELEMOST_*, NEXT_PUBLIC_TELEMOST_CLIENT_IDRecommended
AI StudioREPLICATE_API_TOKEN, REPLICATE_*, STUDIO_WATCH_DIRRecommended для Studio
PushVAPID_*Recommended
Media / BillingS3_*, 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 devDev-сервер
pnpm buildProduction build
pnpm startЗапуск после build
pnpm typechecktsc --noEmit
pnpm lintESLint
pnpm seedБазовые пользователи / темы / стартовые данные
pnpm seed:demoРасширенный демо-набор

Production deploy

Текущий целевой контур в репозитории: Vercel (vercel.json — cron для meeting-reminders и webinar-funnel).

Критичные правила:

  1. Все секреты — только в host env / secret store, не в git.
  2. AUTH_SECRET и CRON_SECRET — уникальные production-значения.
  3. Cron вызывает /api/cron/* с заголовком Authorization: Bearer <CRON_SECRET>.
  4. Для media в проде настройте S3-compatible storage (см. .env.production.example).
  5. Не используйте SEED_* пароли в публичных окружениях после первичного bootstrap.

Self-host альтернатива: pnpm build && pnpm start за reverse-proxy, MongoDB в Docker/отдельном хосте.

Дополнительные runbook-заметки: docs/ops/.


Git workflow

Ветки:

ВеткаНазначение
masterproduction
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 к Mongodocker ps / порт 27017
Seed падает на SEED_*Все seed-пароли заполнены в .env.local
Quick Login недоступенТолько non-production; выполнен pnpm seed
503 на cronЗадан CRON_SECRET, Bearer совпадает
Studio / AI ошибкиREPLICATE_API_TOKEN выдан и валиден
Письма не уходятSMTP_* заполнены; иначе отправка пропускается

Безопасность для внешних разработчиков

  1. Секреты и SSH-доступ выдаются out-of-band, не через git и не через чаты с историей.
  2. Не коммитьте .env*, дампы БД, ключи S3/SMTP/OAuth/AI.
  3. Не логируйте пароли, JWT, токены.
  4. Demo Quick Login и seed-пароли — только для локальной среды.
  5. Если секреты когда-либо попадали в историю git — их нужно ротировать до выдачи доступа (см. security report владельца).
  6. 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 часов.

v1.0.0

Master Prompt в Премиум

Скопируйте один prompt в Cursor, Claude Code или Codex — и соберите приложение end-to-end. Внутри — персональный доступ к приватному репозиторию.

Смотреть тарифы

Оплата после выбора тарифа — затем вход или регистрация.

Changelog

  • v1.0.0 · 2026-07-16

    Каталожный релиз sozdai.com с private repo placeholders.