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>
72 lines
4.4 KiB
Markdown
72 lines
4.4 KiB
Markdown
## 1. Bootstrap do projeto
|
|
|
|
- [x] 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/`
|
|
- [x] 1.2 Configurar `.env` e `.env.example` com `APP_LOCALE=pt_BR`, `APP_TIMEZONE=America/Fortaleza`, `DB_CONNECTION=pgsql`
|
|
- [x] 1.3 Adicionar `declare(strict_types=1);` como convenção documentada e habilitar strict types nos arquivos PHP criados nesta fase
|
|
- [x] 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
|
|
|
|
- [x] 2.1 Adicionar `docker-compose.yml` com serviço PostgreSQL 17, volume nomeado e healthcheck
|
|
- [x] 2.2 Configurar conexão PostgreSQL no Laravel e validar `php artisan migrate` em banco limpo
|
|
- [x] 2.3 Configurar `SESSION_DRIVER=database`, `CACHE_STORE=database`, `QUEUE_CONNECTION=database`
|
|
- [x] 2.4 Documentar comandos locais (`docker compose up`, `artisan migrate`) no README
|
|
|
|
## 3. Filament, autenticação e papéis
|
|
|
|
- [x] 3.1 Instalar Filament 5 com painel em `/admin` e autenticação habilitada
|
|
- [x] 3.2 Criar migration adicionando `role` (varchar indexed) e `is_active` (boolean default true) em `users`
|
|
- [x] 3.3 Implementar enum `UserRole` (`admin`, `assistant`) e integrar ao model `User`
|
|
- [x] 3.4 Implementar `canAccessPanel()` negando usuários inativos
|
|
- [x] 3.5 Criar `UserResource` restrito a admin via Policy
|
|
- [x] 3.6 Criar `DatabaseSeeder` com usuário admin local (credenciais documentadas apenas para dev)
|
|
- [x] 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
|
|
|
|
- [x] 4.1 Instalar Livewire 4 e configurar Vite + Tailwind para site público
|
|
- [x] 4.2 Criar `resources/css/tokens.css` com custom properties (tipografia, escala, espaçamento, raio, container, cores, sombras, transições)
|
|
- [x] 4.3 Estender `tailwind.config.js` para consumir tokens centralizados
|
|
- [x] 4.4 Criar layout público mínimo (`resources/views/layouts/public.blade.php`) com `prefers-reduced-motion` e contraste AA
|
|
- [x] 4.5 Criar rota `/` com página placeholder usando layout público e tokens
|
|
- [x] 4.6 Escrever teste feature validando renderização da home sem erro
|
|
|
|
## 5. Healthcheck
|
|
|
|
- [x] 5.1 Garantir rota `GET /up` respondendo HTTP 200 sem autenticação
|
|
- [x] 5.2 Validar que resposta não expõe segredos ou stack traces
|
|
- [x] 5.3 Escrever feature test para endpoint `/up`
|
|
|
|
## 6. Qualidade: Pint, Larastan, Pest, arch tests e scripts Composer
|
|
|
|
- [x] 6.1 Instalar e configurar Laravel Pint com script `composer pint` / check no CI
|
|
- [x] 6.2 Instalar Larastan/PHPStan com nível definido e script no CI job `static`
|
|
- [x] 6.3 Instalar Pest 4 e Pest Browser; configurar `phpunit.xml` / `Pest.php`
|
|
- [x] 6.4 Criar testes de arquitetura: `App\Domain` strict types, sem dependência de Filament/Livewire
|
|
- [x] 6.5 Adicionar scripts Composer: `test:unit`, `test:feature`, `test:browser`, `test`, `quality` conforme SPEC §13.9
|
|
- [x] 6.6 Configurar `composer audit` no job `static`
|
|
|
|
## 7. Docker multi-stage FrankenPHP
|
|
|
|
- [x] 7.1 Criar Dockerfile multi-stage (composer → frontend → runtime FrankenPHP regular mode)
|
|
- [x] 7.2 Fixar versão PHP compatível com Laravel 13; usuário non-root quando suportado
|
|
- [x] 7.3 Definir comandos para processos web, queue (`queue:work`) e scheduler (`schedule:work`)
|
|
- [x] 7.4 Adicionar healthcheck do contêiner apontando para `/up`
|
|
- [x] 7.5 Garantir que nenhum secret ou `.env` de produção entra em layer da imagem
|
|
- [x] 7.6 Validar build local e no CI
|
|
|
|
## 8. CI GitHub Actions
|
|
|
|
- [x] 8.1 Criar workflow `.github/workflows/ci.yml` com jobs `static`, `unit`, `feature`, `browser`, `container`
|
|
- [x] 8.2 Job `feature`: PostgreSQL service container (nunca SQLite)
|
|
- [x] 8.3 Job `browser`: build de imagem, servir via FrankenPHP, rodar Pest Browser com locale `pt_BR` e TZ `America/Fortaleza`
|
|
- [x] 8.4 Job `container`: build da imagem final + healthcheck
|
|
- [x] 8.5 Configurar cache seguro de Composer e npm nos jobs
|
|
|
|
## 9. Verificação final e critério de saída
|
|
|
|
- [x] 9.1 Executar `composer quality` localmente e corrigir falhas
|
|
- [x] 9.2 Executar `composer test:browser` (smoke mínimo: home + login)
|
|
- [x] 9.3 Confirmar critério de saída da Fase 0: pipeline CI verde + build de imagem + healthcheck validado no contêiner
|
|
- [x] 9.4 Reportar conclusão no formato SPEC §24 (requisito, alterações, testes, comandos, aceite, pendências)
|