A travel-management platform for a tour operator that books flights, stays, and full itineraries in one place. I built it full-stack: a Laravel, Postgres, and Redis back end behind a Next.js and Tailwind front end, all containerised with Docker. Figma design with Hamail Hassan.

Travara is a travel-management brand that books trips end to end: flights, stays, schedules, and the support around them. Coordinating that breadth usually means a stack of disconnected tools and a spreadsheet quietly holding them together.
The brief was one platform. A traveler plans and books on the front, the team behind the counter manages it from the same source of truth: curated stays, exclusive deals, live availability, no double entry and no version that only one person can see.
Hamail Hassan and I shaped the design in Figma: warm, editorial, photography-led, closer to a travel magazine than a booking engine. I built everything else, front to back.
The front end is Next.js and Tailwind with a shadcn component layer; the back end is Laravel over Postgres with Redis caching the busy reads. Every service runs in Docker, so the client can host the whole platform wherever it likes.
Two ideas held the build together. One: a single source of truth. Availability, pricing, and bookings live in Postgres and move through real transitions, so what a traveler sees and what the team sees never drift apart.
Two: it has to feel effortless. The browsing is editorial and unhurried, but the booking underneath is quick. Redis caches the destination and package views that get hit hardest, the Laravel API stays lean, and the Next.js front end paints fast on first load.
The surface is built to make planning feel like daydreaming, not data entry. Curated destinations, handpicked stays, and clear packages carry real photography and generous space; the booking controls sit close by but never crowd the view.
Under it sits a typed Next.js app with a shadcn component layer, talking to a Laravel API over a clean contract. State stays honest end to end: a stay shown as available is available, because the front end and the database read from the same source.

Behind the screens, Travara is a full-stack platform I built and containerised end to end: a typed Next.js client, a Laravel REST API, and a Postgres core with Redis in front, all running in Docker so the client can host it anywhere.
Server-rendered React with a shadcn component layer, typed end to end and talking to the API over a clean REST contract.
A Laravel back end handling auth, bookings, and the business rules around availability and pricing, exposed as versioned REST endpoints.
Postgres holds destinations, packages, stays, and bookings as the single source of truth. Redis caches the read-heavy browse and availability views.
Every service in its own container behind Nginx, so the whole platform deploys as a unit and the client can self-host wherever it likes.
Mohed Abbas is a full-stack web engineer. He builds web products end to end: interfaces in React and Next, APIs and services in Laravel and Node, and the Postgres, Redis, and Docker plumbing that keeps them running.
Travara was a full-stack client build: a Figma design with Hamail Hassan, a Laravel and Postgres back end, a Next.js front end, and a Dockerised runtime the client owns. Currently open to full-time roles and freelance builds.