Skip to content
All work

TravelMobile Engineer, travel platform

Yassir Travel

A modular travel platform (flights, hotels, eSIM and insurance), shipped as an embeddable module inside a native super app.

6
Feature packages
3
Shared packages
7
Engineers on the platform

My contribution

In a team of 7, I built the Melos monorepo behind it: six feature packages over three shared ones, each vertical independently runnable and shippable. I designed the native-to-Flutter bridge that negotiates config and session with the host app, built the booking flow end to end from flight search to QR boarding pass, and extracted the domain and API layers into pure Dart so a Jaspr web client reuses the same entities, use cases and HTTP layer instead of reimplementing them.

The hard part

It does not ship as an APK. CI builds an Android AAR and an iOS xcframework and publishes both to GitHub Packages for the native super app to consume, so the module has to hand off tokens, force logout when refresh fails, exit cleanly back to native, and reset its own state on resume.

What it is

A multi-vertical travel product covering flight booking, hotel stays, eSIM and travel insurance, architected so each vertical is an independent package that can run standalone, compose into a unified travel app, or embed into a larger native super app.

Architecture

  • Melos monorepo: 6 feature packages (flight, hotel, eSIM, insurance, auth) over 3 shared packages (domain, api, core)
  • Clean Architecture throughout, with the presentation, domain and data split repeated per feature
  • BLoC/Cubit for state, GetIt for injection with documented registration conventions, fpdart Either for typed errors, Freezed models, Dio networking
  • domain and api are pure Dart with no Flutter dependency, so a Jaspr web client reuses them directly rather than reimplementing per platform

Distribution

  • GitHub Actions builds an Android AAR and an iOS xcframework and publishes both to GitHub Packages
  • A SuperAppBridge layer negotiates configuration and user session with the host app over MethodChannels, covering token refresh, auto-logout on refresh failure, clean exit to native, and BLoC and navigation reset on resume

Booking flows

  • Flight: search, fare selection, passenger details, checkout, orders, QR boarding pass
  • Hotel: results, map view, details, payment

Also

  • EN, FR and AR with typed translation keys and full RTL support
  • 3 build flavours (sandbox, staging, production) and 40+ Melos scripts for per-feature, auth-optional builds
  • Figma-driven internal design system and feature-flagged builds
  • Yassir Travel, screen 1 of 34
  • Yassir Travel, screen 2 of 34
  • Yassir Travel, screen 3 of 34
  • Yassir Travel, screen 4 of 34
  • Yassir Travel, screen 5 of 34
  • Yassir Travel, screen 6 of 34
  • Yassir Travel, screen 7 of 34
  • Yassir Travel, screen 8 of 34
  • Yassir Travel, screen 9 of 34
  • Yassir Travel, screen 10 of 34
  • Yassir Travel, screen 11 of 34
  • Yassir Travel, screen 12 of 34
  • Yassir Travel, screen 13 of 34
  • Yassir Travel, screen 14 of 34
  • Yassir Travel, screen 15 of 34
  • Yassir Travel, screen 16 of 34
  • Yassir Travel, screen 17 of 34
  • Yassir Travel, screen 18 of 34
  • Yassir Travel, screen 19 of 34
  • Yassir Travel, screen 20 of 34
  • Yassir Travel, screen 21 of 34
  • Yassir Travel, screen 22 of 34
  • Yassir Travel, screen 23 of 34
  • Yassir Travel, screen 24 of 34
  • Yassir Travel, screen 25 of 34
  • Yassir Travel, screen 26 of 34
  • Yassir Travel, screen 27 of 34
  • Yassir Travel, screen 28 of 34
  • Yassir Travel, screen 29 of 34
  • Yassir Travel, screen 30 of 34
  • Yassir Travel, screen 31 of 34
  • Yassir Travel, screen 32 of 34
  • Yassir Travel, screen 33 of 34
  • Yassir Travel, screen 34 of 34