# Doormile — EV-First Parcel Delivery (Flutter) A complete, fully-navigable Flutter app built from the Doormile design brief. EV-first delivery, MileTruth AI routing narrative, corporate-red design system. ## What's inside (all screens implemented) | Flow | Screens | |------|---------| | Onboarding | Splash → 3-slide Onboarding | | Auth | Login (phone) → OTP verify | | Home | Home hub (hero, quick actions, active shipment, eco banner) | | Booking | Pickup/Drop → Parcel details & slot → Service & price → Review → Payment sheet → Success | | Tracking | My Parcels (filters) → Live Tracking (map + rider) → Shipment Journey timeline | | Wallet | Balance card, add money, saved methods, transactions | | Profile | Stats, settings list, logout | | Support | FAQ accordion + chat assistant | Everything is wired with real navigation and in-memory state (Provider): placing an order adds it to **My Parcels**, paying by wallet deducts the balance, "Add money" updates the wallet, logout returns to login, etc. ## Design system - **Colours / type / spacing** mirror `DESIGN.md` (primary `#960019`, Public Sans). - Public Sans is **bundled** (`assets/fonts/PublicSans.ttf`) — no network fonts. - Reusable widgets in `lib/widgets/` (cards, buttons, chips, progress bars). ## How to run Open the Terminal app, then (the `flutter` tool lives in Homebrew): ```bash export PATH="/opt/homebrew/bin:$PATH" cd /Users/apple/Desktop/Doormile-app/doormile # Pick ONE target: flutter run -d chrome # opens in Chrome (fastest, no setup) flutter run -d macos # native macOS window flutter run # phone/emulator if one is connected ``` Demo tips: at login enter **any 10-digit number**, and at OTP enter **any 6 digits** — there's no backend, it's a front-end prototype. ## Project layout ``` lib/ main.dart # app entry, theme, named routes theme/ # colours + text styles (design tokens) models/ # Order, AddressEntry, WalletTransaction, ... state/app_state.dart # Provider store + mock data + booking draft widgets/ # shared UI (AppCard, PrimaryButton, StatusChip, logo) screens/ # one file per screen, grouped by flow test/ # smoke, full-journey, and per-screen render tests ``` ## Tests ```bash flutter test # 18 tests: boot, full user journey, every screen renders clean ```