first commit
This commit is contained in:
105
README.md
Normal file
105
README.md
Normal file
@@ -0,0 +1,105 @@
|
||||
# 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 сейчас использует in-memory demo store внутри Go-сервисов. PostgreSQL schema и Docker PostgreSQL подготовлены, но постоянное хранение через БД остается следующим этапом.
|
||||
|
||||
## Локальный запуск
|
||||
|
||||
Установить зависимости:
|
||||
|
||||
```bash
|
||||
npm install
|
||||
```
|
||||
|
||||
Запустить весь проект без Docker:
|
||||
|
||||
```bash
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Это одновременно запускает Go backend services, Node gateway и React/Vite frontend.
|
||||
|
||||
Запустить backend без Docker: все Go-сервисы + Node gateway:
|
||||
|
||||
```bash
|
||||
npm run dev:backend
|
||||
```
|
||||
|
||||
Запустить только gateway с fallback demo API:
|
||||
|
||||
```bash
|
||||
npm run dev:gateway
|
||||
```
|
||||
|
||||
В обычном локальном режиме gateway работает с fallback demo API, если Go-сервисы не запущены и `*_SERVICE_URL` не заданы.
|
||||
|
||||
Запустить frontend:
|
||||
|
||||
```bash
|
||||
npm run dev:web
|
||||
```
|
||||
|
||||
Проверить Go services:
|
||||
|
||||
```bash
|
||||
npm run test:go
|
||||
```
|
||||
|
||||
Docker сейчас необязателен. Для текущей разработки используйте `npm run dev:backend` и `npm run dev:web`.
|
||||
|
||||
Запуск всего окружения через Docker, если он понадобится позже:
|
||||
|
||||
```bash
|
||||
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 принимает демо-учетную запись и возвращает demo token. Это не production-аутентификация; для промышленного контура нужен подписанный JWT или другой проверяемый token format.
|
||||
|
||||
## Backend API
|
||||
|
||||
- `POST /api/auth/register`, `POST /api/auth/login`, `GET /api/auth/me`, `POST /api/auth/logout`, `POST /api/auth/change-password`
|
||||
- `GET /api/content`, `GET /api/content/:id`, `POST /api/content`, `PATCH /api/content/:id`, `DELETE /api/content/:id`
|
||||
- `GET /api/media`, `GET /api/events`, `GET /api/categories`, `GET /api/tags`, `GET /api/speakers`
|
||||
- `GET /api/search?q=...`, `GET /api/subscriptions`, `POST /api/subscriptions`
|
||||
- `GET /api/notifications`, `PATCH /api/notifications/:id/read`
|
||||
- `GET /api/comments/:contentId`, `POST /api/comments/:contentId`
|
||||
- `GET /api/analytics/summary`, `GET /api/admin/dashboard`, `GET /api/admin/users`, `GET /api/admin/roles`, `GET /api/admin/audit`
|
||||
|
||||
## Открытые вопросы из плана
|
||||
|
||||
- Финальное название платформы.
|
||||
- Разрешенные логотипы и брендовые материалы.
|
||||
- Источник реальных данных для миграции.
|
||||
- Точная матрица ролей и прав.
|
||||
- Являются ли мероприятия отдельной сущностью или типом контента.
|
||||
- Production runtime и инфраструктура для gateway.
|
||||
- Формулы показателей эффективности контента.
|
||||
Reference in New Issue
Block a user