nautilus / core
A Modular framework for PHP
dev-main
2026-08-14 17:43 UTC
Requires
- php-di/php-di: ^7.1
- slim/psr7: ^1.8
- slim/slim: 4.*
Requires (Dev)
- laravel/pint: ^1.29
- mockery/mockery: ^1.6
- pestphp/pest: ^4.7
- phpstan/phpstan: ^2.2
This package is auto-updated.
Last update: 2026-08-14 17:43:46 UTC
README
Framework para criação de monólitos modulares em PHP. Organize sua aplicação em módulos independentes — cada um com seus próprios controllers, comandos e jobs — sem abrir mão da simplicidade de um monólito.
- Modular — divida a aplicação em módulos coesos e desacoplados
- Não opinativo — não impõe estrutura de pastas, ORM ou camadas específicas
- Baseado em atributos — configuração declarativa via PHP Attributes, sem arquivos de config espalhados
Índice
Instalação
composer require nautilus/core
Nota: o framework ainda está em desenvolvimento inicial e a API pode mudar bastante entre versões.
Conceitos
O Nautilus organiza sua aplicação em módulos. Um módulo agrupa tudo relacionado a um domínio da aplicação:
- Controller — expõe endpoints HTTP (assinatura PSR-7)
- Job — unidade de trabalho assíncrona, processada por um worker de fila
- Command — tarefa executável via CLI, com agendamento opcional
- Module — agrupa controllers, commands, jobs, bindings de injeção de dependência e submódulos
Exemplo
#[Job('process_video')] final class ProcessVideo { public function process(): void { // ... processa o vídeo } } #[Command( command: 'video:send:report', schedule: SCHEDULE_PERIOD::DAILY )] final class SendVideoReport { public function index(ServerRequestInterface $request, ResponseInterface $response): ResponseInterface { // ... envia relatório } } #[Controller] final class VideosController { public function __construct(private Queue $queue) {} public function create(): void { $this->queue->dispatch('process_video'); } } #[Module( controllers: [VideosController::class], commands: [SendVideoReport::class], jobs: [ProcessVideo::class], bindings: [], modules: [] )] class VideosModule {} $app = Application::create(VideosModule::class); $app->run(); // ou $app->command('queue:work'); $app->command('schedule:run');
Requisitos
- PHP 8.4+ (uso de Attributes e Enums)
- Composer
Contribuindo
Contribuições são bem-vindas! Abra uma issue para discutir mudanças maiores antes de enviar um PR.