Pitch: Django-octo - um orquestrador modular para Django com auto-descoberta de pacotes e versionamento orientado a eventos (django-octo)
Ola, lhe apresento o django_octo
Quem trabalha com múltiplos projetos em Django sabe que, com o tempo, acabamos replicando configurações de INSTALLED_APPS, rotas e painéis administrativos entre diferentes bases de código para funcionalidades recorrentes (como SEO, auditoria de segurança, etc.).
Para resolver esse acoplamento manual e facilitar o reuso entre projetos, desenvolvi o django-octo — um núcleo orquestrador agnóstico à regra de negócio que gerencia módulos satélites de forma dinâmica.
Como funciona a arquitetura?
O projeto foi desenhado para funcionar como um hub central leve, utilizando recursos nativos do ecossistema Python/Django para eliminar configurações manuais:
Auto-descoberta em tempo de execução (Zero-Config):
Em vez de declarar cada pacote manualmente, o núcleo utiliza importlib.util.find_spec e importlib.metadata para inspecionar o ambiente virtual ativo. Ao chamar get_installed_octo_apps() no settings.py e incluir django_octo.urls, ele registra e monta automaticamente apenas os módulos satélites que estão instalados naquele ambiente.
Control Hub integrado (/octo/):
Uma interface de observabilidade sem dependências externas que lista os módulos ativos, exibe suas versões semânticas em tempo real e centraliza os links entre as rotas públicas e o Django Admin.
Versionamento cumulativo orientado a eventos (CI/CD):
Essa foi uma das partes mais interessantes de construir. Sempre que um módulo satélite (como o django-octo-seo ou django-octo-security) publica uma nova release, um webhook (repository_dispatch) dispara uma pipeline no repositório principal. O fluxo incrementa a versão do core, atualiza o CHANGELOG.md, roda testes de integração entre os módulos e publica automaticamente no PyPI via OIDC Trusted Publishing.
Gerenciamento com Rye:
Todo o ecossistema utiliza o Rye (gerenciador baseado em Rust) para garantir locks determinísticos de dependências.
Exemplo de uso na prática:
Depois de instalar via pip install django-octo (ou rye add django-octo), a integração em um projeto Django exige apenas duas alterações:
1. No settings.py:
`from django_octo import get_installed_octo_apps
INSTALLED_APPS = [
# ... apps padrão do Django
*get_installed_octo_apps(),
]`
2. No urls.py raiz:
`
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path("admin/", admin.site.urls),
path("", include("django_octo.urls")),
]`
Ao rodar as migrações e subir o servidor, o painel de controle já fica acessível em /octo/ com todos os satélites detectados.
Ecossistema atual e próximos passos:
Atualmente o orquestrador já conversa com dois módulos satélites publicados:
- django-octo-seo: motor semântico e de geração de JSON-LD.
- django-octo-security: verificação de CVEs e postura de cabeçalhos HTTP sem dependências externas.
O projeto está sob licença MIT e foi construído mirando versões modernas do Python (>= 3.12) e Django (>= 6.1.2).
Repositório no GitHub: :github.com/jeanpmodev/django_octo
Pacote no PyPI: pypi.org/project/django-octo
Feedbacks sobre a arquitetura de descoberta dinâmica, sugestões de novos módulos satélites ou críticas ao fluxo de CI/CD são muito bem-vindos!