2.4 KiB
2.4 KiB
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):
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
flutter test # 18 tests: boot, full user journey, every screen renders clean