Auth- регистрация
- логин / logout
- проверка текущей сессии через API
Dashboard- обзор системы
- health / version
- быстрые переходы по основным ресурсам
Users- список пользователей
- просмотр карточки
- редактирование
- управление ролью и активностью
Partners- список партнёров
- создание / редактирование / удаление
- управление участниками партнёра
Cameras- список и фильтры
- создание / редактирование / удаление
- snapshot preview
- переход в разметку и привязку на карте
Zones- список и фильтры
- редактирование атрибутов
- удаление
- переход в image geometry и map geometry
Sources- реестр источников данных
- список, фильтры, detail panel
- переход к профильной сущности
Labeler- редактирование зон на изображении
- map entrypoint для геометрии
- возврат обратно в админский контекст
Приложение использует hash-routing:
#/— dashboard#/login#/register#/profile#/users#/partners#/cameras#/zones#/sources#/labeler
Раздел Разметка не открывается как отдельный главный модуль из sidebar.
В нормальном сценарии в него попадают из конкретной камеры или зоны.
React + TypeScript + Vitezustandreact-konvaleaflet / react-leaflet
Node.js 18+- запущенный backend из
api-server - доступный API по базовому адресу вида:
http://localhost:8000/api/v1
npm install
npm run devПо умолчанию dev-сервер поднимается на:
http://localhost:5173
Фронтенд ожидает backend ParkTrack API с ресурсами:
/auth/users/partners/cameras/zones/sources/admin
Локально в UI можно указать API Base. Для разработки это удобно, чтобы быстро переключаться между локальным, staging и production API.
- Запустить backend из
api-server - Запустить frontend
labeler - Указать
API Base - Зарегистрироваться или войти
- Открыть:
#/cameras#/zones#/sources#/users#/partners
- Перейти в labeler из камеры или зоны