EduPlatform — MVP платформы онлайн-школы на Next.js App Router, Supabase, TypeScript, shadcn/ui и Tailwind CSS.
Next.js App RouterTypeScriptSupabase(auth,database,RLS)shadcn/uiTailwind CSSDockerGitHub ActionsDokploy
frontend— Next.js приложениеdocs/database.md— описание БД, ролей и базовых политик безопасностиdocs/api.md— описание используемых запросов ("эндпоинтов") к Supabasedocs/test-accounts.md— как создать тестовые учётные записи (admin + student)infrastructure/supabase/schema.sql— схема таблиц.env.example— обязательные переменные окружения
- лендинг
/ - hero-секция
- каталог опубликованных курсов
- отзывы
- footer
- регистрация по
email/password - вход по
email/password - роли
adminиstudent - редирект после входа по роли
- просмотр опубликованных курсов
- запись на курс
- список своих курсов
- отмена записи на курс
- редактирование имени профиля
- список курсов
- создание курса
- редактирование курса
- удаление курса
- список студентов и их записей
- управление ролями пользователей
Скопируйте .env.example в .env.local и заполните значения:
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=npm install --prefix frontendСоздайте файл frontend/.env.local или настройте переменные окружения в среде выполнения.
Если вы используете только корневой .env.example, перенесите эти значения в локальную среду для Next.js.
npm run dev --prefix frontendПриложение будет доступно по адресу:
http://localhost:3000
npm run build --prefix frontend
npm run start --prefix frontend/— лендинг/login— вход/register— регистрация/dashboard— кабинет студента/dashboard/my-courses— курсы студента/dashboard/profile— профиль студента/admin— админ-панель/admin/courses— управление курсами/admin/students— список студентов
- студент видит только свой профиль и свои записи
- студенту доступны только опубликованные курсы
- админ управляет курсами и ролями
- логика доступа разделена на
guards,services,repositories - базовые политики описаны в
docs/database.md
В проекте есть минимальный backend API на Next.js Route Handlers (frontend/src/app/api).
Описание HTTP endpoints и запросов к Supabase:
docs/api.md
Frontend использует:
services— бизнес-логикаrepositories— работа сSupabasemodels/schemas— типы и валидация
Ключевые сервисы:
auth-servicecourse-serviceadmin-servicestudent-dashboard-servicecurrent-user-service
Сборка приложения выполняется через frontend/Dockerfile.
docker build -f frontend/Dockerfile -t eduplatform-frontend ./frontenddocker run -p 3000:3000 ^
-e NEXT_PUBLIC_SUPABASE_URL=your_url ^
-e NEXT_PUBLIC_SUPABASE_ANON_KEY=your_anon_key ^
-e SUPABASE_SERVICE_ROLE_KEY=your_service_role_key ^
eduplatform-frontendВ репозитории предусмотрен workflow для:
- установки зависимостей
- проверки TypeScript
- production build
- деплоя на Dokploy через webhook
Для деплоя нужно добавить секрет:
DOKPLOY_DEPLOY_HOOK_FRONTENDDOKPLOY_DEPLOY_HOOK_SUPABASE
Кратко:
- Source: GitHub repository
- App path:
frontend - Dockerfile path:
frontend/Dockerfile - Port:
3000 - переменные окружения берутся из
.env.example
Тестовые учётные данные находятся в файле login_pass.md.