105 lines
3.8 KiB
Markdown
105 lines
3.8 KiB
Markdown
# ДГТУ МЕДИА
|
||
|
||
Frontend MVP информационной системы управления медиаконтентом университета. Проект
|
||
выполнен на JavaScript/JSX, React, Vite и Tailwind CSS.
|
||
|
||
## Запуск
|
||
|
||
Требуются Node.js 22+ и npm.
|
||
|
||
Из корня монорепозитория:
|
||
|
||
```bash
|
||
npm install
|
||
npm run dev
|
||
```
|
||
|
||
Для запуска только frontend:
|
||
|
||
```bash
|
||
npm run dev:web
|
||
```
|
||
|
||
Откройте `http://localhost:5173`. В dev-режиме Vite проксирует `/api` на `http://localhost:3000`.
|
||
|
||
## Проверки
|
||
|
||
```bash
|
||
npm --workspace @fable/web run lint
|
||
npm --workspace @fable/web run test
|
||
npm --workspace @fable/web run build
|
||
```
|
||
|
||
## Структура
|
||
|
||
```text
|
||
src/
|
||
app/ маршрутизация, layouts и состояние сессии
|
||
pages/ публичные страницы и ролевые кабинеты
|
||
shared/
|
||
api/ Axios-клиент и общая обработка ошибок
|
||
data/ реалистичные mock-данные
|
||
lib/ небольшие общие helpers
|
||
ui/ переиспользуемые компоненты
|
||
```
|
||
|
||
В `DESIGN.md` описаны дизайн-токены, визуальный характер, правила компонентов и
|
||
анимаций.
|
||
|
||
## Реализованные страницы
|
||
|
||
- главная редакционная страница;
|
||
- каталог с поиском и фильтрами через URL;
|
||
- страница материала;
|
||
- афиша событий;
|
||
- медиаканалы: радио, журналы и социальные сети;
|
||
- страница о медиапортале;
|
||
- вход и тестовые роли;
|
||
- профиль пользователя;
|
||
- кабинет редактора и форма материала;
|
||
- очередь модератора;
|
||
- статистика и пользователи администратора;
|
||
- страницы 403 и 404 с SVG-анимацией.
|
||
|
||
## Тестовые роли
|
||
|
||
Основной demo-вход: `demo_admin` / `demo_password`.
|
||
|
||
| Роль | Учётная запись |
|
||
| --- | --- |
|
||
| Пользователь | `user@dstu.ru` |
|
||
| Редактор | `editor@dstu.ru` |
|
||
| Модератор | `moderator@dstu.ru` |
|
||
| Администратор | `admin@dstu.ru` |
|
||
|
||
Роль также можно переключить в шапке кабинета для демонстрации интерфейсов.
|
||
|
||
## Ожидаемые backend endpoints
|
||
|
||
- `POST /auth/login`, `POST /auth/refresh`, `POST /auth/logout`;
|
||
- `GET/PATCH /users/me`;
|
||
- CRUD `/materials`, `/categories`, `/tags`, `/events`;
|
||
- `/materials/:id/comments`, `/subscriptions`, `/notifications`;
|
||
- `/moderation/queue`, `/moderation/:id/approve`, `/moderation/:id/return`;
|
||
- `/admin/users`, `/admin/stats`, `/admin/audit-log`;
|
||
- `POST /uploads`.
|
||
|
||
Адрес API можно переопределить через `VITE_API_URL`. По умолчанию интерфейс работает с `/api` и ожидает gateway на `localhost:3000`.
|
||
|
||
## Безопасность зависимостей
|
||
|
||
Проект закреплён на pnpm 11. В `pnpm-workspace.yaml` включены:
|
||
|
||
- `minimumReleaseAge: 1440`;
|
||
- `blockExoticSubdeps: true`;
|
||
- `trustPolicy: no-downgrade`;
|
||
- явный `allowBuilds` только для `esbuild` и `@tailwindcss/oxide`.
|
||
|
||
Lockfile необходимо хранить в репозитории.
|
||
|
||
## Ограничения MVP
|
||
|
||
- данные backend по-прежнему демонстрационные и в основном живут в in-memory store;
|
||
- внешние изображения загружаются с Unsplash;
|
||
- график администратора демонстрационный.
|