The stack
Python 3.11, uv. FastAPI for the admin API and internal endpoints, aiogram 3.22 for Telegram. SQLAlchemy 2.0 + Alembic (async ORM, 60 migrations). SQLite: bot.db (users, requests, sessions, enrollments) and content.db (video links). Gemini File Search v2 as the main knowledge backend. APScheduler for cron jobs. structlog in JSON. Docker Compose + deploy.sh. The admin UI is Jinja2 + Alpine.js + Tippy.js — three script tags instead of a build pipeline.