BumiLu

The backend and infrastructure of a Saint Petersburg guide app for Chinese tourists. A map, routes and an AI assistant in three languages, a final at SPbPU's contest and about 50 beta testers.

Open bumilu.ru
Role
Backend & infrastructure
Period
2026
Status
MVP

The mobile app, admin panel and landing page were built by other team members. Mine are the backend and the server: everything these screens search, route and answer.

Places and categories come from the API; nearby search runs on PostGIS.

The task

Up to half of foreign hotel bookings in Saint Petersburg come from Chinese tourists, and most of them travel on their own, without Russian or English. Yandex Maps, Google Maps and AMap each cover part of it, but none combines Chinese content, a tourist scenario and AI recommendations.

BumiLu is an MVP that brings it together in one app. About 50 users beta-tested it, and the project reached the final of SPbPU’s “Basics of Project Activity” contest.

What I did

  1. 01

    About 90 endpoints in 10 modules

    Places, routes, reviews, favourites, chat, stats. Each module has separate routers for the app and the admin panel.

  2. 02

    DDD and CQRS in every module

    A framework-free domain, commands and queries kept apart, the database and Redis behind ports, dependencies wired by Dishka.

  3. 03

    Passwordless sign-in

    Device-bound guest sessions and one-time email codes for tourists; separate sign-in and permissions for staff.

  4. 04

    Own maps and routing

    PostGIS for nearby search, Valhalla for walking and driving routes, tiles from a self-hosted TileServer GL. No paid APIs.

  5. 05

    Server and monitoring

    Traefik, Kong as the API gateway, metrics in Prometheus and Grafana, all in Docker Compose.

  6. 06

    Tests and CI

    pytest with testcontainers on a real PostgreSQL, ruff and mypy, build and deploy via GitHub Actions.

Stack

  • FastAPI
  • PostGIS
  • Valhalla
  • Redis
  • Python
  • SQLAlchemy
  • Alembic
  • Taskiq
  • Dishka
  • Docker
  • Traefik
  • GitHub Actions
  • pytest
  • testcontainers
  • ruff
  • mypy
  • Prometheus
  • Grafana