Skip to content
All projects
Tourism platform·2025 — Present·Full-Stack Engineer· live

Visit Kurdistan

A travel platform for the Kurdistan Region — website, admin dashboard and mobile app, with an AI assistant and trip planner.

The homepage

Overview

Visit Kurdistan helps people plan a trip to the region: where to go, what’s on, and what to book. It runs as a public website, a mobile app, and an admin dashboard the content and operations teams use every day, all sharing one backend.

I work across the whole thing — the API and data model, the public site, and the dashboard.

Tour packages

The problem

The region had plenty to offer visitors and no single place that pulled it together. Tour operators, events and destinations lived in separate hands, in three languages, with no way to plan or book a trip end to end.

What I built

One backend feeding four surfaces, so content is written once and appears everywhere. On top of that, an assistant and a trip planner that answer from the real catalogue rather than generic travel advice.

Tech stack

Backend
NestJS, PostgreSQL, TypeORM, Redis, JWT / Passport, Swagger
AI
DeepSeek, RAG / embeddings, Tool calling, Cloudflare Turnstile
Public site
React, Vite, TanStack Query, i18next, Leaflet, Framer Motion, Tailwind CSS
Dashboard
React 19, Vite, TanStack Table, Redux Toolkit, TipTap, react-pdf
Mobile
React Native
Infrastructure
AWS S3, Docker, Nodemailer, Strapi CMS

Key features

  • Three languages, one platform

    Everything is written once and published in English, Arabic and Kurdish — including right-to-left layouts, which use the same components rather than a separate build.

    Destinations across the region
  • Places on a map

    Every destination, tour and event is pinned and searchable, with filters by city and category. Built on open mapping data rather than a paid maps service.

    The place explorer — search, filter, and every place on the map
  • Bookings you can actually use

    A booking produces a PDF confirmation with a QR code for check-in, emailed automatically — not just a record in a database.

    A package, ready to book
  • A dashboard the team lives in

    Tours, events, packages, promo codes, places, bookings, orders, users and site content are all managed from one place, with rich editing for the content team.

    What’s on, by month and category
  • An assistant that knows the catalogue

    Visitors can ask questions in any of the three languages and get answers drawn from live site content, so “what’s on this week” is actually current.

    The assistant, answering from live site content
  • A trip planner in plain language

    Describe a trip in your own words — or answer a few questions instead — and get a day-by-day itinerary back, which you can keep refining and share by link.

    Describe your trip in your own words
  • Itineraries that lead somewhere

    Each plan maps the route in order, explains why every stop was chosen, and matches the trip against real tour packages you can book.

    The itinerary it builds — day by day, mapped, with packages that fit
  • Built for phones first

    Every screen reflows from desktop to tablet to phone without a separate mobile build.

On a smaller screen

The same components, reflowed rather than rebuilt.

  • Homepage on a phone

  • The map, stacked for a smaller screen

  • Packages on a tablet

  • The assistant on a phone