Journio - Travel Booking & Social Flutter UI Kit
Journio is a Flutter UI kit for a travel app that books stays, flights and things to do, keeps them on one trip timeline, and lets travelers share the trip as Moments. It runs on iOS and Android and has 102 screens in seven groups: start and sign-in, Explore, stays, flights, things to do, Moments, and trips and account. Everything runs on built-in sample data, so every screen works before you connect a backend.
Try it in your browser: https://demo.oncombalado.net/journio/
Stays go from search to voucher: destination, dates and guests with child ages, results as a list or on a map, filters with a live count, the stay page with photos, reviews and policies, rooms and rates side by side, guest details, extras, promo codes, a full price breakdown, payment, and a voucher with a QR code. Date changes are priced before anything changes, and cancellation works out the refund from the stay's policy.
Flights cover return and one-way trips: an airport picker with nearby airports, results with a date strip and connections, filters, fares compared item by item, passengers, a seat map with extra-legroom rows and a list view for screen readers, bags and extras, checkout, and a boarding pass for each flight. Times are shown in each airport's local time, with a note when the time zones differ. Bookings can be managed or cancelled under the fare rules.
Things to do suggests activities that fit the free time in the trip. Time slots show the seats left, participants are priced by age, add-ons are optional, the voucher shows the meeting point, and a sold-out time offers a waitlist.
The Explore home follows the trip: destination postcards while planning, a countdown once booked, today's plan while traveling, and a review prompt after. The trip timeline shows every booking in local time, and trips can be copied and shared. A demo simulator in the app moves the sample trip between these phases.
Moments is the social part: a postcard feed with Following and For you tabs, stories, comments, saved lists, a profile with a passport of stamps, copying someone's trip, and following a friend's trip live by their progress on the plan, never their location. Reviews can only be written for finished bookings and carry a "Stayed here" or "Went here" mark. Report, block, mute, hidden words and removed-content screens cover what the App Store and Google Play ask of apps with user content.
Prices are kept in minor units and shown all-in with taxes by default, in four display currencies. Screens read data through five repository interfaces with Riverpod providers; replace the mock implementations with classes that call your API and no screen needs to change. Payment, photos, calendar, sharing and notifications are interfaces with stand-ins. English and Arabic are included (983 strings each) with a full right-to-left layout, along with three brand presets and light and dark themes. Data screens have loading, empty, error and offline states.
Not included: a backend or booking API, real travel inventory, payment processing (checkout runs through a stand-in payment service), a maps SDK (the maps are drawn placeholders), photo storage, or push notifications. Travelers, Moments and reviews are sample data.
What's included
- Flutter project for iOS and Android: 102 screens, with a screen index, a design system gallery and a demo simulator inside the app
- Booking flows for stays, flights and things to do, with vouchers, boarding passes, changes and cancellations
- A trip timeline in local time, and an Explore home for each phase of the trip
- Moments: feed, stories, comments, reviews from finished bookings, saved lists, profiles with a passport, live trip sharing
- Moderation screens: report, block, mute, hidden words, removed content and community guidelines
- Booking rules in plain Dart, unit-tested: totals, refunds, fares and seat fees, time zones, review eligibility, story expiry, live-share windows
- Sample stays, flights, activities, travelers and Moments in three JSON files, documented field by field in MOCK_DATA.md
- Five repository interfaces, and stand-in payment, photo, calendar, share and notification services
- English and Arabic (983 strings each) with right-to-left layout
- Three brand presets, light and dark themes, four display currencies and an all-in price setting
- 484 unit and widget tests, including every screen in light, dark and at 130% text size
- Android release signing set up (add your key.properties)
- HTML documentation: setup, connecting an API, payments, maps, moderation, rebranding, and Android and iOS release steps
Requirements: Flutter 3.44 or later (Dart 3.12). Xcode 16 or later for iOS (deployment target iOS 13). Android Studio with an Android SDK for Android. Packages: flutter_riverpod, go_router, flutter_svg, qr_flutter, intl. No API keys or accounts are needed to run the app.
License: one developer may use the kit in unlimited end products (apps for themselves or for clients). The kit's source code and design may not be resold, shared or published as a template or kit.