>
Micro-SaaS & MVPs Cursor / Copilot

Sistema de Feature Flags com Rollout Gradual por Percentual

Biblioteca leve de feature flags em TypeScript: flags no banco, rollout determinístico por % do usuário, overrides por e-mail e SDK client-side.

EPEquipe Prompt Salvo ·Criado em 24 de set. de 2026 ·Atualizado em 24 de set. de 2026
0cópias
0joinhas
0favoritos

O prompt

Crie um sistema de feature flags leve para o SaaS {{nome_saas}} em TypeScript.

Parâmetros:
- Nome do SaaS: {{nome_saas}}
- Armazenamento: postgresql (Prisma) com cache em memória de 30s
- Flags Iniciais: {{flags_iniciais}} (ex.: 'novo-checkout, dark-mode-beta')

Requisitos:
1. Schema Prisma FeatureFlag { key unique, name, description, rolloutPercent (0-100), enabled, allowlist String[], denylist String[], createdAt, updatedAt }.
2. Núcleo isFlagEnabled(flagKey, user): ordem de decisão — flag desligada → false; e-mail no denylist → false; no allowlist → true; senão hash determinístico do e-mail (FNV-1a mod 100) < rolloutPercent → true. Determinístico: o mesmo usuário sempre recebe a mesma resposta enquanto a flag não muda.
3. Cache em memória de 30s das flags (invalidado por escrita); endpoint admin POST /api/flags/:key (auth) para ajustar rolloutPercent/allowlist/denylist/enabled com auditoria em tabela FlagAudit { flagKey, changedBy, before, after, createdAt }.
4. SDK client-side: GET /api/flags/public?email= retorna apenas as flags ativas + o resultado já calculado para o usuário (nunca expor rolloutPercent); no front, useFlag('novo-checkout') via hook React ou função vanilla.
5. Crie as flags {{flags_iniciais}} com rollout 0% e allowlist vazia; inclua um script npm run flags:seed idempotente.
6. Testes unitários cobrindo: determinismo do hash (mesmo e-mail → mesmo resultado), precedência deny > allow > rollout, e cache invalidado após update.

Como usar

  1. Substitua {{nome_saas}} e {{flags_iniciais}} (separadas por vírgula).
  2. Cole no Cursor/Copilot em um projeto Node/TS + Prisma — schema, núcleo, admin API e SDK saem prontos.
  3. npm run flags:seed && npm test: os testes de determinismo e precedência devem passar; depois suba o rollout de 'novo-checkout' para 10% via POST /api/flags/novo-checkout.
  4. No front, troque o if hardcoded por useFlag('novo-checkout') — o SDK já faz o fetch único com cache de 30s no servidor.

Exemplo de saída

Pacote flags (~200 linhas): schema FeatureFlag + FlagAudit, isFlagEnabled com precedência deny > allow > hash FNV-1a determinístico (mod 100), cache 30s invalidado por escrita, admin API autenticada com auditoria antes/depois, GET /flags/public expondo só o resultado calculado, seed idempotente das flags iniciais em 0% e testes de determinismo/precedência/cache.

Guias relacionados

Prompts para produtividade no trabalho (curadoria + análise)Reuniões, e-mails, planilhas e relatórios: os prompts do catálogo que mais economizam tempo, com o porquê de cada um.Prompts para programação e revisão de códigoBoilerplate, refatoração e code review com auditoria de segurança: como pedir código que compila de primeira.Prompt chains: encadear prompts para tarefas complexasQuando um prompt não basta: decomponha o trabalho em etapas com saída de uma alimentando a entrada da outra.
Usar na extensão