A Flutter application showcasing a single workflow for booking tourism packages, customizing itineraries, and reserving for single or group travelers.
This app demonstrates clean architecture using the BLoC pattern, follows SOLID principles, and includes error handling, mock data, unit tests, and an aesthetic user interface β all without login or API integration.
Click the image to watch the app demo on YouTube Shorts π₯
A visual flow of the Tourism Booking App π
| π Home (Select Trip) | πΊοΈ Customize Itinerary | βοΈ Edit Activities | ||
|---|---|---|---|---|
![]() |
β‘οΈ | ![]() |
β‘οΈ | ![]() |
| π§Ύ Review & Reserve | β Booking Confirmed | |||
|---|---|---|---|---|
![]() |
β‘οΈ | ![]() |
β‘οΈ | ![]() |
- π§³ Browse Tourism Packages β Select from preloaded mock travel packages.
- πΊοΈ Customize Itinerary β Add or remove destinations, activities, and travel days.
- π₯ Reserve for Single/Group β Choose the number of travelers and confirm the booking.
- βοΈ Error Handling β Graceful fallback messages and retry options.
- π¨ Modern UI Design β Responsive, clean, and visually appealing Flutter widgets.
- π§© BLoC State Management β Clean separation between UI and logic layers.
- π§ͺ Unit Tests β Covers booking logic and BLoC functionality.
- π¦ Offline Mock Data β No API integration required.
This project follows the BLoC (Business Logic Component) pattern for clean separation between:
-
UI (View Layer)
-
Business Logic (Bloc Layer)
-
Data (Repository/Service Layer)
β SOLID Principles applied for maintainable and testable code.
β Error handling with graceful UI fallbacks.
flutter_bloc β State management
equatable β Value equality for Bloc states
mockito β Unit testing mocks
flutter_test β For widget and bloc tests
tourflow/
ββ android/ ios/ web/ ...
ββ lib/
β ββ main.dart
β ββ app.dart
β ββ src/
β β ββ models/
β β β ββ package_model.dart
β β β ββ itinerary_model.dart
β β β ββ reservation_model.dart
β β ββ repository/
β β β ββ tour_repository.dart
β β ββ bloc/
β β β ββ tour_event.dart
β β β ββ tour_state.dart
β β β ββ tour_bloc.dart
β β ββ ui/
β β β ββ screens/
β β β β ββ package_list_screen.dart
β β β β ββ customize_itinerary_screen.dart
β β β β ββ review_reserve_screen.dart
β β β ββ widgets/
β β β ββ package_card.dart
β β β ββ itinerary_editor.dart
β β ββ utils/
β β ββ validators.dart
ββ test/
β ββ bloc/tour_bloc_test.dart
β ββ repository/tour_repository_test.dart
ββ pubspec.yaml
ββ README.md
git clone https://github.com/<your-username>/tourflow.git
cd tourism_booking_appflutter pub getflutter runflutter test





