Files
tavolo/server/packages/tavolo-app
woggioni a3e8ff3206
CI / Build and push docker image (push) Successful in 2m42s
Trace Postgres and Redis queries with the contrib instrumentations
Builds the TracerProvider in tavolo.telemetry (kaya-otel's is private) and
injects it into kaya-otel, then instruments asyncpg and redis through
opentelemetry-instrumentation-asyncpg/redis. Redis command values are
redacted and asyncpg spans carry the parameterized SQL only.
2026-09-28 03:38:59 +08:00
..

tavolo-app

The deployable tavolo application: the composition root wiring tavolo-platform to the tavolo-scopone game.

Contents

  • app.py — assembles the KayaApp (session/OIDC/Tortoise/OpenAPI mixins plus PlatformMixin and the deadline scheduler), registers the ScoponeEngine with its configured timeouts, and exposes tavolo.app:app for granian.
  • config.py — environment-driven frozen Settings.
  • telemetry.py — the optional OpenTelemetry wiring beyond kaya-otel: meter/tracer/logger providers, the tavolo.active_users/tavolo.ongoing_games gauges (polled from the stores), process/CPython metrics via opentelemetry-instrumentation-system-metrics, Postgres/Redis query spans via the asyncpg/redis instrumentations, and OTLP log export.
  • aerich_config.py — Tortoise ORM configuration consumed by the aerich CLI (migrations live in server/migrations/; aerich itself is configured via the [tool.aerich] section of server/pyproject.toml).
  • logging_config.py — logging setup.
  • static.py — SPA shell hosting for the compiled frontend.

Development (from packages/tavolo-app/)

.venv/bin/python -m mypy --namespace-packages --explicit-package-bases \
  src/tavolo/app.py \
  src/tavolo/config.py \
  src/tavolo/telemetry.py \
  src/tavolo/static.py \
  src/tavolo/aerich_config.py \
  src/tavolo/logging_config.py

End-to-end coverage of the wired stack lives in server/tests/.