Project 02 · Kotlin

RampDispatch

The dispatch tools we used on the ramp were desktop-only. Open one on a phone and you got a few columns squeezed into something unreadable, which is a problem when the job is done standing next to an aircraft. This is the version built for that situation.

Replaces
Desktop dispatch board, whiteboard, and radio
Built for
Fuellers and team leaders working the ramp
Status
Portfolio project, mock data only
Source
github.com/baranDincsoy/RampDispatch
Login with role selection. Dispatch board, active orders. Status and concourse filters. Order detail. Status history timeline. Fuelling wizard, tail verification. Equipment entry. Per-tank arrival readings. Pumping step. Per-tank final readings. Totaliser and close-out. Stats dashboard. Stats dashboard.

The shape of it

The board shows active orders sorted by departure, with three independent controls that combine freely: status filter, concourse filter, and sort by departure time, gate, or fueller. A team leader sees every order and can assign, reassign, or unassign fuellers. A fueller sees only their own.

What it does

Offline-first architecture

The interface never reads from the network. It only ever observes the local Room database. A remote JSON source feeds Room, and the interface reacts to Room.

Retrofit → Repository → Room (source of truth) → StateFlow → Compose UI

Lose signal on the ramp and the board still works from cache. Changes also propagate on their own: complete an order and it leaves the board without any code that refreshes a list.

Layers are kept honest by dependency direction. Domain models are plain Kotlin with no Android, Room, or Retrofit imports. The data layer holds the remote API, the Room entities, the repository that maps between them, and in-memory session state. Each screen has one ViewModel exposing a single immutable state object.

Decisions worth defending

Scope and limits

These are deliberate, and I would rather name them than let someone assume otherwise.

Built with mock data only. No real company data, branding, or proprietary systems are used anywhere in this project.

What I took from it

Knowing the workflow decided the architecture. The eight steps are not a design invention — they are the order the job actually happens in, including the fuel cap check that exists because of what happens when it is skipped.