create-genia-os 1.0.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 (86) hide show
  1. package/bin/index.js +210 -0
  2. package/package.json +39 -0
  3. package/template/.claude/CLAUDE.md +215 -0
  4. package/template/.claude/agent-memory/analyst/MEMORY.md +20 -0
  5. package/template/.claude/agent-memory/architect/MEMORY.md +20 -0
  6. package/template/.claude/agent-memory/dev/MEMORY.md +20 -0
  7. package/template/.claude/agent-memory/devops/MEMORY.md +20 -0
  8. package/template/.claude/agent-memory/pm/MEMORY.md +20 -0
  9. package/template/.claude/agent-memory/po/MEMORY.md +20 -0
  10. package/template/.claude/agent-memory/qa/MEMORY.md +20 -0
  11. package/template/.claude/agent-memory/reviewer/MEMORY.md +20 -0
  12. package/template/.claude/agent-memory/sm/MEMORY.md +20 -0
  13. package/template/.claude/hooks/enforce-git-push-authority.py +70 -0
  14. package/template/.claude/hooks/precompact-session-digest.cjs +87 -0
  15. package/template/.claude/hooks/sql-governance.py +65 -0
  16. package/template/.claude/hooks/synapse-engine.cjs +122 -0
  17. package/template/.claude/hooks/write-path-validation.py +59 -0
  18. package/template/.claude/rules/agent-authority.md +39 -0
  19. package/template/.claude/rules/agent-handoff.md +71 -0
  20. package/template/.claude/rules/agent-memory.md +61 -0
  21. package/template/.claude/rules/ids-principles.md +52 -0
  22. package/template/.claude/rules/mcp-usage.md +49 -0
  23. package/template/.claude/rules/story-lifecycle.md +87 -0
  24. package/template/.claude/rules/workflow-execution.md +68 -0
  25. package/template/.claude/settings.json +58 -0
  26. package/template/.claude/settings.local.json +14 -0
  27. package/template/.genia/CONSTITUTION.md +129 -0
  28. package/template/.genia/contexts/api-patterns.md +134 -0
  29. package/template/.genia/contexts/nextjs-react.md +210 -0
  30. package/template/.genia/contexts/projeto.md +18 -0
  31. package/template/.genia/contexts/supabase.md +152 -0
  32. package/template/.genia/contexts/whatsapp-cloud.md +176 -0
  33. package/template/.genia/core-config.yaml +192 -0
  34. package/template/.genia/development/agents/analyst.md +138 -0
  35. package/template/.genia/development/agents/architect.md +171 -0
  36. package/template/.genia/development/agents/dev.md +160 -0
  37. package/template/.genia/development/agents/devops.md +200 -0
  38. package/template/.genia/development/agents/pm.md +142 -0
  39. package/template/.genia/development/agents/po.md +165 -0
  40. package/template/.genia/development/agents/qa.md +183 -0
  41. package/template/.genia/development/agents/reviewer.md +198 -0
  42. package/template/.genia/development/agents/sm.md +230 -0
  43. package/template/.genia/development/checklists/architecture-review.md +189 -0
  44. package/template/.genia/development/checklists/pre-commit.md +205 -0
  45. package/template/.genia/development/checklists/pre-deploy.md +230 -0
  46. package/template/.genia/development/checklists/qa-gate.md +216 -0
  47. package/template/.genia/development/checklists/story-dod.md +155 -0
  48. package/template/.genia/development/tasks/code-review.md +197 -0
  49. package/template/.genia/development/tasks/criar-prd.md +170 -0
  50. package/template/.genia/development/tasks/criar-spec.md +188 -0
  51. package/template/.genia/development/tasks/criar-story.md +185 -0
  52. package/template/.genia/development/tasks/debug-sistematico.md +230 -0
  53. package/template/.genia/development/tasks/dev-implement.md +199 -0
  54. package/template/.genia/development/tasks/qa-review.md +224 -0
  55. package/template/.genia/development/workflows/brownfield.md +178 -0
  56. package/template/.genia/development/workflows/delivery.md +208 -0
  57. package/template/.genia/development/workflows/development.md +189 -0
  58. package/template/.genia/development/workflows/greenfield.md +166 -0
  59. package/template/.genia/development/workflows/planning.md +167 -0
  60. package/template/.genia/development/workflows/qa-loop.md +179 -0
  61. package/template/.genia/development/workflows/spec-pipeline.md +192 -0
  62. package/template/.genia/development/workflows/story-development-cycle.md +252 -0
  63. package/template/.genia/guidelines/clean-code.md +98 -0
  64. package/template/.genia/guidelines/testing.md +176 -0
  65. package/template/.genia/skills/design/canvas-design.md +109 -0
  66. package/template/.genia/skills/design/frontend-design.md +140 -0
  67. package/template/.genia/skills/dev/mcp-builder.md +172 -0
  68. package/template/.genia/skills/dev/webapp-testing.md +150 -0
  69. package/template/.genia/skills/documents/docx.md +153 -0
  70. package/template/.genia/skills/documents/pdf.md +134 -0
  71. package/template/.genia/skills/documents/pptx.md +118 -0
  72. package/template/.genia/skills/documents/xlsx.md +140 -0
  73. package/template/.synapse/agent-analyst +8 -0
  74. package/template/.synapse/agent-architect +8 -0
  75. package/template/.synapse/agent-dev +8 -0
  76. package/template/.synapse/agent-devops +8 -0
  77. package/template/.synapse/agent-pm +8 -0
  78. package/template/.synapse/agent-po +7 -0
  79. package/template/.synapse/agent-qa +8 -0
  80. package/template/.synapse/agent-reviewer +7 -0
  81. package/template/.synapse/agent-sm +7 -0
  82. package/template/.synapse/constitution +7 -0
  83. package/template/.synapse/context +8 -0
  84. package/template/.synapse/global +8 -0
  85. package/template/.synapse/manifest +14 -0
  86. package/template/README.md +53 -0
