Files
67/apps/web/README.md
2026-06-22 20:13:14 +03:00

99 lines
3.6 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+ и Corepack.
```bash
corepack prepare pnpm@11.0.0 --activate
corepack pnpm install
corepack pnpm dev
```
Откройте `http://localhost:5173`.
## Проверки
```bash
corepack pnpm lint
corepack pnpm test
corepack pnpm build
```
## Структура
```text
src/
app/ маршрутизация, layouts и состояние сессии
pages/ публичные страницы и ролевые кабинеты
shared/
api/ Axios-клиент и общая обработка ошибок
data/ реалистичные mock-данные
lib/ небольшие общие helpers
ui/ переиспользуемые компоненты
```
В `DESIGN.md` описаны дизайн-токены, визуальный характер, правила компонентов и
анимаций.
## Реализованные страницы
- главная редакционная страница;
- каталог с поиском и фильтрами через URL;
- страница материала;
- афиша событий;
- медиаканалы: радио, журналы и социальные сети;
- страница о медиапортале;
- вход и тестовые роли;
- профиль пользователя;
- кабинет редактора и форма материала;
- очередь модератора;
- статистика и пользователи администратора;
- страницы 403 и 404 с SVG-анимацией.
## Тестовые роли
Пароль может быть любым от 6 символов.
| Роль | Учётная запись |
| --- | --- |
| Пользователь | `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`. Пока интерфейс использует локальные mock-данные.
## Безопасность зависимостей
Проект закреплён на pnpm 11. В `pnpm-workspace.yaml` включены:
- `minimumReleaseAge: 1440`;
- `blockExoticSubdeps: true`;
- `trustPolicy: no-downgrade`;
- явный `allowBuilds` только для `esbuild` и `@tailwindcss/oxide`.
Lockfile необходимо хранить в репозитории.
## Ограничения MVP
- данные не сохраняются после обновления страницы;
- загрузка файлов и комментарии представлены интерфейсом без backend;
- внешние изображения загружаются с Unsplash;
- график администратора демонстрационный.