ParkTrack (Smart Parking) — клиент и его зависимости

ParkTrack (Smart Parking) — клиент и его зависимости An architecture diagram generated by Archify. Водитель · ищет парковку на карте · Architecture component Водитель ищет парковку на карте presentation · Riverpod providers + screens · Flutter-приложение (Clean Architecture) · flutter presentation Riverpod providers + screens flutter domain · Zone, RouteResult, User · Flutter-приложение (Clean Architecture) · flutter domain Zone, RouteResult, User flutter data · repositories + api + freezed-модели · Flutter-приложение (Clean Architecture) · flutter data repositories + api + freezed-модели flutter core · dio_client, auth_interceptor, token_storage, router · Flutter-приложение (Clean Architecture) · flutter core dio_client, auth_interceptor, token_storage, router flutter MockInterceptor · kUseMocks=false, но встроен в core · Flutter-приложение (Clean Architecture) · flutter MockInterceptor kUseMocks=false, но встроен в core flutter Backend API · auth/zones/occupancy/forecasts/routing · Architecture component Backend API auth/zones/occupancy/forecasts/routing Yandex MapKit · рендер карты и зон · Architecture component Yandex MapKit рендер карты и зон Yandex Навигатор · deeplink yandexnavi://build_route_on_map · Architecture component Yandex Навигатор deeplink yandexnavi://build_route_on_map GPS устройства · geolocator · Architecture component GPS устройства geolocator открывает карту, ищет зону текущие координаты читает Zone/RouteResult searchParking / createRoute Dio + AuthInterceptor если kUseMocks=true — перехват здесь REST, Bearer-токен рисует полигоны зон открывает маршрут во внешнем навигаторе 401 → sessionExpiredNotifier → редирект на /login Flutter-приложение (Clean Architecture) Legend Frontend Backend Cloud Security External

Что есть что

  • • presentation — Riverpod providers (auth/routing/zones/filters) и экраны (карта, поиск, профиль, авторизация)
  • • domain — чистые модели без зависимости от сети: Zone, RouteResult, User
  • • data — repositories + api-клиенты + freezed/json модели, единственный слой, знающий о REST-контракте
  • • core — Dio-клиент, AuthInterceptor (подставляет Bearer, ловит 401), token_storage, go_router с redirect-логикой
  • • MockInterceptor — полноценный фейковый бэкенд внутри клиента для офлайн-разработки, сейчас выключен (kUseMocks=false)
  • • Yandex Навигатор — реальная навигация делегируется внешнему приложению через deeplink, а не строится в самом ParkTrack

Сквозной разлогин

  • • AuthInterceptor ловит 401 → чистит токены → sessionExpiredNotifier.value=true
  • • AuthNotifier (Riverpod) слушает этот ValueNotifier → state=unauthenticated
  • • routerProvider слушает authStateProvider → redirect() уводит на /login из ЛЮБОГО экрана без ручного кода в каждом screen