- PostgreSQL
- TypeScript / React
- Docker / Podman
Открыть демоОткрыть админку демо
Задача
Готовые плагины бронирования закрывают витрину, но не работу владельца: занятость ведётся отдельно от площадок, оплата уходит во внешний сервис, счета и уведомления формируются вручную. Расширить чужую модель данных под свои характеристики объектов и свои сценарии расчёта нельзя — каждый новый тип объекта упирается в её границы.
Решение
Сервис написан с нуля: каталог, бронирование и журнал отдаёт собственный сервер, данные лежат в PostgreSQL своей схемой, админка — отдельное приложение поверх того же API. Характеристики объектов заводятся из админки и попадают в фильтр каталога автоматически — новое свойство не требует правки кода.
Занятость синхронизируется с площадками по iCal в обе стороны: календари подтягиваются по расписанию, собственный календарь публикуется для внешних площадок. Оплата картой идёт через эквайринг с подписью запроса и подтверждением по callback, счета выпускаются в PDF, уведомления уходят на почту и в Telegram через общий слой.
Результат
Сервис закрывает аренду целиком: каталог с фильтром, календарь занятости, оплату, счета и уведомления. Витрина, журнал и правила заезда ведутся в той же системе и редактируются из админки на двух языках, поэтому запуск не упирается в отдельную разработку сайта.