Skip to content
FadzaaPublic

About

Pedagang Kaki Lima Tracker Customer App - 3rd Winner in GENETIC 2024 for the Innovation System Category

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Latest commit

 

History

92 Commits

Folders and files

Repository files navigation

LimaTrack — Customer App

Find street vendors near you, see what they sell, and see which streets they're allowed to trade on.

3rd place · GENETIC 2024

Download the APK · Live API · Vendor app · API source

Location flow

device GPS → PUT /api/users/location → GET /api/pedagang/show-all
   → server-side haversine distance + prohibited-zone containment
   → client renders markers and overlay

What it does

  • Nearby vendors on a map, with server-computed distance
  • Vendor profiles, menus and prices
  • Prohibited-zone overlay
  • Cart, orders and vendor subscriptions
  • OTP registration, ratings and reviews

Three months of field research relocated the problem from discovery to regulation: vendors are fined for trading in zones that were never communicated to them. That is why zone data is a first-class API resource rather than a map decoration.

What I implemented

Team lead. Code ownership by area:

Primary author — cart, payment, subscriptions and chat screens; the whole auth flow (onboarding, login, register, OTP); vendor detail; profile; the map/home screen; the vendor API client.

Shared — order and explore screens.

Non-code: the field research and the proposal the entry was judged on.

Limitation: never reached real vendors. No users, no adoption, no production deployment.

Architecture

Two Flutter apps against one Laravel API — separate apps rather than role-switching, because the audiences share almost no screens and one assumes movement while the other assumes a fixed stall.

Feature structure. Every screen is a GetX triad: *_binding.dart, *_controller.dart, *_view.dart, with model/ and widget/ beside it. Controllers are registered with Get.lazyPut in the binding, and the binding is attached to the route in app/router/app_pages.dart, so a controller constructs on push and disposes on pop.

Networking. One Dio instance (api/dio_instance.dart) with BaseOptions and an InterceptorsWrapper handling request and error paths centrally. The bearer token is injected per call behind an isAuthorize flag rather than globally, so public endpoints carry no credentials.

API layer is split by domain — auth, cart, pedagang — each with model/ and service/. Responses are typed via json_serializable.

Geo is resolved server-side in PedagangController::distance() — distance and zone containment are computed by the API, and the Maps key is used only for rendering.

Running it locally

flutter pub get
flutter run
flutter build apk --release --split-per-abi

Requires a Google Maps API key in android/app/src/main/AndroidManifest.xml.

Known limitations

  • No automated tests.
  • Location permission denial is handled by a prompt, not a degraded browse mode.

About

Pedagang Kaki Lima Tracker Customer App - 3rd Winner in GENETIC 2024 for the Innovation System Category

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages