Skip to content
Aabuucoder
All work
In productionClient work

Zareen Travel

A travel agency platform: tours, overbooking-proof reservations, payments, refunds and financial reports

Overview

A travel agency management system: tour catalogue, clients, reservations, payments, refunds, expenses and reporting. Five roles from superadmin to tourist, each with its own slice of the data. There is a public catalogue, a tourist’s personal account and the agency’s working dashboard. All amounts are stored as whole UZS integers, and the single source of financial truth is the database — not a spreadsheet on someone’s laptop.

The problem

The core pain of a travel agency is selling more seats than the bus actually has. When two managers confirm a booking for the last seat at the same moment, a plain “how many are free” check doesn’t save you: both see one, and both sell it.

The solution

Confirming a reservation locks the tour row in the database, so two parallel transactions physically cannot exceed the seat count — there is a dedicated concurrency test for it. Requests and the waitlist don’t hold seats, and cancelling frees one immediately. Security is done properly: Argon2, refresh-token rotation with reuse detection, database-backed login rate limiting, and CSP headers on nginx. XLSX and PDF reports are computed per role — a manager never sees expenses or profit.

The outcome

  • 80 API endpoints and 22 tables: tours, departures, reservations, payments, refunds, expenses, audit
  • Overbooking is impossible: PostgreSQL row locking backed by a concurrency test
  • Three interface languages with per-locale date and currency formatting — Russian, Uzbek, English
  • A roll-call screen: mark attendance at departure and close the tour automatically

Next project

Saralash

A KPI system: real-time employee performance tracking, tasks from the head of department, schedules and discipline