
Mami Travel
Booking platform for a Tunisian travel agency
Catalog, dynamic pricing and bookings for transfers, excursions, tours and cruise port calls, sold through a public site in six languages.
- Built at
- MAMICAR
- Role
- Architect & lead developer
- Period
- 2025 – Present
- Status
- In production · public

Context
Mami Travel sells very different products: airport transfers priced by distance, day trips priced by group size, multi-day tours with hotels, and shore excursions for cruise passengers. One NestJS API serves both the agents’ Angular back office and the public Next.js website, so a price is always computed by the same engine, whoever makes the booking.
What I built
- Transfer pricing from real road distances (self-hosted OSRM routing), tiered per-km rates, empty-return surcharges and seasonal multipliers.
- Group-size price ranges per age class for excursions, port calls and tours, with optional guide, lunch and entry-fee supplements.
- Custom tour builder: customers assemble their own multi-day itinerary and hotels and get a live quote.
- Every public booking is re-priced on the server; amounts sent by the browser are never trusted.
- Public site in six languages and several currencies, with a sitemap and per-page SEO metadata.
- Backend-for-frontend proxy keeps the internal API token out of the browser; short-lived access tokens with httpOnly refresh cookies.
- PDF vouchers and itineraries, booking e-mails, online card payment integration (ClicToPay) and shareable payment links.
Screens




