Calendário de obrigações fiscais para escritórios contábeis brasileiros. Desenvolvido pela Tresbits.
- Next.js 16 (App Router, Server Components, Server Actions)
- Supabase (Postgres, Auth, RLS, pg_cron, pg_net)
- Tailwind CSS v4 + Base UI
- Resend para alertas por e-mail
- Vercel para deploy e cron jobs
npm installCopie .env.example para .env.local e preencha:
cp .env.example .env.local| Variável | Descrição |
|---|---|
NEXT_PUBLIC_SUPABASE_URL |
URL do projeto Supabase |
NEXT_PUBLIC_SUPABASE_ANON_KEY |
Chave anon do Supabase |
SUPABASE_SERVICE_ROLE_KEY |
Chave service role (bypass RLS) |
RESEND_API_KEY |
Chave da API Resend para e-mails |
WEBHOOK_SECRET |
Secret para autenticar o webhook de alertas |
CRON_SECRET |
Secret para autenticar o endpoint de cron |
NEXT_PUBLIC_SITE_URL |
URL pública do app (ex: https://prazogestor.tresbits.com) |
Execute schema.sql no SQL Editor do Supabase. O arquivo contém:
- Tabelas, RLS e índices
- Seed de obrigações (Simples Nacional e MEI)
- Funções auxiliares
- Jobs pg_cron (marcar-atrasados, alertas-diarios, purge)
npx tsx --env-file=.env.local scripts/sync-feriados.ts 2026 2027npm run devAcesse http://localhost:3000.
Configurado em vercel.json. Roda no dia 1 de cada mês às 9h UTC.
Gera vencimentos para o mês 12 meses à frente de todos os clientes.
Para testar localmente:
curl -H "Authorization: Bearer <CRON_SECRET>" http://localhost:3000/api/cron/gerar-vencimentos| Job | Horário (UTC) | Ação |
|---|---|---|
prazogestor-marcar-atrasados |
11:05 todo dia | Marca como atrasado obrigações vencidas |
prazogestor-alertas-diarios |
11:00 todo dia | Insere em alertas_log para 7d, 3d, 1d antes do vencimento |
prazogestor-purge-cnpj-rate-limit |
3:00 toda segunda | Remove entradas antigas da tabela de rate limit |
O fluxo completo:
- pg_cron insere em
alertas_log - Supabase Database Webhook chama
POST /api/alertas/webhook - Route handler busca dados da obrigação e envia e-mail via Resend
O webhook requer o header x-webhook-secret: <WEBHOOK_SECRET>.
git push origin mainO Vercel detecta o push e faz o deploy automaticamente.
Certifique-se de que todas as variáveis de ambiente estão configuradas no painel do Vercel, incluindo CRON_SECRET.