Jemmy Tours

Overview
Jemmy Tours is a bus tour booking and travel management app that takes travelers from browsing tour packages to a confirmed, paid booking in one guided flow: choosing a bus, picking seats, entering passenger details, and paying securely without leaving the app.
The Challenge
Tour booking involves many decisions in sequence (package, date, bus, seats, passengers, payment), and cramming them into few screens overwhelms users, while spreading them too thin makes the flow feel endless. The booking experience had to stay simple without dropping any of those steps.
My Role
I owned the project end-to-end: the complete UI/UX design and the full Flutter development, from the visual design system to the booking flow, seat selection, and payment integration.
Technical Approach
- Designed the full UI/UX first, establishing a clean visual language and a step-by-step booking flow before writing Flutter code.
- Built tour package discovery with clear package cards showing route, schedule, and pricing at a glance.
- Implemented an interactive seat selection screen that reflects live seat availability on the chosen bus.
- Added passenger detail management so one booking can cover multiple travelers without re-entering information.
- Integrated secure online payments with clear confirmation feedback, followed by a booking management view for upcoming and past trips.
Technical Challenges & Solutions
A multi-step booking flow risks losing users' progress, and the sale with it, if state resets between steps or after an interruption.
Solution: Kept a single booking state object alive across the wizard, validated per step, so users can move back and forth or resume without re-entering details.
Seat selection had to stay trustworthy: showing a seat as free when it was already taken would break bookings at payment time.
Solution: Loaded seat availability per bus at selection time and re-validated the chosen seats before payment, surfacing conflicts early instead of after checkout.
Technical Architecture
A Flutter client structured around a linear booking wizard (package, bus, seats, passengers, payment) where each step validates before the next unlocks and booking state persists across the whole flow, so an interruption never forces users to start over. Seat availability is fetched per bus at selection time to keep the seat map accurate.
Outcome
Delivered a complete tour booking application, from UI/UX design to Flutter implementation, with a guided booking flow, working seat selection, passenger management, and secure payments that make booking a tour feel effortless.
Have a similar project in mind?
I'm available for Flutter, FlutterFlow, and Firebase development, freelance or full-time.
Start a Conversation- Tour package discovery
- Bus selection
- Seat selection
- Passenger management
- Step-by-step booking flow
- Secure online payments
- Booking management
UI/UX Designer & Flutter Developer

