REPOSITORY OVERVIEWLive repository statistics
★ 1Stars
⑂ 0Forks
◯ 0Open issues
◉ 1Watchers
56/100
OPENREPOHUB HEALTH SIGNALMixed signals
A transparent discovery signal based on current public GitHub metadata.
Recent activity35% weight
52 Community adoption25% weight
0 Maintenance state20% weight
100 License clarity10% weight
100 Project information10% weight
75 This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
README preview
Университетский AI‑ассистент — бэкенд
Clean Architecture + тактическое DDD‑приложение для постановки вопросов в очередь.
Собрано на FastAPI, Dishka (DI), NATS, Redis, uvloop.
Обзор архитектуры
src/app/
├── domain/ # Чистые бизнес‑правила — ни одного импорта из фреймворков/библиотек
├── application/ # Обработчики CQRS, порты (интерфейсы), прикладные исключения
├── infrastructure/ # Адаптеры: Redis, NATS (реализации портов слоя application)
├── presentation/ # HTTP‑контроллеры, Pydantic‑схемы, обработчики ошибок
└── setup/ # Фабрика приложения, IoC‑провайдеры Dishka, настройки
Ключевые принципы
| Принцип | Как применяется |
|---|
| Инверсия зависимостей | Каждая инфраструктурная деталь скрыта за ABC‑портом в application/common/ports/ |
| Без глобального состояния | Все подключения (Redis, NATS) принадлежат Dishka‑провайдерам со скоупом APP и внедряются через DI — никогда не хранятся в модульных глобальных переменных |
| CQRS | Путь записи → SubmitQuestionHandler (command); путь чтения → PollAnswerHandler, StreamAnswerHandler (queries) |
| Тактическое DDD | Message — агрегатный корень; SessionId, MessageId, QuestionText — value object’ы; QuestionDomainService создаёт агрегаты |
| По‑маршрутная обработка ошибок | Доменные и прикладные исключения переводятся в HTTP‑ответы на уровне контроллеров и не «протекают» наружу |
| Скоупы Dishka | APP — для инфраструктурных синглтонов; REQUEST — для CQRS‑обработчиков |
Потоки
Отправка вопроса (POST /api/v1/queuing/)
HTTP‑контроллер
└─ SubmitQuestionCommand
└─ SubmitQuestionHandler
├─ SessionRepository.create_or_renew() [Redis]
├─ QuestionDomainService.create_message() [чистый домен]
├─ MessageStatusRepository.set_processing() [Redis]
└─ QuestionPublisher.publish() [NATS]
Опрос ответа (GET /api/v1/queuing/)
ALGORITHMICALLY RELATEDSimilar Open-Source Projects
Selected from shared topics, language and repository description—not editorial ratings.
Practical Clean Architecture backend example built with FastAPI. No stateful globals (DI), low coupling (DIP), tactical DDD, CQRS, proper UoW usage. REST API, per-route error handling, session-based auth, contextual RBAC. Bundled with extensive docs and modern tooling
86/100 healthRecently updatedActive repository
PythonMIT#alembic#api#architecture#clean-architecture
⑂ 78 forks◯ 0 issuesUpdated 1 day ago
A production-ready FastAPI backend template with clean architecture. 一个功能完整、架构清晰的企业级FastAPI后端模板,专为团队开发设计,开箱即用。
88/100 healthRecently updatedActive repositoryHas homepage
PythonMIT#api#async#authentication#boilerplate
⑂ 75 forks◯ 2 issuesUpdated today
Project homepage ↗