@dewtech/dare-cli 2.11.0 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +5 -4
  2. package/dist/commands/init.d.ts.map +1 -1
  3. package/dist/commands/init.js +35 -7
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/core/types/project.d.ts +3 -0
  6. package/dist/core/types/project.d.ts.map +1 -1
  7. package/dist/utils/project-generator.d.ts +2 -0
  8. package/dist/utils/project-generator.d.ts.map +1 -1
  9. package/dist/utils/project-generator.js +122 -29
  10. package/dist/utils/project-generator.js.map +1 -1
  11. package/dist/utils/stack-bootstrap.d.ts +2 -0
  12. package/dist/utils/stack-bootstrap.d.ts.map +1 -1
  13. package/dist/utils/stack-bootstrap.js +5 -3
  14. package/dist/utils/stack-bootstrap.js.map +1 -1
  15. package/package.json +1 -1
  16. package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -53
  17. package/templates/ide/antigravity/templates/DESIGN-template.md +129 -34
  18. package/templates/ide/antigravity/templates/TASK-SPEC-template.md +100 -43
  19. package/templates/ide/claude/.claude/commands/dare-blueprint.md +87 -81
  20. package/templates/ide/claude/.claude/commands/dare-design.md +45 -31
  21. package/templates/ide/claude/.claude/commands/dare-execute.md +131 -52
  22. package/templates/ide/claude/.claude/commands/dare-security.md +232 -0
  23. package/templates/ide/claude/CLAUDE.md +38 -10
  24. package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -53
  25. package/templates/ide/claude/templates/DESIGN-template.md +129 -34
  26. package/templates/ide/claude/templates/TASK-SPEC-template.md +100 -43
  27. package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +51 -21
  28. package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -18
  29. package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -57
  30. package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -53
  31. package/templates/ide/cursor/templates/DESIGN-template.md +129 -34
  32. package/templates/ide/cursor/templates/TASK-SPEC-template.md +100 -43
