Introduces Filament management for site settings, services, portfolio cases, and testimonials with admin-only policies, validated media uploads, and deterministic seeding. Includes comprehensive design and task documentation for the implementation. Co-authored-by: Cursor <cursoragent@cursor.com>
4.4 KiB
4.4 KiB
1. Bootstrap do projeto
- 1.1 Criar app Laravel 13 via
composer create-projectem diretório temporário e mover para raiz preservandoSPEC.md,openspec/e.codex/ - 1.2 Configurar
.enve.env.examplecomAPP_LOCALE=pt_BR,APP_TIMEZONE=America/Fortaleza,DB_CONNECTION=pgsql - 1.3 Adicionar
declare(strict_types=1);como convenção documentada e habilitar strict types nos arquivos PHP criados nesta fase - 1.4 Criar índice de ADRs aceitas em
docs/adr/referenciando ADR-001..ADR-010 do SPEC §21
2. Banco de dados e Docker Compose local
- 2.1 Adicionar
docker-compose.ymlcom serviço PostgreSQL 17, volume nomeado e healthcheck - 2.2 Configurar conexão PostgreSQL no Laravel e validar
php artisan migrateem banco limpo - 2.3 Configurar
SESSION_DRIVER=database,CACHE_STORE=database,QUEUE_CONNECTION=database - 2.4 Documentar comandos locais (
docker compose up,artisan migrate) no README
3. Filament, autenticação e papéis
- 3.1 Instalar Filament 5 com painel em
/admine autenticação habilitada - 3.2 Criar migration adicionando
role(varchar indexed) eis_active(boolean default true) emusers - 3.3 Implementar enum
UserRole(admin,assistant) e integrar ao modelUser - 3.4 Implementar
canAccessPanel()negando usuários inativos - 3.5 Criar
UserResourcerestrito a admin via Policy - 3.6 Criar
DatabaseSeedercom usuário admin local (credenciais documentadas apenas para dev) - 3.7 Escrever feature tests: login admin, login assistant, bloqueio de inativo, assistant sem acesso a usuários
4. Livewire, Tailwind, Vite e design tokens
- 4.1 Instalar Livewire 4 e configurar Vite + Tailwind para site público
- 4.2 Criar
resources/css/tokens.csscom custom properties (tipografia, escala, espaçamento, raio, container, cores, sombras, transições) - 4.3 Estender
tailwind.config.jspara consumir tokens centralizados - 4.4 Criar layout público mínimo (
resources/views/layouts/public.blade.php) comprefers-reduced-motione contraste AA - 4.5 Criar rota
/com página placeholder usando layout público e tokens - 4.6 Escrever teste feature validando renderização da home sem erro
5. Healthcheck
- 5.1 Garantir rota
GET /uprespondendo HTTP 200 sem autenticação - 5.2 Validar que resposta não expõe segredos ou stack traces
- 5.3 Escrever feature test para endpoint
/up
6. Qualidade: Pint, Larastan, Pest, arch tests e scripts Composer
- 6.1 Instalar e configurar Laravel Pint com script
composer pint/ check no CI - 6.2 Instalar Larastan/PHPStan com nível definido e script no CI job
static - 6.3 Instalar Pest 4 e Pest Browser; configurar
phpunit.xml/Pest.php - 6.4 Criar testes de arquitetura:
App\Domainstrict types, sem dependência de Filament/Livewire - 6.5 Adicionar scripts Composer:
test:unit,test:feature,test:browser,test,qualityconforme SPEC §13.9 - 6.6 Configurar
composer auditno jobstatic
7. Docker multi-stage FrankenPHP
- 7.1 Criar Dockerfile multi-stage (composer → frontend → runtime FrankenPHP regular mode)
- 7.2 Fixar versão PHP compatível com Laravel 13; usuário non-root quando suportado
- 7.3 Definir comandos para processos web, queue (
queue:work) e scheduler (schedule:work) - 7.4 Adicionar healthcheck do contêiner apontando para
/up - 7.5 Garantir que nenhum secret ou
.envde produção entra em layer da imagem - 7.6 Validar build local e no CI
8. CI GitHub Actions
- 8.1 Criar workflow
.github/workflows/ci.ymlcom jobsstatic,unit,feature,browser,container - 8.2 Job
feature: PostgreSQL service container (nunca SQLite) - 8.3 Job
browser: build de imagem, servir via FrankenPHP, rodar Pest Browser com localept_BRe TZAmerica/Fortaleza - 8.4 Job
container: build da imagem final + healthcheck - 8.5 Configurar cache seguro de Composer e npm nos jobs
9. Verificação final e critério de saída
- 9.1 Executar
composer qualitylocalmente e corrigir falhas - 9.2 Executar
composer test:browser(smoke mínimo: home + login) - 9.3 Confirmar critério de saída da Fase 0: pipeline CI verde + build de imagem + healthcheck validado no contêiner
- 9.4 Reportar conclusão no formato SPEC §24 (requisito, alterações, testes, comandos, aceite, pendências)