Бумилу
Бэкенд и инфраструктура мобильного гида по Петербургу для туристов из Китая. Карта, маршруты и AI-помощник на трёх языках, финал конкурса СПбПУ и около 50 человек на бета-тесте.
- Роль
- Бэкенд и инфраструктура
- Период
- 2026
- Статус
- MVP
- Код
- Открыт ↗
Мобильное приложение, админку и лендинг делали другие участники команды. Моё — бэкенд и сервер: всё, что эти экраны ищут, строят и отвечают.
Задача
До половины иностранных бронирований в петербургских отелях — туристы из Китая, и большинство путешествует само, без русского и английского. Яндекс Карты, Google Maps и AMap закрывают задачу по кусочкам, но ни один не сочетает контент на китайском, туристический сценарий и рекомендации от AI.
Бумилу — MVP, который собирает это в одно приложение. Его проверили примерно на 50 пользователях, а проект вышел в финал конкурса «Основы проектной деятельности» СПбПУ.
Что я сделал
- 01
Около 90 эндпоинтов в 10 модулях
Места, маршруты, отзывы, избранное, чат, статистика. У каждого модуля отдельный роутер для приложения и для админки.
- 02
DDD и CQRS в каждом модуле
Домен не зависит от фреймворка, команды и запросы разделены, база и Redis спрятаны за портами, зависимости собирает Dishka.
- 03
Вход без пароля
Для туриста: гостевой вход на устройстве и код на почту. Для сотрудников: отдельный вход и права.
- 04
Свои карты и маршруты
PostGIS ищет места рядом, Valhalla строит пешие и автомобильные маршруты, тайлы раздаёт свой TileServer GL. Платных API нет.
- 05
Сервер и мониторинг
Traefik, Kong как API-шлюз, метрики в Prometheus и Grafana, всё в Docker Compose.
- 06
Тесты и CI
pytest с testcontainers на настоящем PostgreSQL, ruff и mypy, сборка и деплой через GitHub Actions.
Стек
- FastAPI
- PostGIS
- Valhalla
- Redis
- Python
- SQLAlchemy
- Alembic
- Taskiq
- Dishka
- Docker
- Traefik
- GitHub Actions
- pytest
- testcontainers
- ruff
- mypy
- Prometheus
- Grafana