# Quickstart: Bottom Navigation with Chat Entry

1) **Navigation shell & tabs**
- Ensure GoRouter shell route hosts bottom nav; add Home, Store, Chat, Settings destinations and active state styling per STYLE_GUIDE.
- Keep bottom nav hidden for onboarding/full-screen flows; show post-auth only.

2) **Tab state preservation**
- Maintain per-tab route/scroll state (Riverpod-owned) so switching tabs does not reset screens.
- Add widget tests for tab switch preserving Home/Settings state.

3) **Store tab**
- Use existing store providers with Dio/api_client entry point to fetch stores.
- Display current store on tab label; show empty/denied state if none assigned.
- On switch attempt, warn if unsaved changes exist; confirm before calling `/stores/select`.
- Handle offline/error with retry messaging; ensure 403 clears cached keys and routes to auth flow.

4) **Chat tab placeholder**
- Render chat container accessible from bottom nav; show availability/offline/coming-soon message and back path to other tabs.
- Avoid blocking navigation if chat unavailable; log minimal telemetry if available.
- Debug logging added for nav tab switches and store changes to aid telemetry until a formal analytics hook exists.

5) **Testing**
- Add widget tests: bottom nav visibility, active tab styling, store tab states (loading/empty/error/offline), chat placeholder messaging.
- Add provider tests for store selection state and navigation guard behavior.
- Run `flutter test` before merge.
