Posicionamento do Produto¶
O MIDDAG for Moodle é um plugin Moodle com escopo amplo de produto. Ele reúne recursos de gestão, operações pedagógicas, integrações externas, análise de dados e outros módulos de negócio dentro de uma arquitetura unificada.
Internamente, o plugin combina três níveis complementares:
- Framework interno: núcleo arquitetural que organiza container, adapters, contratos, ciclo de vida, eventos e outras capacidades transversais.
- Extensions: módulos internos que entregam funcionalidades específicas e podem ser independentes entre si ou depender de outras extensões de forma declarada.
- Integrações externas: pontos pelos quais plugins de terceiros e outros sistemas podem consumir ou estender contratos e interfaces do MIDDAG.
Por que essa arquitetura existe¶
O modelo anterior baseado em subplugins do Moodle aumentava acoplamento operacional, exigia instalação e manutenção fragmentadas e limitava a adoção de práticas arquiteturais mais flexíveis.
O modelo atual busca:
- reduzir dependência estrutural do mecanismo de subplugins do Moodle;
- centralizar o contato com o Moodle por meio de adapters;
- permitir evolução mais dinâmica do produto;
- criar uma base estável para extensões internas e integrações de terceiros;
- sustentar compatibilidade e manutenção de longo prazo para um produto comercial.
O que "flexibilidade" significa aqui¶
No MIDDAG, flexibilidade não significa ausência de regra. Significa combinar contratos estáveis com graus diferentes de restrição conforme a camada:
- Framework: regras mais rígidas, pois define contratos, lifecycle e garantias estruturais.
- Extensions do ecossistema MIDDAG: seguem o framework como padrão esperado para preservar consistência.
- Plugins de terceiros: podem integrar com maior liberdade, mas devem receber orientação clara sobre o que é obrigatório, recomendado, parcialmente restrito ou livre.
Essa classificação deve aparecer de forma explícita nos ADRs e na documentação técnica, evitando depender apenas de convenções implícitas.
Papel do núcleo¶
O núcleo do MIDDAG não existe para concentrar regras de negócio de uma única área. Seu papel é fornecer infraestrutura e mecanismos reutilizáveis para diferentes aplicações dentro do Moodle, como:
- resolução de dependências e ciclo de vida de serviços;
- isolamento do Moodle por adapters;
- modelo de extensões internas;
- integração entre módulos;
- rastreabilidade operacional, diagnóstico e auditoria;
- base estável para APIs e contratos públicos.
Papel das extensions¶
As extensions são a forma principal de entregar funcionalidades de negócio no MIDDAG. Em vez de instalar vários plugins independentes, o produto concentra essas capacidades em um único plugin com módulos internos ativáveis e evolutivos.
Isso permite:
- ativar apenas as capacidades necessárias;
- evoluir funcionalidades sem replicar infraestrutura;
- compartilhar contratos, eventos e mecanismos comuns;
- manter maior coerência entre produto, arquitetura e operação.
Escopo desta documentação¶
As páginas em docs/reference/architecture/* explicam a arquitetura do MIDDAG em linguagem técnica e direta. Os ADRs em docs/specs/adr/* registram decisões estruturais específicas. As páginas de docs/extensions/* descrevem o catálogo funcional das extensões.