Rehla

Tech stack

TypeScript, React, React Native, PostgreSQL, Cloudflare Workers, and Prisma

Duration

June 2025 – present

Project type

Business

Demo

View app

Rehla is a comprehensive travel reservation and management platform designed for travel agencies and their clients. Agencies use a web dashboard to manage trips, reservations, clients, employees, and finances, while clients use a native mobile application to discover, compare, and book trips. The platform was built as a modern TypeScript monorepo with a strong focus on type safety, security, usability, and clear separation of responsibilities across the system.

The Problem

Travel agencies often need to coordinate several interconnected workflows, including trip scheduling, reservation management, client information, employee access, pricing, payments, cancellations, and financial reporting. Managing these workflows across disconnected tools can make day-to-day operations harder to maintain and increases the likelihood of errors.

Rehla was created to bring these workflows into one platform. The system provides agencies with a centralized management dashboard while giving clients a dedicated mobile experience for browsing trips, making reservations, and completing payments.

Goals and Objectives

The main goal was to create a complete travel management platform that could support both the operational needs of travel agencies and the booking experience of their clients.

Development Process

The project was developed as a multi-part monorepo using TypeScript, with the system divided into separate applications and domain packages. This structure made it possible to keep the agency dashboard, client mobile application, APIs, business logic, and database layer independently organized while still sharing contracts and utilities.

The architecture follows domain-driven design with clear boundaries between the admin, client, and core domains. The API layer uses oRPC contracts and Hono on Cloudflare Workers, allowing the frontend and backend to share types and validation rules throughout the application.

The agency side was developed as a React web application with features for managing trips, reservations, clients, employees, analytics, and financial reports. In parallel, a React Native application built with Expo was developed for clients, providing trip discovery, filtering, reservations, authentication, and payment functionality.

Payment processing was integrated with Paymob to support reservations, refunds, and automatic withdrawals. Sensitive national ID information was protected using end-to-end encryption, with encryption rooted in a password controlled by the system administrator.

Since the platform is intended for real operational use, documentation was treated as part of the product rather than an afterthought. A detailed 70-page manual was created in both Arabic and English, explaining every major feature and button in the system and making the platform easier to use for people with limited technical experience.

Architecture

Rehla is organized as a monorepo with a clear separation between applications, APIs, domain logic, and persistence. The core codebase contains nine workspace packages, covering the agency web dashboard, client mobile application, API layers, domain layers, and database access.

The architecture uses contract-first APIs, feature-based organization, end-to-end type safety, and shared domain primitives. Cloudflare Workers provide the backend runtime, while PostgreSQL with Prisma is used for relational data storage. Cloudflare R2 is used for object storage, and Expo EAS is used for mobile application deployment.

Results

Rehla has developed into a complete travel management platform that covers the operational workflow of an agency as well as the customer booking experience. The current system supports trip management, reservations, payments, client management, employee access control, analytics, financial reporting, and secure handling of sensitive information.

In addition to the software itself, the project includes a bilingual user manual and a professional 20-slide presentation containing mockups and screenshots of the platform. These materials were created to make the system easier to present, understand, and adopt.

Screenshots

Trips page in the admin web app
Trips page in the admin web app
Reservations section of a trip page
Reservations section of a trip page
Roles page
Roles page
Finances page
Finances page

Key Features

Some of the most notable features of Rehla include:

Conclusion & Learnings

Building Rehla provided experience with designing and maintaining a large-scale TypeScript monorepo across web, mobile, backend, domain, and database layers. The project required more than implementing individual features, with particular attention given to architecture, API contracts, security, payments, documentation, and the interaction between multiple applications.

The project also reinforced the importance of designing software around its users. The bilingual manual, simplified client experience, and separation between agency and client applications were all built around making the system easier to understand and operate in practice.