3.2 KiB
3.2 KiB
Phase 1 Context - Foundation & Dashboard
Phase: 1
Created: 2026-03-13
Decisions Made
Dashboard Layout
- Layout: Keep current 3-panel layout (Sidebar | Header + Content)
- Header content: All in header - Logo, Time, Date, Station ID, Comm Status, Version, Login Status, Solar Voltage, Battery Voltage
- Logo: Use TCK logo from
/logo/directory - Rainfall cards: Grid layout with color-coded cards (Today/Hourly/MAR/Yearly)
Real-time Data Strategy
- Approach: Real API with mock fallback
- Polling interval: User adjustable (stored in settings)
- Default polling: 5 seconds
- Implementation: Create API client with mock data fallback for demo/offline
Dual-Mode Display
- Detection: By port number
- Port 8080 → Kiosk mode (1024x600)
- Port 9090 → Full HD remote mode
- Implementation:
window.location.portdetection in app root - Remote mode: Expanded dashboard with larger fonts and more information visible
State Management
- Library: Zustand (~1.1KB, research-recommended)
- Sensor data: Global state in Zustand store
- Settings persistence: localStorage + sync to backend when online
- Architecture: Offline-first - settings persist locally, sync in background
Code Context
Existing Assets
Routes (sample_interface/src/app/routes.ts):
- Dashboard at
/(RainfallView) - Settings under
/utility/* - Calibration at
/calibration - Flash Memory at
/flash-memory
Components:
DashboardLayout.tsx- Main layout wrapperHeader.tsx- Header component (needs modernization)Sidebar.tsx- Navigation sidebar- UI components in
components/ui/- shadcn/ui components available
Guidelines: sample_interface/guidelines/Guidelines.md - Full UI specification
Key Files to Modify
src/app/App.tsx- Add mode detection (port-based)src/app/components/Header.tsx- Modernize for Phase 1src/app/components/views/RainfallView.tsx- Main dashboard view- New:
src/app/stores/sensorStore.ts- Zustand store for sensor data - New:
src/app/api/client.ts- API client with mock fallback
Dependencies to Add
zustand- State management (research recommended)
Prior Decisions (from PROJECT.md)
- React/TypeScript stack
- shadcn/ui components
- Tailwind CSS
- Two-port architecture (8080/9090)
- <200KB bundle target for Pi Zero 2 W
Success Criteria
- User sees real-time rainfall data (Today, Hourly, MAR Acc, Yearly Acc) updating automatically
- User sees solar and battery voltage with visual status indicators
- User sees station ID, version info, current time/date, and communication status
- User sees login status indicator on dashboard
- Dashboard loads in <2 seconds on Pi Zero 2 W
- All touch targets are minimum 44px (preferably 56px)
- Dashboard displays correctly in both 1024x600 (kiosk) and Full HD (remote) modes
- Navigation menu provides access to Settings, Calibration, and Flash Memory sections
Out of Scope
- CSV processing (Phase 3)
- Network stack implementation (Phase 3)
- Full settings implementation (Phase 2)
Context for Phase 1 planning - decisions that guide research and planning