Next.js React TypeScript Tailwind Supabase pnpm
De → Para: deixa de ser só um simulador de salário e passa a copiloto fiscal-financeiro contínuo para PJ e MEI.
Novas funcionalidades: importação de extrato bancário (CSV/OFX) com classificação automática de receitas; cálculo de DAS/DARF e provisão mensal de impostos; alerta de teto ao atingir 75% do limite anual do MEI; projeção de quanto guardar por mês e fluxo de caixa.
Mudanças na lógica: o cálculo passa a usar dados reais importados (não só valores digitados); o histórico vira base contínua mês a mês, não simulações avulsas; regras fiscais isoladas em módulo testável, versionado por ano-calendário.
Plataforma web para previsão salarial, simulações e dashboards (CLT/PJ), com Supabase (Auth/DB) e Asaas (pagamentos - PIX, cartão, boleto).
- Simulação mensal (CLT e PJ) com cálculo automático de INSS e IRRF
- Comparador CLT x PJ para ajudar na decisão de carreira
- Simulação de rescisão (sem justa causa, acordo, pedido de demissão)
- Simulação de 13o salário (1a e 2a parcela)
- Simulação de férias (vencidas e proporcionais)
- Dashboard com gráficos e estatísticas
- Histórico de simulações com filtros
- Exportação PDF e CSV das simulações
- Planos Free e Pro com pagamento via Asaas
Instalar deps:
pnpm install
Configurar variáveis:
- Copie
env.example→.env.local - Preencha:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_SERVICE_ROLE_KEY(necessária para webhook/admin)- Asaas:
ASAAS_API_KEY,ASAAS_WEBHOOK_TOKEN,ASAAS_SANDBOX NEXT_PUBLIC_APP_URL
Para acessar /admin, defina no Supabase o cargo do seu usuário:
update public.profiles set role = 'admin' where email = 'SEU_EMAIL_AQUI';
Subir o app:
pnpm dev
docs/planejamento-compatibilidade-salarial.md— proposta da nova atualização de compatibilidade salarial com custo de vida, benefícios e comparação CLT/PJ.
O projeto usa Vitest para testes unitários dos cálculos de impostos.
pnpm testOs testes cobrem:
- Cálculo de INSS (tabela progressiva 2026)
- Cálculo de IRRF (com isenção até R$ 5.000)
- DAS do Simples Nacional (Anexos III e V)
- Simulação mensal CLT e PJ
- Cálculo de rescisão
- Cálculo de férias
- Cálculo de 13o salário
Rode o SQL do arquivo:
supabase/schema.sql
Isso cria:
profiles(1-para-1 comauth.users)simulationsplans- trigger de criação de profile
- RLS básico
O MeuSalario usa o Asaas como gateway de pagamentos, que suporta:
- Cartão de crédito (parcelado ou à vista)
- Boleto bancário
- PIX
- Crie uma conta no Asaas (use ambiente sandbox para desenvolvimento)
- Obtenha sua
ASAAS_API_KEYno painel (Integrações > API) - Configure o webhook no painel do Asaas apontando para:
https://seu-dominio.com/api/billing/webhook
- Eventos recomendados:
PAYMENT_RECEIVED,SUBSCRIPTION_CREATED - Defina o token do webhook em
ASAAS_WEBHOOK_TOKEN - Configure
ASAAS_SANDBOX=truepara desenvolvimento,falsepara produção
Os preços dos planos são definidos na tabela plans do Supabase.
O projeto suporta monitoramento de erros via Sentry (opcional).
- Crie uma conta em sentry.io
- Crie um projeto Next.js
- Copie o DSN e adicione em
NEXT_PUBLIC_SENTRY_DSNno.env
Funções disponíveis:
captureException(error)- Captura exceçõescaptureMessage(message, level)- Captura mensagenssetUser({ id, email })- Define usuário atual
src/
├── app/ # Rotas Next.js (App Router)
│ ├── (auth)/ # Páginas de autenticação
│ ├── app/ # Área logada do usuário
│ ├── admin/ # Painel administrativo
│ └── api/ # Rotas de API
├── components/ # Componentes React
│ ├── auth/ # Formulários de auth
│ ├── billing/ # Componentes de pagamento
│ ├── charts/ # Gráficos (Recharts)
│ ├── dashboard/ # Componentes do dashboard
│ ├── historico/ # Histórico de simulações
│ ├── layout/ # Layout e navegação
│ ├── simulations/ # Formulários de simulação
│ └── ui/ # Componentes base (Button, Input, etc)
├── lib/ # Utilitários e lógica
│ ├── calculators/ # Cálculos de impostos e simulações
│ │ └── __tests__/ # Testes unitários
│ ├── payments/ # Integração com Asaas
│ └── supabase/ # Cliente Supabase
└── types/ # Tipos TypeScript
- ESLint 8 e subdependências deprecated: O
pnpm installpode mostrar avisos de queeslint@8.57.1e pacotes comoglob,inflight,rimrafestão deprecated. Isso é esperado: o Next.js 14 usaeslint-config-next, que ainda declara suporte apenas a ESLint 7/8. Migrar para ESLint 9 exigiria atualizar o Next.js para uma versão que suporte o plugin em flat config (ex.: Next 15). Por enquanto o lint continua funcionando normalmente.
Privado - Todos os direitos reservados.