Initial commit
This commit is contained in:
63
README.md
Normal file
63
README.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user