Files
67/apps/web/README.md
2026-06-22 22:39:08 +03:00

105 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ДГТУ МЕДИА
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;
- график администратора демонстрационный.