# WRD Insight Dashboard (JalDrishti) ## Overview React + TypeScript (Vite) dashboard for Maharashtra WRD concept demo. Key modules: - Dashboard (KPIs/analytics) - GIS Map (Leaflet) - Repository (documents) - AI Assistant (chat-style document assistant) ## Architecture - Top-level layout: `src/components/Layout.tsx` with sidebar + header + routed page content via `react-router-dom` `Outlet`. - Routes: `src/App.tsx` mounts `Chatbot` at `/ai-assistant`. ## Components - `src/pages/Chatbot.tsx` - Desktop chat renders within the routed page content area. - Mobile chat uses a floating button and a `fixed inset-0` full-screen overlay. - `src/pages/GisMap.tsx` - Leaflet-based GIS map with district boundaries and dam markers. - Loads cached GeoJSON from `public/data/maharashtra-districts.geojson`. - Live Data button toggles simulated rainfall/flood pulse animation overlay. ## Patterns - **Nested flex scroll fix**: for chat UIs inside dashboards, ensure the scrollable region is in a `flex-1 min-h-0 overflow-y-auto` container, and parents also include `min-h-0` when needed. This prevents the input/footer from being pushed off-screen. - **Route-specific page wrapper**: for `/ai-assistant` and `/map`, `Layout.tsx` uses `overflow-hidden` and removes outer padding so each page manages its internal scrolling and spacing. - **GeoJSON caching for GIS**: District boundaries are cached locally to avoid Nominatim rate-limiting. Run `python scripts/cache_maharashtra_districts_geojson.py` to refresh. Script uses bbox fallback when Nominatim is unavailable.