Bro. Nungu

03 · Visitor concierge & marketplace

TaRLI

In development

A digital concierge that meets visitors to Tanzania before they land.

Category
Visitor concierge & marketplace
Role
Product design & full-stack engineering
Built by
Empire Pro Dev
Links
To be confirmed
TaRLI visitor home page on desktop: the “Your journey to Tanzania starts here.” headline over a safari sunset, a destination, arrival date and travellers search with an Explore button, popular shortcuts from Safari to Transport, and counts of verified partners, destinations, local concierge and languages spoken.
TaRLI visitor home page on a phone: the “Your journey to Tanzania starts here.” headline, a stacked destination, arrival date and travellers search with an Explore button, popular shortcuts, and a bottom tab bar with Home, Explore, Plan, Saved and Sign in.

Screens

TaRLI interface

  • TaRLI visitor home page on desktop: the “Your journey to Tanzania starts here.” headline over a safari sunset, a destination, arrival date and travellers search with an Explore button, popular shortcuts from Safari to Transport, and counts of verified partners, destinations, local concierge and languages spoken.
  • TaRLI visitor home page on a phone: the “Your journey to Tanzania starts here.” headline, a stacked destination, arrival date and travellers search with an Explore button, popular shortcuts, and a bottom tab bar with Home, Explore, Plan, Saved and Sign in.
  • TaRLI destination page on desktop for Serengeti National Park: breadcrumbs, a national park badge, an Add to my trip button, counts of things to do, photos, places to stay and local services, section tabs, and an overview beside an At a glance panel.
  • TaRLI destination page on a phone for Zanzibar: a beach and island badge, an Add to my trip button, counts of things to do, photos, places to stay and local services, scrolling section tabs, and Add to my trip pinned to the foot of the screen.
  • TaRLI Explore Tanzania page on a tablet: a snow-capped mountain hero, destination search, filters by type of place and region, Recommended and A–Z sorting, the first destination cards, and the bottom tab bar.
  • TaRLI experiences page on desktop: the “Pick the experience. The itinerary writes itself.” headline over an acacia landscape, and a grid of selectable experience types from Wildlife safari and Zanzibar to Luxury and Coast & dhow.
  • TaRLI stays page on desktop: the “Where to stay in Tanzania” hero over a palm-lined beach, region and amenity filters, price and rating sorting, and verified hotel listings with amenity tags, nightly prices and Reserve buttons.
  • TaRLI services marketplace on a phone: the “Support for your journey” hero, provider search, a List your business button, service category and region filters, the first provider card, and the bottom tab bar.
  • TaRLI trip planner on desktop: a searchable catalogue of destinations, stays, transport and services on the left, Serengeti, Ngorongoro Crater and Zanzibar linked in order on a canvas, and a trip summary of travellers, locations, items and estimated cost.
  • TaRLI investment page on a tablet: the “Choose a sector. We assemble the professional team around it.” headline over a coastal city bridge, and a grid of sectors from Mining services and Agriculture to Energy and Construction.

Overview

A concierge and marketplace platform for international visitors to Tanzania. Visitors describe their trip before they fly, are matched with a vetted local guide (a winga), receive a quotation, pay once and are met at the airport. Hotels, transport, tour operators, translators, and investment and mining consultants offer their services as verified partners.

Product areas

  • Visitors
  • Local guides (winga)
  • Trip planning
  • Quotations & bookings
  • Payments & commissions
  • Partner verification
  • Airport handover
  • Destinations
  • English, Kiswahili & Chinese

Technologies

  • Next.js
  • TypeScript
  • Supabase
  • PostgreSQL
  • Cloudflare R2

Case study

From problem to product

