Haitham AssoliRead this page in Arabicاقرأ هذه الصفحة بالإنجليزية
All projects

ShippedMobile2025

Rooh Al-Jouf

A digital guide to the Al-Jouf region and everything in it.

A bilingual tourism guide for Al-Jouf in Saudi Arabia: heritage and tourist sites, live events and festivals, a directory of local restaurants and cafés, and the historical and cultural background behind them. Built for both a first-time visitor and a resident.

Rooh Al-Jouf: A digital guide to the Al-Jouf region and everything in it.
Role
Client project: mobile development
Year
2025
Status
Shipped
Built with
  • React Native
  • Expo Router
  • TypeScript
  • i18n
  • Firebase
  • React Query
  • Reanimated
  • Deep Linking
Where to find it

Regional tourism apps usually fail in one of two ways: they are a brochure that never changes, or they are a map with pins and no reason to care about any of them. Al-Jouf has genuine depth in heritage sites, seasonal festivals and a food scene, and the client wanted all of it in one place.

The app covers sites, events, and places to eat, each with the historical and cultural context that makes a visit worth making. It is fully bilingual, which for a Saudi tourism product is not a nice-to-have.

Challenges

  • Bilingual means the layout mirrors, not just the words

    The snag

    Switching to Arabic flips the entire interface: navigation direction, icon orientation, list alignment, back gestures. Translating strings alone produces an app that reads Arabic but behaves English.

    What I did

    Direction is a property of the whole tree rather than a per-screen fix, so layout, navigation and gestures all mirror together. Anything directional is expressed in start/end terms instead of left/right.

  • Events go stale faster than releases ship

    The snag

    A festival listing that is a week out of date is worse than no listing. Store review cycles are far slower than the pace at which a seasonal events calendar changes.

    What I did

    Events, sites and venues are all remote content the client edits directly. Shipping a build is never on the critical path for keeping the app current.

  • Heavy imagery on a tourist's connection

    The snag

    A guide is mostly photographs, and it is opened by people on roaming data at a heritage site with one bar of signal, the worst possible conditions for the app's heaviest content.

    What I did

    Images are served at the size they are displayed and cached on disk after first view, so browsing back through places already seen costs nothing.

Results

  • Shipped on both the App Store and Google Play for a Saudi client.
  • Fully bilingual with a properly mirrored right-to-left layout.
  • Content managed by the client without app releases.

Screens

Next design — SignalSee all 14