Skip to content

B02 · Modularizar com internachi/modular e teste de arquitetura #4

Closed

Description

@tecrodrigocastro

Contexto

Decisão registrada: usar apenas a ideia de módulos e eventos do internachi/modular, sem template base pesado. Os módulos conversam por eventos de domínio e contratos, nunca por chamada direta entre models.

Escopo

  • Instalar internachi/modular e criar a convenção app-modules/<nome> com namespace PHPeste\<Nome>
  • Criar os módulos vazios: Identity, Community, Branding, Cfp, Program, Ticketing, Payments, CheckIn, Notifications, Sponsors, Suppliers, Finance, Tasks, Engagement, Audit
  • Definir pasta padrão de cada módulo: Models, Actions, Data, Events, Listeners, Contracts, Http, database/migrations, tests
  • Escrever teste de arquitetura em Pest que falha se um módulo importar Models de outro
  • Documentar em docs/adr/ a decisão e como criar um módulo novo (php artisan make:module)

Critérios de aceite

  • Os 15 módulos existem, com service provider carregando rotas, migrations e testes de cada um
  • Teste de arquitetura falha ao introduzir dependência proibida entre módulos
  • ADR publicado em docs/adr/

Notas técnicas

  • Comunicação entre módulos: eventos (Illuminate\Events) para efeitos colaterais e interfaces em Contracts para consultas síncronas
  • Cada módulo roda seus testes isoladamente

Depende de

Definição de pronto

  • Testes passando na CI
  • Lint e análise estática sem erros
  • Documentação atualizada (OpenAPI via Scramble no backend, ou README do módulo no front)
  • Revisado por pelo menos uma pessoa

Activity

  1. moved this from Todo to In Progress in PHPeste Platformon Nov 4, 2026
  2. tecrodrigocastro commented on Nov 4, 2026

    @tecrodrigocastro
    MemberAuthor

    Progresso no PR #1 (merged) + #2:

    • internachi/modular instalado, convenção app-modules/<nome> com namespace PHPeste\<Nome>.
    • Criados os 10 módulos do MVP: Identity, Community, Branding, Cfp, Program, Ticketing, Payments, CheckIn, Notifications, Audit.
    • Teste de arquitetura em Pest garantindo que nenhum módulo usa App\.

    Falta pra fechar:

    • Os 5 módulos de fase 2/3 (Sponsors, Suppliers, Finance, Tasks, Engagement) — deixados pra depois de propósito
    • Estrutura padrão de pastas por módulo (Models/Actions/Data/Events/Listeners/Contracts/Http)
    • Arch test específico pra Model de um módulo não ser importado por outro (hoje só cobre App\)
    • ADR em docs/adr/ documentando a decisão

    Deixando em In Progress.

  3. moved this from In Progress to Done in PHPeste Platformon Nov 4, 2026
  4. tecrodrigocastro commented on Nov 4, 2026

    @tecrodrigocastro
    MemberAuthor

    Pendências fechadas no PR #85:

    • Os 5 módulos de fase 2/3 criados (sponsors, suppliers, finance, tasks, engagement) — 15 no total
    • Estrutura padrão por módulo: Models/Actions/Data/Events/Listeners/Contracts/Http
    • Arch test fortalecido: Models de um módulo só é usado dentro dele mesmo (além do teste que já existia de nenhum módulo usar App\)
    • ADR em docs/adr/0002-modularizacao-internachi-modular.md

    pest --group=arch cobre os 15 módulos. Marcando como Done.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions