Перейти к содержимому
Aabuucoder
Все работы
В продакшенеКоммерческий

Zareen Travel

Платформа для турагентства: туры, брони с гарантией мест, оплаты, возвраты и финансовые отчёты

О проекте

Система управления турагентством: каталог туров, клиенты, брони, оплаты, возвраты, расходы и отчётность. Пять ролей — от суперадмина до туриста, у каждой свой срез данных. Есть публичный каталог, личный кабинет туриста и рабочий кабинет агентства. Все суммы хранятся целыми числами в сумах, единственный источник финансовой правды — база, а не таблицы в чьём-то ноутбуке.

Задача

Главная боль турагентства — продать больше мест, чем есть в автобусе. Когда два менеджера одновременно подтверждают бронь на последнее место, обычная проверка «сколько свободно» не спасает: оба видят единицу и оба продают.

Решение

Подтверждение брони блокирует строку тура в базе, поэтому две параллельные транзакции физически не могут превысить количество мест — это покрыто отдельным тестом на конкурентность. Заявки и лист ожидания места не занимают, отмена сразу освобождает. Безопасность собрана всерьёз: Argon2, ротация refresh-токенов с обнаружением повторного использования, лимит попыток входа на уровне базы и CSP на nginx. Отчёты в XLSX и PDF считаются с учётом роли — менеджер никогда не увидит расходы и прибыль.

Результат

  • 80 API-эндпоинтов и 22 таблицы: туры, выезды, брони, оплаты, возвраты, расходы, аудит
  • Овербукинг невозможен: блокировка строки на уровне PostgreSQL плюс тест на конкурентность
  • Три языка интерфейса с форматированием дат и сумм под каждый — русский, узбекский, английский
  • Экран переклички: отметка явки на выезде и автоматическое закрытие тура

Следующий проект

Saralash

KPI-система: онлайн-контроль работы сотрудников, задачи от руководителя, графики и дисциплина