Zareen Travel
Платформа для турагентства: туры, брони с гарантией мест, оплаты, возвраты и финансовые отчёты
О проекте
Система управления турагентством: каталог туров, клиенты, брони, оплаты, возвраты, расходы и отчётность. Пять ролей — от суперадмина до туриста, у каждой свой срез данных. Есть публичный каталог, личный кабинет туриста и рабочий кабинет агентства. Все суммы хранятся целыми числами в сумах, единственный источник финансовой правды — база, а не таблицы в чьём-то ноутбуке.
Задача
Главная боль турагентства — продать больше мест, чем есть в автобусе. Когда два менеджера одновременно подтверждают бронь на последнее место, обычная проверка «сколько свободно» не спасает: оба видят единицу и оба продают.
Решение
Подтверждение брони блокирует строку тура в базе, поэтому две параллельные транзакции физически не могут превысить количество мест — это покрыто отдельным тестом на конкурентность. Заявки и лист ожидания места не занимают, отмена сразу освобождает. Безопасность собрана всерьёз: Argon2, ротация refresh-токенов с обнаружением повторного использования, лимит попыток входа на уровне базы и CSP на nginx. Отчёты в XLSX и PDF считаются с учётом роли — менеджер никогда не увидит расходы и прибыль.
Результат
- 80 API-эндпоинтов и 22 таблицы: туры, выезды, брони, оплаты, возвраты, расходы, аудит
- Овербукинг невозможен: блокировка строки на уровне PostgreSQL плюс тест на конкурентность
- Три языка интерфейса с форматированием дат и сумм под каждый — русский, узбекский, английский
- Экран переклички: отметка явки на выезде и автоматическое закрытие тура
Следующий проект
Saralash
KPI-система: онлайн-контроль работы сотрудников, задачи от руководителя, графики и дисциплина