Проекты · записи
▢s1t-python-backend-templates
Мои универсальные базовые шаблоны для разного рода сервисов на Python: event-driven монорепо — Litestar API (strict S-DDD, outbox, админка) + FastStream/SAQ-воркер. MIT.
Тут я храню свои общие универсальные базовые шаблоны для разного рода сервисов на Python. Это не библиотека, а именно шаблон: форкаешь, переименовываешь, выкидываешь лишнее — и сразу пишешь бизнес-логику в готовой структуре.
Что внутри
Монорепо из двух независимых сервисов. Общего кода у них нет — только wire-контракт поверх Valkey Streams:
- litestar_backend — Litestar API со strict S-DDD-разбиением по контекстам: Dishka DI, transactional outbox + relay, SSE-фид, role-auth, админка с дашбордом и file-tail просмотром логов, Prometheus-метрики.
- event_microservice — FastStream-консьюмер + SAQ-воркер: читает стрим, раздаёт тяжёлую работу на джобы (async / thread pool / process pool), джойнит результаты и возвращает события обратно.
Живой цикл целиком: POST /videos -> outbox -> video_uploaded -> три джобы -> join -> video_status -> статус-машина PENDING -> PROCESSING -> DONE/FAILED -> SSE в браузер.
Зачем
Каждый новый сервис начинался с одних и тех же решений: слои, ошибки, DI, логи, метрики, тесты. Надоело решать заново — теперь это решено один раз и лежит шаблоном. Внутри два образцовых контекста: media_example (полный S-DDD: доменные события, outbox, тест-пирамида unit/flow/integration/e2e) и db_example_litestar (тонкий CRUD без домен-слоя — когда инвариантов нет).
Доки самодостаточны: architecture.md, wire-контракты, ADR-лог. Открыто под MIT — форкай на здоровье.