2

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!

Carregando publicação patrocinada...
1

Muito bom o relato. Um detalhe que costuma passar batido em integrações de webhook é usar comparação timingSafeEqual na validação do HMAC e garantir idempotência pelo ID do evento, porque provedores fazem retry quando há timeout de rede.