The complete engineering lifecycle behind TaRLI.

  1. 01

    Problem

    International visitors to Tanzania have to arrange guides, stays, transport and specialist services from abroad, with little way to tell who has been vetted or who will actually meet them on arrival.

    • No reliable way to know who will be waiting at the airport
    • Guides, stays, transport and consultants all booked separately
    • Language barriers for visitors arriving from abroad
  2. 02

    Idea

    TaRLI: register before you fly, describe the trip, get matched with a winga, receive one quotation, pay once, and be met at the airport by someone whose identity you can verify with a one-time code.

    • A four-step trip wizard completed before departure
    • A vetted local guide matched by language and workload
    • One quotation and one payment, covering every partner on the trip
  3. 03

    Approach

    TaRLI was built to a written business and system requirements specification. I first delivered it as an ASP.NET Core application, then ported it to Next.js and Supabase, keeping the interface and every translated string unchanged.

    • Requirements traced from the specification to screens and services
    • The money path treated as the centre of the system
    • Honest stand-ins for providers not yet chosen: a sandbox payment gateway and an offline AI concierge
  4. 04

    Architecture

    Pages hold no business logic; they resolve the current user and call a service. Services own the rules: commission calculation, booking state, payment verification and settlements. Payment and AI providers sit behind interfaces, so a real vendor can be added without changing the rest of the system, and seven roles each reach only their own guarded area.

    • Roles for visitors, guides, partner managers, finance, support, auditors and administrators
    • Row-level security denies everything; the app reaches the database only from server code
    • Server actions replace the old controller endpoints, with the same authorisation checks in the same order

    System architecture

    3 layers · 12 modules

    1. L01Experiences

      4 modules
      • Visitor journey
      • Winga desk
      • Partner console
      • Finance & admin
    2. L02Services

      5 modules
      • Trips & quotations
      • Bookings & payments
      • Commissions & payouts
      • Partner verification
      • AI concierge
    3. L03Data & storage

      3 modules
      • PostgreSQL · Supabase
      • Row-level security
      • Cloudflare R2 documents
    Conceptual architecture: layers and their responsibilities.
  5. 05

    Design

    The interface uses an editorial design system of hard edges, no rounded corners, a terracotta accent and generous space, preserved exactly through the port.

    • A role-aware bottom tab bar, bottom-sheet filters and bottom-sheet dialogs on phones
    • The one critical action on each page pinned to the foot of the screen on mobile
    • Available in English, Kiswahili and Chinese
  6. 06

    Development

    The application is TypeScript on Next.js, with Supabase for the database and sign-in and a services layer that owns every business rule.

    • Partner documents kept in a private bucket and read only through short-lived signed links
    • Airport handover codes that are cryptographically random and lock after repeated failed attempts
    • An AI concierge that refuses visa, immigration and legal questions and hands them to a person
    • Installable as an app, with a service worker that never caches personal pages
  7. 07

    Data

    Every completed booking writes a commission to the winga who arranged it and a fee to the platform. Commission rates are stored as data, scoped by partner category, and every payment is re-verified with the gateway before a booking is confirmed.

    • Commission rules by partner category, with a guide default and a platform fee
    • An append-only audit log for privileged actions
    • Full-text search across partner services
  8. 08

    Testing

    The safeguards are built into the flows themselves, and rebuilding the automated suite from the original application is the first priority after the port.

    • A replayed payment webhook produces one set of commissions, not two
    • Every record read from a URL is checked against its owner, and failures look the same as missing records
    • Next: automated tests for the role matrix and the money path
  9. 09

    Deployment

    TaRLI runs on Supabase for its database and authentication and on Cloudflare storage for documents, with scheduled jobs that send notifications and reconcile payments.

    • Scheduled endpoints protected by a shared secret, and refused in production without one
    • Every credential kept in environment configuration, never in source control
    • Maintenance mode and broadcast announcements controlled from the admin area
  10. 10

    Result & current state

    TaRLI is a working MVP: the whole trip, quotation, booking, payment and commission flow runs end to end. Choosing the live payment provider and the hosted AI provider are the steps left before launch.

    • Complete: destinations, trips, bookings, commissions, partner verification and admin settings
    • Next: a live payment gateway, the hosted AI concierge, transactional email and the automated test suite

What building it taught.

Challenges

  • Porting a working application to a new stack without changing anything users see
  • Confirming bookings safely without a database transaction spanning several calls
  • Keeping AI answers away from visa, immigration and legal advice

Solutions

  • Kept the same stylesheets, markup and translations, and replaced controllers one for one
  • Ordered the writes so commissions land before a booking is confirmed, with a reconciliation sweep for anything interrupted
  • A deliberately broad refusal filter that hands regulated questions to a person

Lessons

  • The order of writes can carry a guarantee that a transaction used to
  • An honest stand-in is better than a fake integration
  • Tests are the first thing a port loses, so rebuild them first