@@ -1,18 +1,35 @@
1
- # Comando: /generate-design
2
-
3
- ## Descrição
4
- Este comando inicia o Método DARE (Design) gerando um documento de requisitos a partir de uma ideia inicial.
5
-
6
- ## Instruções para o Cursor Composer
7
-
8
- 1. **Leia a Ideia Inicial:** Analise o prompt fornecido pelo usuário (`$ARGUMENTS`) que descreve o que ele deseja construir.
9
- 2. **Leia o Template:** Utilize a estrutura definida em `templates/DESIGN-template.md`.
10
- 3. **Analise o Contexto Global:** Leia o arquivo `.cursorrules` (ou equivalente na pasta `.cursor/rules/`) para entender a stack técnica do projeto e preencher automaticamente a seção de STACK TÉCNICA.
11
- 4. **Gere o Documento:**
12
- - Preencha o template com as informações extraídas do prompt.
13
- - Organize as funcionalidades de forma clara.
14
- - Identifique possíveis requisitos técnicos implícitos e restrições.
15
- - **Integre Requisitos de Segurança (OWASP):** Adicione obrigatoriamente requisitos de segurança na seção correspondente (ex: Rate Limiting, HTTPS, Proteção contra Força Bruta) baseando-se na skill `skill-security.mdc`.
16
- - Defina claramente o que fica FORA DO ESCOPO para manter o foco da versão.
17
- 5. **Salve o Arquivo:** Crie o arquivo `DARE/DESIGN.md` com o conteúdo gerado.
18
- 6. **Mensagem Final:** Informe ao usuário: "Documento DESIGN.md gerado com sucesso. Por favor, revise e aprove o documento. Quando estiver pronto, execute `/generate-blueprint DARE/DESIGN.md`."
1
+ # Comando: /generate-design
2
+
3
+ ## Descrição
4
+ Inicia o Método DARE (fase Design) gerando `DARE/DESIGN.md` a partir de uma ideia inicial.
5
+
6
+ ## Instruções para o Cursor Composer
7
+
8
+ 1. **Leia o contexto:** `package.json` / `Cargo.toml` / `composer.json` / `go.mod` / `requirements.txt` para identificar a stack atual. Leia `.cursorrules` para entender padrões do projeto. Se `DARE/DESIGN.md` existir, não sobrescreva sem aprovação explícita.
9
+
10
+ 2. **Leia o template:** `templates/DESIGN-template.md` siga a estrutura fielmente.
11
+
12
+ 3. **Gere `DARE/DESIGN.md` com as seções obrigatórias:**
13
+
14
+ - **Descrição** 3 a 5 frases: o que é, qual problema resolve, quem usa
15
+ - **Objetivos e Métricas de Sucesso** tabela numerada (O-01, O-02…) com métrica verificável e meta numérica
16
+ - **Stakeholders** tabela: papel, time, interesse principal
17
+ - **Requisitos Funcionais** tabela numerada (RF-01, RF-02…) com prioridade MUST/SHOULD/COULD e critério de aceite
18
+ - **Requisitos Não-Funcionais** tabela numerada (RNF-01…): performance, disponibilidade, segurança, observabilidade, manutenibilidade
19
+ - **Requisitos de Segurança** — tabela numerada (RS-01…). **Sempre inclua:**
20
+ - RS-01: validação de entrada no servidor (OWASP A03)
21
+ - RS-02: hash de senhas / proteção de dados sensíveis (OWASP A02)
22
+ - RS-03: controle de acesso por recurso (OWASP A01)
23
+ - RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06)
24
+ - RS-05: secrets via variáveis de ambiente — nunca em código
25
+ - Requisitos específicos do domínio do projeto
26
+ - **Stack Técnica** — tabela por camada com versões fixas
27
+ - **Integrações Externas** — tabela: sistema, tipo, protocolo, direção, dados, responsável
28
+ - **Restrições** — prazo, orçamento, técnicas, compliance
29
+ - **Fora do Escopo (v1)** — lista explícita
30
+ - **Riscos e Mitigações** — tabela com probabilidade, impacto e mitigação concreta
31
+ - **Checklist de Aprovação** — checkboxes para revisão humana
32
+
33
+ 4. **Qualidade:** O DESIGN.md deve responder claramente: O QUÊ, POR QUÊ, PARA QUEM, O QUE NÃO e QUAIS RISCOS. Use "[A definir]" para informações não disponíveis, mas nunca omita seções.
34
+
35
+ 5. **Salve** `DARE/DESIGN.md` e informe: _"DESIGN.md gerado. Revise as seções, especialmente os Requisitos de Segurança (RS-*) e Riscos. Quando aprovado, execute `/generate-blueprint`."_
@@ -1,57 +1,245 @@
1
- ---
2
- description: Diretrizes de Segurança baseadas no OWASP Top 10 para todas as fases do DARE
3
- globs: *.md, *.php, *.py, *.go, *.vue, *.js, *.ts
4
- ---
5
- # Diretrizes de Segurança (OWASP Top 10)
6
-
7
- Você é um Especialista em Segurança da Informação (AppSec). Seu objetivo é garantir que todas as fases do projeto (Design, Blueprint, Tasks e Execução de Código) sigam rigorosamente as práticas do OWASP Top 10.
8
-
9
- ## Aplicação nas Fases do DARE
10
-
11
- ### Fase 1: Design (`/generate-design`)
12
- - **Requisitos Não-Funcionais:** Sempre inclua requisitos de segurança explícitos (ex: Rate Limiting, HTTPS obrigatório, senhas fortes).
13
- - **Restrições:** Identifique possíveis vetores de ataque na ideia inicial e adicione restrições para mitigá-los.
14
-
15
- ### Fase 2: Architect (`/generate-blueprint`)
16
- - **Autenticação/Autorização:** Defina claramente como os tokens (JWT/Sanctum) serão armazenados e validados. Nunca permita endpoints sensíveis sem proteção.
17
- - **Modelo de Dados:** Garanta que dados sensíveis (senhas, tokens, PII) sejam hashados ou encriptados no banco de dados.
18
- - **Endpoints:** Adicione middlewares de segurança (ex: CORS, Rate Limit, XSS Protection) na tabela de endpoints.
19
-
20
- ### Fase 3: Tasks (`/generate-tasks`)
21
- - **Validation Gates:** Inclua testes de segurança nas tarefas (ex: testar se um usuário sem permissão recebe 403, testar injeção de SQL nas buscas).
22
- - **Tarefas de Segurança:** Crie tarefas específicas para configurar segurança (ex: Configurar Headers de Segurança, Implementar Rate Limiting).
23
-
24
- ### Fase 4: Execute (`/execute-task`) - Implementação de Código
25
- Sempre aplique as seguintes proteções ao escrever código:
26
-
27
- 1. **A01: Quebra de Controle de Acesso (Broken Access Control)**
28
- - Sempre verifique se o usuário logado tem permissão para acessar/modificar o recurso solicitado (ex: `User::can('update', $post)` ou Policies no Laravel).
29
- - Implemente o princípio do menor privilégio.
30
-
31
- 2. **A02: Falhas Criptográficas (Cryptographic Failures)**
32
- - Nunca armazene senhas em texto plano. Use Bcrypt ou Argon2.
33
- - Não envie dados sensíveis (senhas, tokens) em respostas da API.
34
-
35
- 3. **A03: Injeção (Injection)**
36
- - **SQL Injection:** Sempre use ORMs (Eloquent, SQLAlchemy, GORM) ou Prepared Statements. NUNCA concatene strings em queries SQL.
37
- - **XSS:** Sempre escape a saída de dados no frontend (ex: o Vue já faz isso com `{{ }}`, mas evite `v-html` com dados de usuários).
38
- - **Command Injection:** Valide rigorosamente qualquer entrada que seja passada para o sistema operacional.
39
-
40
- 4. **A04: Design Inseguro (Insecure Design)**
41
- - Valide todas as entradas do usuário no lado do servidor (FormRequests no Laravel, Pydantic no FastAPI).
42
- - Use listas de permissão (allowlists) em vez de listas de bloqueio (blocklists) para validação.
43
-
44
- 5. **A05: Configuração Insegura (Security Misconfiguration)**
45
- - Não exponha stack traces ou erros detalhados em produção (retorne mensagens genéricas de erro 500).
46
- - Desabilite métodos HTTP desnecessários.
47
-
48
- 6. **A07: Falhas de Identificação e Autenticação (Identification and Authentication Failures)**
49
- - Implemente proteção contra força bruta (Rate Limiting) em endpoints de login.
50
- - Invalide tokens de sessão no logout.
51
-
52
- 7. **A08: Falhas na Integridade de Software e Dados (Software and Data Integrity Failures)**
53
- - Não confie em dados enviados pelo cliente sem validação.
54
- - Assine digitalmente JWTs com chaves fortes e secretas.
55
-
56
- 8. **A10: Falsificação de Solicitação do Lado do Servidor (SSRF)**
57
- - Se a aplicação fizer requisições HTTP para URLs fornecidas pelo usuário, valide a URL e bloqueie acessos à rede interna (ex: `127.0.0.1`, `localhost`, metadados da AWS).
1
+ ---
2
+ description: Diretrizes de Segurança OWASP Top 10, Supply Chain, Segredos e Dependências Vulneráveis para todas as fases do DARE
3
+ globs: *.md, *.php, *.py, *.go, *.vue, *.js, *.ts, *.rs, *.toml, *.yaml, *.yml
4
+ ---
5
+
6
+ # Diretrizes de Segurança DARE
7
+
8
+ Você é um Especialista em AppSec. Garanta que **Design → Blueprint → Tasks → Execução** sigam rigorosamente as práticas a seguir.
9
+
10
+ ---
11
+
12
+ ## Aplicação nas Fases do DARE
13
+
14
+ ### Fase 1 — Design (`/generate-design` / `/dare-design`)
15
+
16
+ - **Requisitos de segurança obrigatórios** (seção RS-*):
17
+ - RS-01: validação de entrada (OWASP A03)
18
+ - RS-02: hash de senhas / proteção de dados sensíveis (OWASP A02)
19
+ - RS-03: controle de acesso por recurso (OWASP A01)
20
+ - RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06)
21
+ - RS-05: secrets via variáveis de ambiente nunca em código
22
+ - Identifique vetores de ataque na ideia inicial e adicione mitigações em **Riscos**
23
+
24
+ ### Fase 2 Architect (`/generate-blueprint` / `/dare-blueprint`)
25
+
26
+ - Endpoints da API: inclua coluna `Auth` (JWT/apiKey/público) e middleware de rate limiting
27
+ - Modelo de dados: marque campos sensíveis (PII, tokens, hashes) e como são protegidos
28
+ - Fases do plano: inclua **Fase N-1 = Auditoria de Segurança e Dependências** com critério de DONE explícito
29
+ - Validation gates por stack devem incluir o comando de auditoria de dependências
30
+
31
+ ### Fase 3 Tasks (`/generate-tasks`)
32
+
33
+ - Toda task que adiciona dependência externa validation gate inclui `npm audit` / `cargo audit` / `pip-audit` / `composer audit`
34
+ - Crie task dedicada para: headers de segurança HTTP, rate limiting, scan de secrets
35
+ - Seção "Considerações de Segurança" obrigatória em cada `EXECUTION/task-*.md`
36
+
37
+ ### Fase 4 Execute (`/execute-task`)
38
+
39
+ Aplique as proteções abaixo ao implementar qualquer código.
40
+
41
+ ---
42
+
43
+ ## OWASP Top 10 — Implementação
44
+
45
+ ### A01 Broken Access Control
46
+
47
+ - Verifique permissão no **recurso**, não só na rota: `user.can('update', post)` / `authorize('update', $post)` / `check_permission(user, resource)`
48
+ - Princípio do menor privilégio: tokens têm escopos mínimos necessários
49
+ - Nunca exponha IDs sequenciais em URLs para recursos privados use UUID ou ULID
50
+ - Multi-tenant: **sempre** filtre por `tenant_id` / `org_id` em toda query
51
+
52
+ ```ts
53
+ // certo verifica ownership antes de retornar
54
+ const post = await db.post.findFirst({ where: { id, authorId: session.userId } });
55
+ if (!post) throw new ForbiddenError();
56
+
57
+ // errado qualquer usuário autenticado acessa qualquer post
58
+ const post = await db.post.findUnique({ where: { id } });
59
+ ```
60
+
61
+ ### A02 — Cryptographic Failures
62
+
63
+ - Senhas: **Argon2id** (preferido) ou Bcrypt (min cost 12) — nunca MD5/SHA1/SHA256 para senhas
64
+ - Dados sensíveis em repouso: criptografar PII com AES-256-GCM
65
+ - Dados em trânsito: HTTPS obrigatório; HSTS header em produção
66
+ - Nunca logue senha, token, chave de API, número de cartão, CPF completo
67
+ - JWT: assine com RS256 (chave assimétrica) para tokens públicos; HS256 + segredo forte (≥ 256 bits) para internos
68
+
69
+ ```rust
70
+ // ✅ Rust — Argon2 via argon2 crate
71
+ use argon2::{Argon2, PasswordHash, PasswordHasher, PasswordVerifier};
72
+ let hash = Argon2::default().hash_password(password.as_bytes(), &salt)?;
73
+ ```
74
+
75
+ ### A03 — Injection
76
+
77
+ **SQL Injection:**
78
+ ```python
79
+ # ✅ SQLAlchemy — parametrizado
80
+ result = db.execute(select(User).where(User.email == email))
81
+
82
+ # ❌ nunca
83
+ db.execute(f"SELECT * FROM users WHERE email = '{email}'")
84
+ ```
85
+
86
+ **Command Injection:**
87
+ ```go
88
+ // ✅ Go — lista de args, não shell string
89
+ cmd := exec.Command("convert", inputFile, outputFile)
90
+
91
+ // ❌ nunca
92
+ exec.Command("sh", "-c", "convert "+userInput)
93
+ ```
94
+
95
+ **XSS:** escape de saída no frontend; `Content-Security-Policy` no backend; evite `innerHTML` / `dangerouslySetInnerHTML` com dados do usuário.
96
+
97
+ **Prompt Injection (IA):** se o projeto processa entradas de usuários em prompts LLM:
98
+ - Separe instrução do sistema e dados do usuário por delimitadores claros
99
+ - Valide e sanitize a entrada antes de inserir no prompt
100
+ - Nunca confie em output do LLM como código a ser executado sem sandboxing
101
+
102
+ ### A04 — Insecure Design
103
+
104
+ - Valide **no servidor** sempre, mesmo que o frontend já valide
105
+ - Allowlists > blocklists para validação de campos, tipos de arquivo, domínios
106
+ - Implemente rate limiting antes de qualquer lógica de negócio em endpoints públicos
107
+
108
+ ### A05 — Security Misconfiguration
109
+
110
+ - Stack traces e erros detalhados: **apenas em desenvolvimento** — produção retorna mensagem genérica
111
+ - Headers de segurança obrigatórios em produção:
112
+ ```
113
+ Strict-Transport-Security: max-age=31536000; includeSubDomains
114
+ X-Frame-Options: DENY
115
+ X-Content-Type-Options: nosniff
116
+ Content-Security-Policy: default-src 'self'
117
+ Referrer-Policy: strict-origin-when-cross-origin
118
+ Permissions-Policy: camera=(), microphone=(), geolocation=()
119
+ ```
120
+ - CORS: nunca `Access-Control-Allow-Origin: *` para endpoints autenticados
121
+ - Desabilite métodos HTTP desnecessários (TRACE, OPTIONS em APIs simples)
122
+
123
+ ### A06 — Vulnerable and Outdated Components ← **crítico para Ralph Loop**
124
+
125
+ **Comandos de auditoria por stack:**
126
+
127
+ ```bash
128
+ # Node.js / npm — rodar antes de todo commit com novas deps
129
+ npm audit --audit-level=high
130
+ npm audit fix # corrige automaticamente quando possível
131
+
132
+ # Rust / Cargo
133
+ cargo install cargo-audit # uma vez
134
+ cargo audit # detecta CVEs no RustSec Advisory DB
135
+ cargo update # bumpa versões compatíveis
136
+
137
+ # Python
138
+ pip install pip-audit
139
+ pip-audit # CVEs via OSV + PyPI
140
+ pip-audit --fix # auto-fix quando possível
141
+
142
+ # PHP / Composer
143
+ composer audit # nativo desde Composer 2.4
144
+ composer update --with-all-dependencies [pacote] # fix pontual
145
+
146
+ # Go
147
+ go list -json -m all | nancy sleuth # ou govulncheck
148
+ govulncheck ./... # ferramenta oficial Google
149
+
150
+ # Docker images
151
+ docker scout cves [imagem] # se Docker Scout disponível
152
+ ```
153
+
154
+ **Critério inegociável:** nenhuma dependência com CVE de nível **HIGH** ou **CRITICAL** pode entrar em produção sem justificativa documentada e plano de upgrade.
155
+
156
+ ### A07 — Authentication Failures
157
+
158
+ - Rate limiting no endpoint de login: máx 5 tentativas / 15 min por IP + por usuário
159
+ - Tokens JWT: `exp` máx 15 min para access token; refresh token com rotação
160
+ - Logout: invalide refresh token no servidor (não confie só no lado cliente)
161
+ - Senhas: mínimo 12 caracteres; bloquear senhas da lista HaveIBeenPwned
162
+ - MFA: ofereça TOTP (RFC 6238) para contas com acesso a dados sensíveis
163
+
164
+ ### A08 — Software and Data Integrity
165
+
166
+ - Valide assinatura / checksum de artefatos externos antes de usar
167
+ - Nunca confie em dados enviados pelo cliente para decisões de autorização
168
+ - CI/CD: pins de versão em actions (`actions/checkout@v4` não `@main`)
169
+ - Lockfiles (`package-lock.json`, `Cargo.lock`, `poetry.lock`) devem ser commitados
170
+
171
+ ### A09 — Security Logging and Monitoring
172
+
173
+ Logue (estruturado JSON, sem dados sensíveis):
174
+ - Autenticação: login OK/FAIL, logout, refresh, MFA challenge
175
+ - Autorização: acesso negado (403) com recurso e userId
176
+ - Erros 5xx em produção com trace-id (sem stack trace completo)
177
+ - Operações destrutivas: delete, disable, role change
178
+
179
+ Nunca logue: senhas, tokens, chaves de API, números de cartão, CPF/SSN completo.
180
+
181
+ ### A10 — SSRF
182
+
183
+ - Se a aplicação faz requisições para URLs fornecidas pelo usuário:
184
+ - Valide contra allowlist de domínios
185
+ - Bloqueie IPs privados (`127.x`, `10.x`, `172.16-31.x`, `192.168.x`, `169.254.x`)
186
+ - Bloqueie acesso a metadados de cloud (`169.254.169.254`)
187
+ - Use timeout agressivo (máx 5s) e sem redirects automáticos
188
+
189
+ ---
190
+
191
+ ## Segredos e Supply Chain
192
+
193
+ ### Nunca em código
194
+
195
+ ```bash
196
+ # Padrões proibidos em commits — configure pre-commit hook ou git-secrets:
197
+ password = "..."
198
+ api_key = "..."
199
+ secret_key = "..."
200
+ AWS_SECRET_ACCESS_KEY = "..."
201
+ DATABASE_URL = "postgres://user:password@..."
202
+ ```
203
+
204
+ ### Gestão de segredos
205
+
206
+ - Desenvolvimento: arquivo `.env` (no `.gitignore`) com `.env.example` sem valores reais
207
+ - CI/CD: variáveis de ambiente ou secrets do pipeline (GitHub Actions Secrets, etc.)
208
+ - Produção: vault (HashiCorp Vault, AWS Secrets Manager, GCP Secret Manager)
209
+ - Rotação: tokens de serviço rotacionados a cada 90 dias
210
+
211
+ ### Verificação pre-commit (recomendado)
212
+
213
+ ```bash
214
+ # Instalar detect-secrets
215
+ pip install detect-secrets
216
+ detect-secrets scan > .secrets.baseline
217
+ detect-secrets audit .secrets.baseline
218
+
219
+ # Ou git-secrets
220
+ git secrets --install
221
+ git secrets --register-aws
222
+ ```
223
+
224
+ ---
225
+
226
+ ## Validation Gates de Segurança no Ralph Loop
227
+
228
+ Adicione ao ciclo de cada task que mexe em dependências ou configuração:
229
+
230
+ ```bash
231
+ # 1. Auditoria de dependências (obrigatório se houve mudança em deps)
232
+ npm audit --audit-level=high # Node
233
+ cargo audit # Rust
234
+ pip-audit # Python
235
+ composer audit # PHP
236
+
237
+ # 2. Scan de secrets (obrigatório em tasks de config/infra/CI)
238
+ detect-secrets scan --baseline .secrets.baseline
239
+
240
+ # 3. Headers de segurança (para tasks de configuração de servidor)
241
+ # Verificar manualmente ou com curl:
242
+ curl -I https://staging.example.com | grep -E "Strict-Transport|X-Frame|X-Content|Content-Security"
243
+ ```
244
+
245
+ > **Gate obrigatório:** CVE HIGH/CRITICAL nas dependências = task **FAILED** até corrigi-las.
@@ -1,53 +1,193 @@
1
- # BLUEPRINT DE IMPLEMENTAÇÃO: [Nome do Projeto]
2
-
3
- ## 1. VISÃO GERAL DA ARQUITETURA
4
- [Descrição da arquitetura do sistema: Monolito modular, Microserviços, Hexagonal, etc.]
5
- [Diagrama em formato Mermaid se aplicável]
6
-
7
- ## 2. STACK TÉCNICA DEFINIDA
8
- - **Linguagem:** [ex: PHP 8.3]
9
- - **Framework:** [ex: Laravel 11.x]
10
- - **Banco de Dados:** [ex: PostgreSQL 16.x]
11
- - **Pacotes Essenciais:** [Lista de dependências do composer/npm]
12
-
13
- ## 3. MODELO DE DADOS
14
- [Entidades principais, relacionamentos e tipos de dados]
15
- [Exemplo de Migration Laravel ou Model Pydantic/Go Struct]
16
-
17
- ## 4. ESTRUTURA DE PASTAS E ARQUIVOS
18
- [Árvore de diretórios completa focando nos arquivos que serão criados/modificados]
19
- ```text
20
- app/
21
- ├── Http/
22
- │ ├── Controllers/
23
- │ └── Requests/
24
- ├── Models/
25
- ├── Services/
26
- └── ...
27
- ```
28
-
29
- ## 5. ENDPOINTS DA API
30
- | Método | Endpoint | Controller@Method | Descrição | Request Body | Response | Auth |
31
- |---|---|---|---|---|---|---|
32
- | POST | /api/v1/users | UserController@store | Cria usuário | {name, email, pass} | {id, token} | Não |
33
- | GET | /api/v1/users | UserController@index | Lista usuários | - | [{id, name}] | Sim |
34
-
35
- ## 6. CÓDIGO-BASE / PADRÕES A SEGUIR
36
- [Trechos de código críticos que definem o padrão do projeto]
37
- [Exemplo: Interface de repositório, FormRequest base, Trait de respostas de API]
38
-
39
- ## 7. PLANO DE EXECUÇÃO (FASES)
40
- - **Fase 1:** Setup do projeto e Banco de Dados (Migrations/Seeds)
41
- - **Fase 2:** Autenticação e Autorização (Middlewares/Policies)
42
- - **Fase 3:** [Módulo Principal 1]
43
- - **Fase 4:** [Módulo Principal 2]
44
- - **Fase N:** Testes e Documentação
45
-
46
- ## 8. COMANDOS DE SETUP
47
- [Todos os comandos para rodar o projeto do zero, ex: docker-compose up, php artisan migrate, etc]
48
-
49
- ## 9. CRITÉRIOS DE SUCESSO GERAIS
50
- - [ ] O código passa em todos os testes (`php artisan test`)
51
- - [ ] Não há erros de linting (`./vendor/bin/pint`)
52
- - [ ] A API responde conforme os endpoints definidos
53
- - [ ] A documentação Swagger/OpenAPI está atualizada
1
+ # BLUEPRINT: [Nome do Projeto]
2
+
3
+ > **Gerado a partir de:** `DARE/DESIGN.md` v[X.Y]
4
+ > **Data:** YYYY-MM-DD | **Status:** DRAFT APROVADO
5
+
6
+ ---
7
+
8
+ ## 1. VISÃO GERAL DA ARQUITETURA
9
+
10
+ [Descrição da arquitetura: Monolito modular / Microserviços / Hexagonal / Clean Architecture]
11
+
12
+ ```mermaid
13
+ graph TD
14
+ A[Cliente] --> B[API Gateway / BFF]
15
+ B --> C[Auth Service]
16
+ B --> D[Core Service]
17
+ D --> E[(PostgreSQL)]
18
+ D --> F[(Redis)]
19
+ ```
20
+
21
+ **Decisões arquiteturais principais:**
22
+
23
+ | Decisão | Escolha | Justificativa |
24
+ |---------|---------|---------------|
25
+ | Padrão de módulos | [ex: Hexagonal] | [motivo] |
26
+ | Comunicação inter-serviços | [ex: REST síncrono] | [motivo] |
27
+ | Autenticação | [ex: JWT stateless] | [motivo] |
28
+
29
+ ---
30
+
31
+ ## 2. STACK TÉCNICA DEFINIDA
32
+
33
+ | Camada | Tecnologia | Versão | Papel |
34
+ |--------|-----------|--------|-------|
35
+ | Linguagem | | | |
36
+ | Framework | | | |
37
+ | Banco principal | | | |
38
+ | Cache / filas | | | |
39
+ | Frontend | | | |
40
+ | Container | Docker | latest | Dev + CI |
41
+ | Observabilidade | | | Logs, métricas, traces |
42
+
43
+ ---
44
+
45
+ ## 3. ESTRUTURA DE PASTAS E ARQUIVOS
46
+
47
+ ```text
48
+ [nome-do-projeto]/
49
+ ├── [diretório principal]/
50
+ │ ├── [módulo 1]/
51
+ │ └── [módulo 2]/
52
+ ├── DARE/
53
+ │ ├── DESIGN.md
54
+ │ ├── BLUEPRINT.md
55
+ │ ├── TASKS.md
56
+ │ ├── dare-dag.yaml
57
+ │ └── EXECUTION/
58
+ ├── Dockerfile
59
+ ├── docker-compose.yml
60
+ └── [arquivo de configuração principal]
61
+ ```
62
+
63
+ > **Constraints de workspace (Rust):** se Cargo workspace, NÃO definir `[build] target` global no `.cargo/config.toml` (quebra crates WASM + native). Cada crate declara suas próprias features Leptos.
64
+
65
+ ---
66
+
67
+ ## 4. MODELO DE DADOS
68
+
69
+ ### Entidades principais
70
+
71
+ ```
72
+ [Entidade 1]
73
+ - id: UUID (PK)
74
+ - [campo]: [tipo] [restrições]
75
+ - created_at, updated_at
76
+
77
+ [Entidade 2]
78
+ - id: UUID (PK)
79
+ - [entidade_1_id]: FK → Entidade1
80
+ ```
81
+
82
+ ### Relacionamentos
83
+
84
+ | De | Para | Cardinalidade | Via |
85
+ |----|------|---------------|-----|
86
+ | [Entidade 1] | [Entidade 2] | 1:N | FK |
87
+
88
+ ---
89
+
90
+ ## 5. CONTRATOS DE API
91
+
92
+ | Método | Endpoint | Auth | Request Body | Response | Status codes |
93
+ |--------|----------|------|-------------|----------|--------------|
94
+ | POST | `/api/v1/[recurso]` | Não | `{campo1, campo2}` | `{id, ...}` | 201, 400, 422 |
95
+ | GET | `/api/v1/[recurso]` | JWT | — | `[{id, ...}]` | 200, 401 |
96
+ | GET | `/api/v1/[recurso]/:id` | JWT | — | `{id, ...}` | 200, 401, 404 |
97
+ | PUT | `/api/v1/[recurso]/:id` | JWT + Owner | `{campos}` | `{id, ...}` | 200, 401, 403, 404 |
98
+ | DELETE | `/api/v1/[recurso]/:id` | JWT + Admin | — | `{}` | 204, 401, 403, 404 |
99
+
100
+ ---
101
+
102
+ ## 6. PLANO DE EXECUÇÃO (FASES)
103
+
104
+ ### Fase 1: Containerização e Setup ← **SEMPRE PRIMEIRA**
105
+ **Critério de DONE:** `docker compose up -d` sobe sem erros; healthcheck `/health` retorna 200.
106
+ - Dockerfile multi-stage
107
+ - docker-compose.yml com todos os serviços
108
+ - Variáveis de ambiente via `.env.example`
109
+
110
+ ### Fase 2: Banco de Dados e Migrations
111
+ **Critério de DONE:** migrations rodando; schema validado; seeds de desenvolvimento funcionando.
112
+ - Migrations / schema inicial
113
+ - Seeds de desenvolvimento
114
+ - Índices para queries críticas
115
+
116
+ ### Fase 3: Autenticação e Autorização
117
+ **Critério de DONE:** login retorna JWT; endpoint protegido rejeita token inválido com 401; acesso sem permissão retorna 403.
118
+ - Registro, login, refresh, logout
119
+ - Middleware de autenticação
120
+ - Sistema de permissões (RBAC/ACL)
121
+
122
+ ### Fase 4: [Módulo de negócio principal]
123
+ **Critério de DONE:** [comportamento testável esperado].
124
+ - [Descrever aqui]
125
+
126
+ ### Fase N-1: Auditoria de Segurança e Dependências
127
+ **Critério de DONE:** `[audit-cmd]` sem CVE HIGH/CRITICAL; security headers presentes; sem secrets em código.
128
+ - `npm audit --audit-level=high` / `cargo audit` / `pip-audit` / `composer audit`
129
+ - Headers HTTP de segurança (HSTS, CSP, X-Frame-Options)
130
+ - Scan de secrets no repositório
131
+
132
+ ### Fase N: Observabilidade e Documentação
133
+ **Critério de DONE:** logs estruturados em JSON; endpoint `/metrics` ou equivalente; documentação API gerada.
134
+ - Logs estruturados (JSON) com trace-id
135
+ - Métricas de negócio e técnicas
136
+ - Documentação API (OpenAPI / Swagger)
137
+
138
+ ---
139
+
140
+ ## 7. VALIDAÇÃO E SEGURANÇA
141
+
142
+ ### Validation Gates (Ralph Loop) por stack
143
+
144
+ | Stack | Build | Test | Lint/Audit |
145
+ |-------|-------|------|------------|
146
+ | Rust/Axum | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` |
147
+ | Node/NestJS | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` |
148
+ | Python/FastAPI | `python -m py_compile` | `pytest` | `ruff check . && pip-audit` |
149
+ | PHP/Laravel | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` |
150
+ | Go | `go build ./...` | `go test ./...` | `golangci-lint run` |
151
+
152
+ ### Controles de segurança obrigatórios
153
+
154
+ - [ ] Rate limiting em endpoints de autenticação e públicos
155
+ - [ ] Input validation no servidor para todos os endpoints
156
+ - [ ] Dados sensíveis (PII, tokens, senhas) nunca em logs
157
+ - [ ] Todas as dependências sem CVE HIGH/CRITICAL (ver Fase N-1)
158
+ - [ ] HTTP Security Headers em produção
159
+ - [ ] Secrets apenas em variáveis de ambiente / vault
160
+
161
+ ---
162
+
163
+ ## 8. ESTRATÉGIA DE TESTES
164
+
165
+ | Tipo | Ferramenta | Cobertura mínima | O que cobre |
166
+ |------|-----------|------------------|-------------|
167
+ | Unitários | [jest/pytest/cargo test] | 80 % das funções críticas | Lógica de negócio isolada |
168
+ | Integração | [supertest/httpx/reqwest] | Todos os endpoints | Contrato da API |
169
+ | Segurança | [npm audit/cargo audit/pip-audit] | 100 % deps | CVEs conhecidos |
170
+ | E2E | [playwright/cypress] se frontend | Fluxo principal | Jornada do usuário |
171
+
172
+ ---
173
+
174
+ ## 9. ESTRATÉGIA DE DEPLOY
175
+
176
+ | Ambiente | Branch | Trigger | Infra |
177
+ |----------|--------|---------|-------|
178
+ | `dev` | `develop` | Push automático | [ex: Docker local / Railway] |
179
+ | `staging` | `main` | PR merge | [ex: OKE / ECS / Fly.io] |
180
+ | `prod` | tag `v*.*.*` | Manual | [ex: OKE / ECS / Fly.io] |
181
+
182
+ ---
183
+
184
+ ## 10. CHECKLIST DE APROVAÇÃO DO BLUEPRINT
185
+
186
+ - [ ] Arquitetura revisada e aprovada
187
+ - [ ] Modelo de dados validado
188
+ - [ ] Contratos de API definidos e completos
189
+ - [ ] Fases com critérios de DONE claros
190
+ - [ ] Validation gates por stack definidos
191
+ - [ ] Controles de segurança mapeados
192
+ - [ ] Estratégia de testes cobrindo todos os tipos
193
+ - [ ] DAG de tasks gerado (`dare-dag.yaml`)