nautilus/core

A Modular framework for PHP

Maintainers

Package info

github.com/diegogit03/nautilus

pkg:composer/nautilus/core

Transparency log

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

dev-main 2026-08-14 17:43 UTC

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.

Licença

MIT