Files
amare/openspec/changes/archive/2026-07-29-setup-foundation/tasks.md
manoel freitas 7a858b52af feat: implement CMS for content management (WEB-02/03/04/06)
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>
2026-07-29 06:18:42 -03:00

4.4 KiB

1. Bootstrap do projeto

  • 1.1 Criar app Laravel 13 via composer create-project em diretório temporário e mover para raiz preservando SPEC.md, openspec/ e .codex/
  • 1.2 Configurar .env e .env.example com APP_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.yml com serviço PostgreSQL 17, volume nomeado e healthcheck
  • 2.2 Configurar conexão PostgreSQL no Laravel e validar php artisan migrate em 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 /admin e autenticação habilitada
  • 3.2 Criar migration adicionando role (varchar indexed) e is_active (boolean default true) em users
  • 3.3 Implementar enum UserRole (admin, assistant) e integrar ao model User
  • 3.4 Implementar canAccessPanel() negando usuários inativos
  • 3.5 Criar UserResource restrito a admin via Policy
  • 3.6 Criar DatabaseSeeder com 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.css com custom properties (tipografia, escala, espaçamento, raio, container, cores, sombras, transições)
  • 4.3 Estender tailwind.config.js para consumir tokens centralizados
  • 4.4 Criar layout público mínimo (resources/views/layouts/public.blade.php) com prefers-reduced-motion e 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 /up respondendo 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\Domain strict types, sem dependência de Filament/Livewire
  • 6.5 Adicionar scripts Composer: test:unit, test:feature, test:browser, test, quality conforme SPEC §13.9
  • 6.6 Configurar composer audit no job static

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 .env de 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.yml com jobs static, 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 locale pt_BR e TZ America/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 quality localmente 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)