Technical challenges
The booking flow is a real multi-step process (date/time → table/seat → menu → confirmation) that has to stay consistent as the user moves back and forth between steps, inside an existing legacy app (RxJava2, manual dependency injection, no DI framework) rather than a fresh codebase.
How I approached it
Each step's selection (date/time, table, menu items) was kept in shared view-model state so the flow stayed consistent if the user went back to change an earlier choice, following the same manual-DI/RxJava2 patterns already used elsewhere in the app rather than introducing a new pattern for just this flow.


