Skip to content

[Nome da Feature] — [Papel(éis)]

Última atualização: YYYY-MM-DD


1. Visão Geral

Descrição funcional em 2-3 linhas: o que a feature faz, quem usa, qual problema resolve.


2. Arquitetura

text
Frontend                     Backend                      Banco
────────                     ───────                      ─────
Componente ─┐                edge-function-name           tabela_principal
Componente ─┤── useHook.ts ──── invokeAction ──────────► tabela_secundaria
Componente ─┘                                            tabela_readonly

3. Schema (Tabelas)

TabelaPropósitoRLSConstraints
nome_tabelaDescriçãoPolicy por papel (SELECT, INSERT, UPDATE)UNIQUE, triggers

Colunas Relevantes

sql
-- Apenas colunas não-óbvias ou com lógica especial
coluna_x  -- Explicação
coluna_y  -- Explicação

4. Edge Function

nome-da-edge-function

ActionTipoDescriçãoValidaçãoLogging
action_nameReadDescrição
action_nameWriteDescriçãoZod schemamodulo.operacao

Auth: requireRole([...]) + requireFeatureFlag("flag")CORS: getCorsHeaders(req) em todas as respostas incluindo catch.


5. Hook React Query

useHookName.ts

Query Keys

KeyFormato
all['feature-name']
subKey['feature-name', 'sub', param]

Exports

ExportTipoCache KeystaleTime
useQueryNameQuerysubKey5min
useMutationNameMutationInvalida all

Invalidação

Descrever quais mutations invalidam quais caches, e se há cross-feature invalidation.


6. Componentes

text
src/components/feature-name/
├── index.tsx                  Container principal
├── sub-component.tsx          Descrição
├── helpers.ts                 Tipos + utilitários
└── __tests__/                 Testes unitários

Padrões Visuais

  • Memoização: React.memo, useMemo, useCallback
  • Loading: Anti-Flash Pattern (isLoading && !data)
  • Toast: olpToast (nunca alert())
  • Erros: getUserFriendlyError(error)

7. Padrões Aplicados

PadrãoReferência
Renderização Atômica→ Ref: docs/development/ATOMIC_RENDERING.md
React Query Cache→ Ref: docs/development/REACT_QUERY_CACHE.md
Import System→ Ref: docs/development/IMPORT_SYSTEM_STANDARD.md

8. Testes

ArquivoTipoCobertura
edge-function/index.test.tsContract (Deno)CORS, auth, anti-leak
useHook.integration.test.tsHook integrationQueries, mutations
helpers.test.tsUnitUtilitários

9. Navegação

  • sections-registry.ts: id: 'feature', icon: IconName, permissionKey: 'permission'
  • permissions.ts: permission no PAPEL_PERMISSIONS
  • Feature flag: flag_name (deve estar ativa em feature_flags)

10. Referências

  • Outros docs relacionados
  • Links para docs de arquitetura, segurança, etc.