@@ -0,0 +1,87 @@
1
+ # Ciclo de Vida de Stories — GEN.IA OS
2
+
3
+ ## Estados
4
+
5
+ ```
6
+ Draft → Ready → InProgress → InReview → Done
7
+ ↘ Blocked
8
+ ```
9
+
10
+ ## Responsabilidades por Estado
11
+
12
+ | Estado | Responsável | O que acontece |
13
+ |--------|-------------|----------------|
14
+ | **Draft** | @sm | Cria story com template padrão |
15
+ | **Ready** | @po | Valida com checklist 10 pontos |
16
+ | **InProgress** | @dev | Implementa o código |
17
+ | **InReview** | @qa + @reviewer | Testa e revisa código |
18
+ | **Done** | @devops | Faz push/PR; @pm atualiza backlog |
19
+ | **Blocked** | agente atual | Documenta blocker e escalona |
20
+
21
+ ## Checklist de Validação — @po (10 pontos obrigatórios)
22
+
23
+ - [ ] Título claro e acionável (verbo + objeto)
24
+ - [ ] Formato: "Como [persona] quero [ação] para [benefício]"
25
+ - [ ] Acceptance criteria definidos (mínimo 3 critérios)
26
+ - [ ] Tasks técnicas listadas (mínimo 2 tasks)
27
+ - [ ] Dependências de outras stories mapeadas
28
+ - [ ] Estimativa de esforço definida (P/M/G/XG)
29
+ - [ ] Nome da branch definido: `tipo/STORY-NNN-slug`
30
+ - [ ] Arquivos a criar/modificar listados
31
+ - [ ] Testes necessários identificados
32
+ - [ ] Riscos e pontos de atenção documentados
33
+
34
+ **Story com menos de 8 pontos = REJEITADA pelo @po**
35
+
36
+ ## Localização das Stories
37
+
38
+ ```
39
+ docs/stories/STORY-[NNN]-[slug].md
40
+ ```
41
+
42
+ Exemplo: `docs/stories/STORY-001-autenticacao-usuario.md`
43
+
44
+ ## Atualização de Status na Story
45
+
46
+ Sempre atualizar o cabeçalho quando mudar de estado:
47
+
48
+ ```markdown
49
+ **Status:** InProgress
50
+ **Agente:** @dev
51
+ **Atualizado:** 2026-02-24
52
+ ```
53
+
54
+ ## Template de Story
55
+
56
+ ```markdown
57
+ # STORY-NNN — Título da Story
58
+
59
+ **Status:** Draft
60
+ **Agente:** @sm
61
+ **Criado:** YYYY-MM-DD
62
+ **Estimativa:** M
63
+
64
+ ## Descrição
65
+ Como [persona] quero [ação] para [benefício].
66
+
67
+ ## Acceptance Criteria
68
+ - [ ] AC1: ...
69
+ - [ ] AC2: ...
70
+ - [ ] AC3: ...
71
+
72
+ ## Tasks Técnicas
73
+ - [ ] Task 1: ...
74
+ - [ ] Task 2: ...
75
+
76
+ ## Branch
77
+ `feat/STORY-NNN-slug`
78
+
79
+ ## Arquivos Envolvidos
80
+ - `src/...`
81
+
82
+ ## Dependências
83
+ - STORY-XXX (se houver)
84
+
85
+ ## Riscos
86
+ - ...
87
+ ```
@@ -0,0 +1,68 @@
1
+ # Execução de Workflows — GEN.IA OS
2
+
3
+ ## Seleção de Workflow
4
+
5
+ | Situação | Workflow |
6
+ |----------|----------|
7
+ | Projeto do zero | greenfield → spec-pipeline → SDC |
8
+ | Evoluir sistema existente | brownfield → spec-pipeline → SDC |
9
+ | Nova feature isolada | spec-pipeline → SDC |
10
+ | Corrigir bug | debug-sistematico → SDC |
11
+ | Sprint completa | planning → development → delivery |
12
+
13
+ ## Chains Principais
14
+
15
+ **1. Spec Pipeline** (quando)
16
+ ```
17
+ @analyst briefing → @pm PRD → @architect SPEC → @po aprovação
18
+ ```
19
+
20
+ **2. Story Development Cycle (SDC)** (core do desenvolvimento)
21
+ ```
22
+ @sm draft → @po valida → @dev implementa → @qa revisa → @reviewer code review → @devops push/PR
23
+ ```
24
+
25
+ **3. QA Loop** (iterativo, máx 5x)
26
+ ```
27
+ @qa revisa → @dev corrige → @qa re-revisa → (aprovado?) → @reviewer
28
+ ```
29
+
30
+ **4. Delivery**
31
+ ```
32
+ @pm decisão → @devops deploy → @pm valida → @pm comunica
33
+ ```
34
+
35
+ ## Princípio Task-First
36
+
37
+ Antes de executar qualquer ação, identificar qual task em `.genia/development/tasks/` se aplica:
38
+ - Criar PRD → usar `criar-prd.md`
39
+ - Criar SPEC → usar `criar-spec.md`
40
+ - Criar story → usar `criar-story.md`
41
+ - Implementar → usar `dev-implement.md`
42
+ - Revisar QA → usar `qa-review.md`
43
+ - Debug → usar `debug-sistematico.md`
44
+ - Code review → usar `code-review.md`
45
+
46
+ ## Estado de Workflow
47
+
48
+ Ao iniciar workflow de múltiplas fases, criar registro em:
49
+ `.genia/session/workflow-state.md`
50
+
51
+ ```markdown
52
+ # Workflow State
53
+ Workflow: spec-pipeline
54
+ Fase atual: 2 — PRD
55
+ Agente: @pm
56
+ Projeto: [nome]
57
+ Iniciado: YYYY-MM-DD
58
+ Próximo: @architect (SPEC-TECNICO)
59
+ ```
60
+
61
+ ## Complexidade e Estimativas
62
+
63
+ | Classe | Esforço | Uso |
64
+ |--------|---------|-----|
65
+ | P (Pequeno) | < 2h | Bug fix, texto, config |
66
+ | M (Médio) | 2-8h | Feature simples, CRUD |
67
+ | G (Grande) | 1-3 dias | Feature complexa, integração |
68
+ | XG (Extra Grande) | > 3 dias | Epic, refatoração grande |
@@ -0,0 +1,58 @@
1
+ {
2
+ "permissions": {
3
+ "deny": [
4
+ "Bash(git push --force*)",
5
+ "Bash(rm -rf .genia/CONSTITUTION.md)",
6
+ "Bash(rm -rf .genia/development/workflows/*)",
7
+ "Bash(rm -rf .genia/development/tasks/*)",
8
+ "Bash(rm -rf .claude/hooks/*)",
9
+ "Bash(rm -rf .claude/rules/*)"
10
+ ]
11
+ },
12
+ "hooks": {
13
+ "UserPromptSubmit": [
14
+ {
15
+ "hooks": [
16
+ {
17
+ "type": "command",
18
+ "command": "bash -c \"cd \\\"$(git rev-parse --show-toplevel)\\\" && node .claude/hooks/synapse-engine.cjs\""
19
+ }
20
+ ]
21
+ }
22
+ ],
23
+ "PreCompact": [
24
+ {
25
+ "hooks": [
26
+ {
27
+ "type": "command",
28
+ "command": "bash -c \"cd \\\"$(git rev-parse --show-toplevel)\\\" && node .claude/hooks/precompact-session-digest.cjs\""
29
+ }
30
+ ]
31
+ }
32
+ ],
33
+ "PreToolUse": [
34
+ {
35
+ "matcher": "Bash",
36
+ "hooks": [
37
+ {
38
+ "type": "command",
39
+ "command": "bash -c \"cd \\\"$(git rev-parse --show-toplevel)\\\" && python .claude/hooks/enforce-git-push-authority.py\""
40
+ },
41
+ {
42
+ "type": "command",
43
+ "command": "bash -c \"cd \\\"$(git rev-parse --show-toplevel)\\\" && python .claude/hooks/sql-governance.py\""
44
+ }
45
+ ]
46
+ },
47
+ {
48
+ "matcher": "Write",
49
+ "hooks": [
50
+ {
51
+ "type": "command",
52
+ "command": "bash -c \"cd \\\"$(git rev-parse --show-toplevel)\\\" && python .claude/hooks/write-path-validation.py\""
53
+ }
54
+ ]
55
+ }
56
+ ]
57
+ }
58
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(node --version)",
5
+ "Bash(npm --version)",
6
+ "Bash(git*)",
7
+ "Bash(pip --version)",
8
+ "Bash(python*)",
9
+ "Bash(gh*)",
10
+ "Bash(node \".claude/hooks/synapse-engine.cjs\")",
11
+ "Bash(node \".claude/hooks/precompact-session-digest.cjs\")"
12
+ ]
13
+ }
14
+ }
@@ -0,0 +1,129 @@
1
+ # CONSTITUIÇÃO GEN.IA OS v1.0
2
+
3
+ > Sistema de governança do GEN.IA OS — {{TEAM_NAME}}
4
+ > Criadora: {{CREATOR_NAME}} | Versão: 1.0.0 | Ratificada: {{SETUP_DATE}}
5
+
6
+ ---
7
+
8
+ ## ARTIGO I — CLI First (NÃO-NEGOCIÁVEL)
9
+
10
+ O Claude Code é a fonte de verdade. Toda ação passa pelos hooks de governança.
11
+
12
+ **VIOLAÇÃO → BLOQUEIO automático.**
13
+
14
+ Nenhuma ferramenta externa, painel ou interface bypassa o sistema de governança do GEN.IA OS. Toda modificação de código, configuração ou infraestrutura DEVE ser rastreável via CLI e registrada nos logs de auditoria. Ações realizadas fora do fluxo de hooks são consideradas não-autorizadas e podem comprometer a integridade do sistema.
15
+
16
+ ---
17
+
18
+ ## ARTIGO II — Autoridade do Agente (NÃO-NEGOCIÁVEL)
19
+
20
+ Cada agente tem autoridade exclusiva em seu domínio. Agentes DEVEM delegar quando a ação estiver fora de seu escopo.
21
+
22
+ - **@devops** é o ÚNICO que pode executar `git push`, criar Pull Requests e realizar releases
23
+ - **@architect** tem veto técnico irrevogável sobre decisões de arquitetura e stack
24
+ - **@sm** é o ÚNICO que cria e altera Stories formalmente
25
+ - **@po** é o ÚNICO que valida e aprova Stories para desenvolvimento
26
+ - **@pm** é o ÚNICO que aprova mudanças de escopo e PRD
27
+
28
+ **VIOLAÇÃO → BLOQUEIO automático.**
29
+
30
+ Nenhum agente deve agir fora de sua autoridade, mesmo que tecnicamente capaz. A separação de responsabilidades é a garantia de rastreabilidade e qualidade do sistema. Quando em dúvida, delegar é obrigatório.
31
+
32
+ ---
33
+
34
+ ## ARTIGO III — Story-Driven Development (OBRIGATÓRIO)
35
+
36
+ Nenhuma linha de código pode ser escrita sem uma Story aprovada por @po. Toda Story deve ter:
37
+
38
+ - Título claro e objetivo
39
+ - Descrição no formato "Como [persona], quero [ação], para [benefício]"
40
+ - Acceptance Criteria mensuráveis e verificáveis
41
+ - Estimativa de esforço acordada
42
+ - Épico pai identificado
43
+
44
+ **VIOLAÇÃO → AVISO + documentar justificativa obrigatória.**
45
+
46
+ A Story é o contrato entre negócio e técnica. Código sem Story é trabalho não rastreável, não validável e potencialmente fora de escopo. Em situações de emergência documentadas, @architect pode autorizar exceção com registro formal.
47
+
48
+ ---
49
+
50
+ ## ARTIGO IV — Sem Invenção (OBRIGATÓRIO)
51
+
52
+ Agentes derivam especificações APENAS de requisitos explicitamente declarados em briefing, PRD ou SPEC-TECNICO.
53
+
54
+ Funcionalidades não especificadas são **estritamente proibidas**.
55
+
56
+ **VIOLAÇÃO → AVISO + justificativa obrigatória.**
57
+
58
+ A criatividade técnica é bem-vinda na escolha de COMO implementar, nunca no QUE implementar. Se um requisito parece faltar, o agente DEVE questionar e solicitar clarificação ao @pm ou @po, nunca assumir ou inventar. Isso protege o produto de scope creep não intencional.
59
+
60
+ ---
61
+
62
+ ## ARTIGO V — Qualidade Primeiro (OBRIGATÓRIO)
63
+
64
+ Lint, testes unitários e build bem-sucedido são pré-requisitos para qualquer entrega.
65
+
66
+ **VIOLAÇÃO → BLOQUEIO de delivery.**
67
+
68
+ Qualidade não é opcional nem negociável por prazo. Os quality gates existem para proteger a estabilidade do sistema em produção. Exceções documentadas devem ser aprovadas por @architect e @qa, com plano de remediação obrigatório.
69
+
70
+ ---
71
+
72
+ ## ARTIGO VI — Imports Absolutos (RECOMENDADO)
73
+
74
+ Sempre utilizar `@/` como alias de importação raiz. Caminhos relativos com múltiplos `../` são proibidos.
75
+
76
+ **VIOLAÇÃO → AVISO informacional.**
77
+
78
+ Imports absolutos melhoram a legibilidade, facilitam refatorações e reduzem erros ao mover arquivos. Esta convenção deve ser configurada no `tsconfig.json` e aplicada em todo o projeto.
79
+
80
+ ---
81
+
82
+ ## Hierarquia de Autoridade
83
+
84
+ ```
85
+ NÍVEL 3 — Decisão Final
86
+ └── @architect — veto técnico irrevogável, guardiã da arquitetura
87
+
88
+ NÍVEL 2 — Gestão e Validação
89
+ ├── @pm — PRD, escopo, priorização, stakeholders, épicos
90
+ ├── @po — validação de stories, backlog, acceptance criteria
91
+ └── @analyst — requisitos, regras de negócio, briefing
92
+
93
+ NÍVEL 1 — Execução
94
+ ├── @dev — implementação de código (SEM permissão de push)
95
+ ├── @devops — push, PR, release, configuração MCP/CI (ÚNICO com push)
96
+ ├── @qa — design e execução de testes, veredictos de qualidade
97
+ ├── @reviewer — code review, padrões de código, aprovação formal
98
+ └── @sm — criação de stories, gestão de sprint, facilitação
99
+ ```
100
+
101
+ ---
102
+
103
+ ## Processo de Emenda à Constituição
104
+
105
+ Para alterar qualquer artigo desta Constituição:
106
+
107
+ 1. **Proposta formal** — Qualquer agente pode propor via documento `EMENDA-XXX.md`
108
+ 2. **Justificativa obrigatória** — Motivação clara com impacto nos processos existentes
109
+ 3. **Aprovação dupla** — Requer concordância de @architect E @pm
110
+ 4. **Versionamento semântico:**
111
+ - **MAJOR** (ex: 1.0.0 → 2.0.0): mudança breaking em artigos NÃO-NEGOCIÁVEIS
112
+ - **MINOR** (ex: 1.0.0 → 1.1.0): adição de novo artigo ou expansão significativa
113
+ - **PATCH** (ex: 1.0.0 → 1.0.1): clarificação, correção de texto, sem mudança de regra
114
+ 5. **Propagação** — Atualizar tasks, templates e workflows afetados
115
+ 6. **Comunicação** — Notificar todos os agentes sobre a mudança
116
+
117
+ ---
118
+
119
+ ## Penalidades e Enforcement
120
+
121
+ | Severidade | Violação | Consequência |
122
+ |-----------|---------|-------------|
123
+ | CRÍTICA | Artigo I ou II | Bloqueio automático da ação + log de auditoria |
124
+ | ALTA | Artigo III, IV ou V | Aviso formal + documentação de justificativa |
125
+ | MÉDIA | Artigo VI | Aviso informacional + correção na próxima iteração |
126
+
127
+ ---
128
+
129
+ *GEN.IA OS v1.0 — {{TEAM_NAME}} — {{CREATOR_NAME}} — Ratificada em 2026-02-24*
@@ -0,0 +1,134 @@
1
+ # Contexto: API Patterns
2
+
3
+ > Principios de design de API e tomada de decisao.
4
+
5
+ ## Mapa de Conteudo
6
+
7
+ | Topico | Quando Usar |
8
+ |--------|-------------|
9
+ | REST vs GraphQL vs tRPC | Escolher tipo de API |
10
+ | Resource naming, HTTP methods | Design REST |
11
+ | Envelope pattern, error format | Estrutura de resposta |
12
+ | Schema design | GraphQL |
13
+ | Type safety | TS fullstack |
14
+
15
+ ## Arvore de Decisao: Escolher Tipo de API
16
+
17
+ ```
18
+ Projeto → TypeScript monorepo?
19
+ ├── Sim → tRPC (type safety end-to-end)
20
+
21
+ └── Nao → Clientes diversos?
22
+ ├── Sim → REST (universal, cacheable)
23
+
24
+ └── Nao → Queries complexas?
25
+ ├── Sim → GraphQL (flexivel, self-documenting)
26
+ └── Nao → REST (simples, padrao da industria)
27
+ ```
28
+
29
+ ## REST Design
30
+
31
+ ### Naming de Recursos
32
+ ```
33
+ GET /users # Lista
34
+ GET /users/{id} # Detalhe
35
+ POST /users # Criar
36
+ PUT /users/{id} # Atualizar (completo)
37
+ PATCH /users/{id} # Atualizar (parcial)
38
+ DELETE /users/{id} # Remover
39
+ ```
40
+
41
+ ### Status Codes
42
+ | Code | Uso |
43
+ |------|-----|
44
+ | 200 | OK - Sucesso |
45
+ | 201 | Created - Recurso criado |
46
+ | 204 | No Content - Deletado |
47
+ | 400 | Bad Request - Input invalido |
48
+ | 401 | Unauthorized - Nao autenticado |
49
+ | 403 | Forbidden - Sem permissao |
50
+ | 404 | Not Found - Recurso nao existe |
51
+ | 422 | Unprocessable - Validacao falhou |
52
+ | 500 | Internal Error - Erro do servidor |
53
+
54
+ ## Formato de Resposta
55
+
56
+ ### Sucesso
57
+ ```json
58
+ {
59
+ "data": { ... },
60
+ "meta": {
61
+ "pagination": { "page": 1, "total": 100 }
62
+ }
63
+ }
64
+ ```
65
+
66
+ ### Erro
67
+ ```json
68
+ {
69
+ "error": {
70
+ "code": "VALIDATION_ERROR",
71
+ "message": "Email invalido",
72
+ "details": [
73
+ { "field": "email", "message": "Formato invalido" }
74
+ ]
75
+ }
76
+ }
77
+ ```
78
+
79
+ ## Paginacao
80
+
81
+ ### Offset-based
82
+ ```
83
+ GET /users?page=2&limit=20
84
+ ```
85
+
86
+ ### Cursor-based (recomendado para grandes volumes)
87
+ ```
88
+ GET /users?cursor=abc123&limit=20
89
+ ```
90
+
91
+ ## Versionamento
92
+
93
+ | Metodo | Exemplo | Uso |
94
+ |--------|---------|-----|
95
+ | URI | `/v1/users` | Mais comum, facil |
96
+ | Header | `Accept: application/vnd.api.v1+json` | Mais limpo |
97
+ | Query | `/users?version=1` | Nao recomendado |
98
+
99
+ ## Autenticacao
100
+
101
+ | Metodo | Quando Usar |
102
+ |--------|-------------|
103
+ | JWT | SPAs, mobile apps |
104
+ | API Keys | Servicos, integracao |
105
+ | OAuth 2.0 | Login social, terceiros |
106
+ | Session | Apps tradicionais |
107
+
108
+ ## Rate Limiting
109
+
110
+ ### Headers de Resposta
111
+ ```
112
+ X-RateLimit-Limit: 100
113
+ X-RateLimit-Remaining: 95
114
+ X-RateLimit-Reset: 1640995200
115
+ ```
116
+
117
+ ## Anti-Patterns
118
+
119
+ | NAO Fazer | Fazer |
120
+ |-----------|-------|
121
+ | `/getUsers` | `GET /users` |
122
+ | `/createUser` | `POST /users` |
123
+ | Retornar 200 para erros | Usar status codes corretos |
124
+ | Expor erros internos | Mensagens genericas |
125
+ | Pular rate limiting | Sempre limitar |
126
+
127
+ ## Checklist
128
+
129
+ - [ ] Escolhi estilo de API para o contexto?
130
+ - [ ] Formato de resposta consistente?
131
+ - [ ] Estrategia de versionamento?
132
+ - [ ] Autenticacao definida?
133
+ - [ ] Rate limiting planejado?
134
+ - [ ] Documentacao (OpenAPI)?
@@ -0,0 +1,210 @@
1
+ # Contexto: Next.js & React
2
+
3
+ > Patterns de performance e boas praticas para Next.js e React.
4
+
5
+ ## Eliminando Waterfalls
6
+
7
+ ### Problema: Requests Sequenciais
8
+ ```typescript
9
+ // ERRADO - waterfall
10
+ const user = await getUser(id);
11
+ const posts = await getPosts(user.id);
12
+ const comments = await getComments(posts);
13
+ ```
14
+
15
+ ### Solucao: Parallelizar
16
+ ```typescript
17
+ // CORRETO - paralelo
18
+ const [user, posts] = await Promise.all([
19
+ getUser(id),
20
+ getPosts(id)
21
+ ]);
22
+ ```
23
+
24
+ ## Bundle Size Optimization
25
+
26
+ ### Code Splitting
27
+ ```typescript
28
+ // Dynamic imports
29
+ const HeavyComponent = dynamic(() => import('./Heavy'), {
30
+ loading: () => <Skeleton />
31
+ });
32
+ ```
33
+
34
+ ### Tree Shaking
35
+ ```typescript
36
+ // ERRADO - importa tudo
37
+ import _ from 'lodash';
38
+
39
+ // CORRETO - importa so o necessario
40
+ import debounce from 'lodash/debounce';
41
+ ```
42
+
43
+ ## Server-Side Performance
44
+
45
+ ### Streaming
46
+ ```typescript
47
+ // app/page.tsx
48
+ export default function Page() {
49
+ return (
50
+ <main>
51
+ <Header />
52
+ <Suspense fallback={<Loading />}>
53
+ <SlowComponent />
54
+ </Suspense>
55
+ </main>
56
+ );
57
+ }
58
+ ```
59
+
60
+ ### Caching
61
+ ```typescript
62
+ // Revalidate a cada hora
63
+ export const revalidate = 3600;
64
+
65
+ // Ou fetch com cache
66
+ const data = await fetch(url, {
67
+ next: { revalidate: 3600 }
68
+ });
69
+ ```
70
+
71
+ ## Client-Side Data Fetching
72
+
73
+ ### SWR ou React Query
74
+ ```typescript
75
+ import useSWR from 'swr';
76
+
77
+ function Profile() {
78
+ const { data, error, isLoading } = useSWR('/api/user', fetcher);
79
+
80
+ if (isLoading) return <Loading />;
81
+ if (error) return <Error />;
82
+ return <User data={data} />;
83
+ }
84
+ ```
85
+
86
+ ## Re-render Optimization
87
+
88
+ ### useMemo para calculos pesados
89
+ ```typescript
90
+ const expensiveValue = useMemo(() => {
91
+ return heavyCalculation(data);
92
+ }, [data]);
93
+ ```
94
+
95
+ ### useCallback para funcoes
96
+ ```typescript
97
+ const handleClick = useCallback(() => {
98
+ doSomething(id);
99
+ }, [id]);
100
+ ```
101
+
102
+ ### React.memo para componentes
103
+ ```typescript
104
+ const Card = React.memo(function Card({ user }) {
105
+ return <div>{user.name}</div>;
106
+ });
107
+ ```
108
+
109
+ ## Rendering Performance
110
+
111
+ ### Keys corretas
112
+ ```typescript
113
+ // ERRADO - index como key
114
+ {items.map((item, i) => <Item key={i} />)}
115
+
116
+ // CORRETO - id unico
117
+ {items.map(item => <Item key={item.id} />)}
118
+ ```
119
+
120
+ ### Virtualizacao para listas longas
121
+ ```typescript
122
+ import { FixedSizeList } from 'react-window';
123
+
124
+ <FixedSizeList
125
+ height={400}
126
+ itemCount={1000}
127
+ itemSize={35}
128
+ >
129
+ {Row}
130
+ </FixedSizeList>
131
+ ```
132
+
133
+ ## JavaScript Performance
134
+
135
+ ### Debounce inputs
136
+ ```typescript
137
+ const debouncedSearch = useDebouncedCallback(
138
+ (value) => search(value),
139
+ 300
140
+ );
141
+ ```
142
+
143
+ ### Web Workers para calculos pesados
144
+ ```typescript
145
+ const worker = new Worker('/worker.js');
146
+ worker.postMessage(heavyData);
147
+ worker.onmessage = (e) => setResult(e.data);
148
+ ```
149
+
150
+ ## Advanced Patterns
151
+
152
+ ### Server Components
153
+ ```typescript
154
+ // Componente servidor (default no App Router)
155
+ async function Posts() {
156
+ const posts = await db.posts.findMany(); // Direto no banco!
157
+ return <PostList posts={posts} />;
158
+ }
159
+ ```
160
+
161
+ ### Server Actions
162
+ ```typescript
163
+ async function submitForm(formData: FormData) {
164
+ 'use server';
165
+ await db.users.create({ data: formData });
166
+ }
167
+ ```
168
+
169
+ ### Parallel Routes
170
+ ```typescript
171
+ // app/@dashboard/page.tsx
172
+ // app/@sidebar/page.tsx
173
+ // Carregam em paralelo
174
+ ```
175
+
176
+ ## Image Optimization
177
+
178
+ ```typescript
179
+ import Image from 'next/image';
180
+
181
+ <Image
182
+ src="/hero.jpg"
183
+ width={1200}
184
+ height={600}
185
+ placeholder="blur"
186
+ priority // Para imagens above-the-fold
187
+ />
188
+ ```
189
+
190
+ ## Font Optimization
191
+
192
+ ```typescript
193
+ import { Inter } from 'next/font/google';
194
+
195
+ const inter = Inter({
196
+ subsets: ['latin'],
197
+ display: 'swap',
198
+ });
199
+ ```
200
+
201
+ ## Checklist de Performance
202
+
203
+ - [ ] Requests em paralelo (Promise.all)?
204
+ - [ ] Code splitting implementado?
205
+ - [ ] Imagens otimizadas (next/image)?
206
+ - [ ] Fontes otimizadas (next/font)?
207
+ - [ ] Caching configurado?
208
+ - [ ] Listas virtualizadas?
209
+ - [ ] Memos apropriados?
210
+ - [ ] Bundle analisado?