Files
doormile_milderapp/pubspec.yaml
Thiru-tenext d7348e253f Miler rider app: surface system, visible design language, backend lifecycle
Design system
- MilerSurface ladder (canvas → working → raised → floating) with MilerPanel
  as layer 1; canvas moved to #DEE3EA so white separates at 1.290:1.
- Visible vocabulary applied across Home, Deliveries, Activity, Account and
  the sheets: hero heads (tabular numeral + small caption, clamped at 1.3x),
  canvas wells for anything that opens, small filled tags for shelf labels,
  demoted placeholders. Recorded in DESIGN_SYSTEM.md §6.
- One icon family: 222 Material glyphs migrated to Lucide; none left outside
  lib/xpress.
- Colour semantics corrected: amber only for what is genuinely owed, brand red
  reserved for the live stop, disabled primaries go neutral rather than pale.

Data and lifecycle
- lib/data/lifecycle.dart reads mutations for what they prove; route_order.dart
  makes admin sequence the single ordering authority; service_day.dart, and
  stop_area.dart rewritten against live Coimbatore addresses (digit-token
  stripping, city stoplist, street suffixes, stammer collapse).
- countLabel states the load once, in bags.

Testing
- 1440 tests passing; golden shot harnesses for Home, Deliveries, Activity,
  sheets and verify, with test/failures/ now gitignored (diff debris).
- New pins: home_gutter_test, stop_area_test, plus updated structural bounds.

Note: this commit also carries pre-existing working-tree deletions that were
present before this work (API_SPEC.md, README.md, demo test fixtures).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-22 05:40:35 +05:30

160 lines
4.8 KiB
YAML

name: miler
description: Miler Rider - Smarter Pickups, Powered by AI
publish_to: "none"
version: 1.2.28+144
environment:
sdk: ^3.9.2
dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.8
qr_flutter: ^4.1.0
introduction_screen: ^4.0.0
smooth_page_indicator: ^1.2.1
get: ^4.7.2
http: ^1.2.2
device_info_plus: ^12.2.0
firebase_core: ^4.2.0
firebase_messaging: ^16.0.3
image_picker: ^1.1.2
shared_preferences: ^2.3.3
sms_autofill: ^2.3.0
webview_flutter: ^4.8.0
audioplayers: ^6.5.1
flutter_local_notifications: ^19.5.0
path_provider: ^2.1.4
geolocator: ^14.0.2
connectivity_plus: ^7.0.0
slide_to_submit_button: ^1.0.3
flutter_tts: ^4.0.2
vibration: ^3.1.4
contained_tab_bar_view: ^0.8.0
tab_indicator_styler: ^2.0.0
geocoding: ^4.0.0
fl_chart: ^1.1.1
battery_plus: ^7.0.0
provider: ^6.1.5+1
slider_button_lite: ^1.0.1
url_launcher: ^6.3.2
circular_countdown_timer: ^0.2.4
lottie: ^3.3.2
flutter_foreground_task: ^7.0.3
floating: ^6.0.0
bottom_sheet: ^4.0.4
wakelock_plus: ^1.1.1
minio: ^3.5.8
package_info_plus: ^8.0.0
flutter_native_splash: ^2.4.7
new_version_plus: ^0.1.1
raindrop_animated_splash_screen: ^0.0.2
alp_animated_splashscreen: ^0.0.6
flutter_slidable: ^4.0.3
animated_stack: ^0.3.3
flutter_screenutil: ^5.9.3
google_fonts: ^6.3.3
shimmer: ^3.0.0
skeletonizer: ^2.1.3
flutter_launcher_icons: ^0.14.4
scratcher: ^2.5.0
confetti: ^0.8.0
permission_handler: ^12.0.1
mqtt_client: ^10.3.0
flutter_map: ^8.3.1
latlong2: ^0.10.1
# The delivery line's maps. The parcel line draws its maps with flutter_map
# (OSM tiles + OSRM, keyless — see views/helpers/widgets/miler_map.dart); the
# ported delivery screens under lib/xpress were built against MapLibre and are
# kept verbatim, so both engines ship. Only one line runs per session, so only
# one is ever instantiated.
maplibre_gl: ^0.26.2
animated_toggle_switch: ^0.8.7
another_flushbar: ^2.2.4
lucide_icons_flutter: ^3.1.17
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^6.0.0
# The camera seam. StopVerificationPage's review step is only reachable once
# a photo exists, so the tests swap ImagePickerPlatform.instance for a fake
# that returns a file on disk. Test-only — the app talks to image_picker.
image_picker_platform_interface: ^2.10.0
flutter_launcher_icons:
android: true
ios: true
web:
generate: true
image_path: "assets/images/doormile_icon.png"
image_path: "assets/images/doormile_icon.png"
remove_alpha_ios: true
flutter_native_splash:
color: "#FFFFFF"
image: assets/images/doormile_icon.png
android_12:
image: assets/images/doormile_icon.png
icon_background_color: "#FFFFFF"
flutter:
uses-material-design: true
assets:
- assets/images/
- assets/audio/
- assets/lotties/
fonts:
# The delivery line's typeface. The ported screens under lib/xpress read
# FontConstants.fontFamily = 'Proxima Nova' on every text style; the files
# were already in assets/fonts but the family was never declared, so without
# this every delivery screen falls back to Roboto.
- family: Proxima Nova
fonts:
- asset: assets/fonts/ProximaNova/proximanova_regular.ttf
weight: 400
- asset: assets/fonts/ProximaNova/proximanova_bold.otf
weight: 700
- family: Manrope
fonts:
- asset: assets/fonts/Manrope/Manrope-VF.ttf
- family: PlusJakartaSans
fonts:
- asset: assets/fonts/PlusJakartaSans/PlusJakartaSans-VF.ttf
# ── The app's typeface ──
#
# Declared as `poppins` with a lowercase path on every asset — and the files
# on disk are `assets/fonts/Poppins/Poppins-*.ttf`. Asset bundling is
# case-sensitive on both platforms, so not one of these seven resolved and
# the family had never rendered a single glyph. Anything asking for it fell
# back to Roboto, silently.
#
# All seven static weights are declared because Poppins ships as separate
# files rather than a variable font like Manrope did. The app leans on w800
# and w900 for headings; without those two entries Flutter would synthesise
# them by smearing SemiBold, which is what makes a heading look muddy at
# exactly the size it is meant to be read from.
- family: Poppins
fonts:
- asset: assets/fonts/Poppins/Poppins-Light.ttf
weight: 300
- asset: assets/fonts/Poppins/Poppins-Regular.ttf
weight: 400
- asset: assets/fonts/Poppins/Poppins-Medium.ttf
weight: 500
- asset: assets/fonts/Poppins/Poppins-SemiBold.ttf
weight: 600
- asset: assets/fonts/Poppins/Poppins-Bold.ttf
weight: 700
- asset: assets/fonts/Poppins/Poppins-ExtraBold.ttf
weight: 800
- asset: assets/fonts/Poppins/Poppins-Black.ttf
weight: 900