- Replace false zero metrics (0 miles / 0 rides / 100% Cloud Synced) on loading, unauthenticated, permission-denied, or network errors with truthful states
- Update AppCloudData to query motorcycles and rides via Promise.allSettled and report granular CloudDataStatus
- Update AccountPage KPI cards to display Loading…, —, or Unavailable with explicit contextual status and error recovery
- Fix founder demo chat to permanently preserve Example thread and example badges during preview=demo simulation instead of flipping to Live Connected
- Add 8 unit/component tests in account-metrics-truthfulness.test.tsx and 6 tests in founder-routes-chat.test.tsx
Ride History & Replay: View past rides, replay telemetry synchronized with a Google Map.
Audio Alerts: Text-to-speech alerts for milestones and ride states to keep your eyes on the road.
Data Export: Export your ride telemetry to .csv or .gpx for external analysis.
Setup & Building
Ensure you have the Flutter SDK installed.
Clone this repository.
Run flutter pub get to fetch dependencies.
Add your Google Maps API key in android/app/src/main/AndroidManifest.xml (replace YOUR_API_KEY_HERE).
Run flutter run or flutter build apk.
Architecture
Framework: Flutter (Material 3).
State Management: Riverpod for reactive UI state.
Database: Drift (SQLite) for robust, local storage.
Sensor Fusion: Complementary filter combining accelerometer and gyroscope for precise lean angles.
Documentation
The active documentation map and dated evidence archive are indexed in docs/README.md.
Disclaimer
This application relies on the accuracy of your smartphone's internal sensors. It should be securely mounted to the motorcycle using a rigid mount. Do not interact with the screen while riding. Ride safely!