Módulos
Onde sua aplicação vive. Cada pasta em src/Modules/ é um módulo independente.
O conceito Zero Config
No Vupi.us, uma pasta é um módulo. Não existe registro manual. O ModuleLoader varre src/Modules/ automaticamente e carrega tudo que encontrar.
Regra simples
Crie a pasta → crie o ServiceProvider → crie o Routes/web.php. O sistema faz o resto.
Estrutura de um módulo
src/Modules/Usuario/
├── Controllers/ # Endpoints HTTP — recebe Request, retorna Response
│ └── UsuarioController.php
├── Services/ # Regras de negócio — o coração do módulo
│ ├── UsuarioService.php
│ └── UsuarioServiceInterface.php
├── Repositories/ # Acesso ao banco de dados
│ ├── UsuarioRepository.php
│ ├── UsuarioRepositoryInterface.php
│ └── UsuarioAbstractRepository.php
├── Entities/ # Modelos de domínio (sem dependência de framework)
│ └── Usuario.php
├── Exceptions/ # Exceções específicas do módulo
│ ├── InvalidEmailException.php
│ └── InvalidPasswordException.php
├── Database/
│ ├── Migrations/ # Criação e alteração de tabelas
│ ├── Seeders/ # Dados iniciais
│ └── connection.php # Declara qual banco usar (core ou modules)
└── Routes/
└── web.php # ⚠ Obrigatório para ter rotas HTTP