Fable Media Platform
Рабочий scaffold по plan.md и ТЗ_единый.md: университетская платформа управления медиаконтентом, а не общий сайт университета.
Что реализовано
- React + TailwindCSS frontend на русском языке.
- Публичный контур: главная, каталог, поиск, материалы, медиа, мероприятия как тип контента, спикеры.
- Персонифицированный контур: демо-вход, профиль, роли, подписки, уведомления, комментарии.
- Административный контур: dashboard, пользователи и роли, очередь модерации, журнал действий, форма черновика.
- Elysia gateway на Node.js с CORS, request ID, rate limiting, service proxy, token-style fallback auth и RBAC checks.
- Go microservices для auth, user, content, taxonomy, speaker, subscription, notification, comment, search, analytics, audit, media.
- Рабочие backend endpoints: регистрация, вход, профиль, контент CRUD, медиа, категории, теги, спикеры, подписки, уведомления, комментарии, поиск, аналитика, admin users/roles/audit.
- PostgreSQL migration для сущностей из ТЗ.
- Docker Compose для локального запуска всех контуров.
Все данные в интерфейсе и API являются явно демонстрационными заглушками. Реальные люди, подразделения, интеграции, юридические сведения и брендовые материалы не добавлялись.
Backend теперь использует PostgreSQL через GORM в Go-сервисах. Демо-данные остаются только как seed-набор для локального запуска и проверки сценариев.
Локальный запуск
Установить зависимости:
pnpm install
Запустить весь проект без Docker:
npm run dev
Это одновременно запускает Go backend services, Node gateway и React/Vite frontend.
Запустить backend без Docker: все Go-сервисы + Node gateway:
npm run dev:backend
Для этого локально должен быть доступен PostgreSQL на 127.0.0.1:5432 или должен быть задан DATABASE_URL.
Запустить только gateway с fallback demo API:
npm run dev:gateway
npm run dev:gateway оставляет только gateway. Для рабочего backend-контура используйте npm run dev:backend, потому что Go-сервисы теперь требуют реальную БД и не должны подменяться скрытым demo-store.
Запустить frontend:
npm run dev:web
Проверить Go services:
npm run test:go
Docker сейчас необязателен, но PostgreSQL обязателен для Go-сервисов. Для текущей разработки используйте npm run dev:backend и npm run dev:web.
Проверить сборку всего проекта:
npm run check
Запуск всего окружения через Docker, если он понадобится позже:
docker compose up --build
В Docker Compose gateway проксирует /api/* в Go-сервисы. Frontend nginx также проксирует /api/* в gateway, поэтому http://localhost:5173 работает как единое приложение.
Frontend: http://localhost:5173.
Gateway health: http://localhost:3000/health.
Internal services health through gateway: http://localhost:3000/api/services/health.
Демо-вход
Логин: demo_admin
Пароль: demo_password
Auth service принимает демо-учетную запись из seed-данных, проверяет хэш пароля и выдает подписанный token для локального backend-контура.
Backend API
POST /api/auth/register,POST /api/auth/login,GET /api/auth/me,POST /api/auth/logout,POST /api/auth/change-passwordGET /api/content,GET /api/content/:id,POST /api/content,PATCH /api/content/:id,DELETE /api/content/:idGET /api/media,GET /api/events,GET /api/categories,GET /api/tags,GET /api/speakersGET /api/search?q=...,GET /api/subscriptions,POST /api/subscriptionsGET /api/notifications,PATCH /api/notifications/:id/readGET /api/comments/:contentId,POST /api/comments/:contentIdGET /api/analytics/summary,GET /api/admin/dashboard,GET /api/admin/users,GET /api/admin/roles,GET /api/admin/audit
Открытые вопросы из плана
- Финальное название платформы.
- Разрешенные логотипы и брендовые материалы.
- Источник реальных данных для миграции.
- Точная матрица ролей и прав.
- Являются ли мероприятия отдельной сущностью или типом контента.
- Production runtime и инфраструктура для gateway.
- Формулы показателей эффективности контента.