Skip to content
arsyad®

work/tomas · 03/04

Internal mobility & driver app — Toyota Manufacturing

Role
Mobile engineer
Client
Toyota Manufacturing (internal)
Stack
Flutter, REST, Maps
Platform
Mobile
Year
2023
Link
Private
Tomas home screen — travel options
[01]overview.md

Overview

01 — problem

Employee transport across shuttle, rental and ride-share was booked by chat and spreadsheets.

02 — what I did

Built passenger and driver Android apps in Flutter — booking, live trip status, driver activity and vouchers.

03 — outcome

One internal app for every way employees move between sites, used by passengers and drivers alike.

[02]screens/
Tomas driver splash screen
01 — Tomas driver splash screen
Tomas onboarding
02 — Tomas onboarding
Tomas passenger home
03 — Tomas passenger home
Trip on the way
04 — Trip on the way
Driver home
05 — Driver home
Driver trip detail
06 — Driver trip detail
Driver activity
07 — Driver activity
[03]under_the_hood.ts

Under the hood

Passenger appDriver appTrip APIDispatchMapsNotifications
fig — system overview
lib/trip/trip_status.dartdart
sealed class TripStatus {}final class Waiting  extends TripStatus {}final class OnTheWay extends TripStatus { OnTheWay(this.eta); final Duration eta; }final class Arrived  extends TripStatus {}Widget build(BuildContext c) => switch (status) {  Waiting()            => const SearchingDriver(),  OnTheWay(:final eta) => EtaBanner(eta),  Arrived()            => const BoardNow(),};
Trip states are a sealed type — the compiler refuses a screen that forgets a state.

Stack

  • Flutter
  • REST
  • Maps
[04]results.log

Whatshipped.

  • Two apps (passenger + driver) from one shared Flutter core.
  • Enterprise rollout inside Toyota Manufacturing.
next project → cd ../hasilrayahasilraya.comCompany web platform