wedding-management-system

🛠️ Solução de Problemas

Erros comuns e como resolvĂŞ-los. Antes de abrir uma issue, dĂŞ uma olhada aqui.


Instalação

./setup.sh: Permission denied

chmod +x setup.sh
./setup.sh

node: command not found

VocĂŞ ainda nĂŁo instalou o Node 20+. Veja:

Node.js X detectado. Este projeto requer Node 20 ou superior.

Atualize via nvm install 20 (Linux/macOS/WSL) ou pelo instalador oficial (Windows). Confirme com node -v.

Set-ExecutionPolicy : Access denied (Windows)

PolĂ­tica bloqueada por GPO. Use:

powershell -ExecutionPolicy Bypass -File .\setup.ps1

Sem mudar a polĂ­tica do sistema.

npm install trava em pacote nativo

Se um pacote precisa compilar binários (em geral o sharp, node-canvas, bcrypt):

đź’ˇ Este projeto usa bcryptjs (puro JS), nĂŁo bcrypt (nativo). Em teoria nĂŁo precisa de toolchain C++.


Banco de dados

Error: SQLITE_BUSY: database is locked

Algum outro processo está com o banco aberto. Geralmente:

Error: Schema is not in sync

VocĂŞ editou schema.prisma e esqueceu de aplicar. Rode:

npx prisma db push --skip-generate
npx prisma generate

Error: Migration failed

Esse projeto não usa migrations. Se você rodou prisma migrate dev por acidente, ignore — o db push é a fonte de verdade.

Schema mudou e quero zerar o banco

./setup.sh --reset-db

⚠️ Apaga todos os dados.


Login

“Credenciais inválidas” no primeiro login

Loop infinito entre /login e /dashboard

Sintoma: vocĂŞ loga, Ă© redirecionado pro dashboard, e volta pro login.

Causa comum: cookie de sessão não está sendo aceito pelo navegador.

Tente:

  1. Apagar todos os cookies do domĂ­nio.
  2. Recarregar e logar.
  3. Verificar Network → resposta do /api/auth/callback/credentials.

Login trava na prĂłpria tela; sĂł vai pro dashboard ao recarregar

Sintoma: você submete o form de login, a página fica em /login, e só quando recarrega manualmente é que aparece o dashboard.

Causa: o signIn da Auth.js v5, sem redirectTo explícito, usa o Referer como destino — que é a própria página de login (/login?callbackUrl=...). O cookie é setado corretamente, mas o soft-nav do App Router pro mesmo path não dispara o Response.redirect do proxy.ts em algumas combinações Next.js 16 + Auth.js v5 beta.

Correção (já aplicada no projeto): o LoginForm agora injeta redirectTo no formData, lendo o callbackUrl da query string (com sanitização contra open-redirect) e caindo em /dashboard por padrão. O Server Action authenticate também sanitiza o redirectTo recebido.

Se reaparecer apĂłs upgrade de next-auth, confirme que src/app/login/login-form.tsx ainda emite o <input type="hidden" name="redirectTo"> e que src/app/actions/authActions.ts chama formData.set("redirectTo", ...) antes do signIn.

Esqueci a senha do admin

Sem SMTP configurado? VocĂŞ pode resetar via banco:

node -e "
const bcrypt = require('bcryptjs');
const { PrismaClient } = require('@prisma/client');
const p = new PrismaClient();
(async () => {
  const hash = await bcrypt.hash('novaSenhaForte', 10);
  await p.user.update({ where: { email: 'admin@admin.com' }, data: { password: hash, mustChangePassword: true } });
  console.log('Senha redefinida');
  process.exit(0);
})();
"

Onboarding (wizard)

Stuck no /dashboard/onboarding

Quero re-executar o wizard

Limpe onboardingCompletedAt:

node -e "
const { PrismaClient } = require('@prisma/client');
const p = new PrismaClient();
(async () => {
  await p.eventSettings.update({ where: { id: 'singleton' }, data: { onboardingCompletedAt: null } });
  process.exit(0);
})();
"

PrĂłximo login do admin abre o wizard de novo.


Notificações

Email nĂŁo chega

  1. Verifique NotificationLog no Prisma Studio. status = OK? Provavelmente foi enviado, problema Ă© caixa de entrada/spam.
  2. status = ERROR? Olhe errorMsg.
  3. Gmail: confirme que SMTP_PASS Ă© uma App Password (16 caracteres, nĂŁo a senha normal).
  4. Office 365: SMTP basic costuma estar bloqueado. Use SendGrid ou Amazon SES como relay.

WhatsApp nĂŁo envia

  1. Status em Ajustes › WhatsApp mostra “Conectado”?
    • Se nĂŁo, escaneie de novo.
  2. SessĂŁo expirou? Acontece apĂłs algumas semanas, ou se vocĂŞ desconectou do celular. Reconecte.
  3. Destinatário tem WhatsApp ativo no telefone cadastrado?
  4. Não tente usar o mesmo número do remetente como destinatário — Baileys rejeita.

Cron nĂŁo dispara nada


WhatsApp (Baileys)

“Stream errored: PreReplaceCount…”, “Connection terminated”

Eventualmente Baileys reconecta sozinho. Se persistir:

rm -rf .whatsapp-auth/
pm2 restart wedding-management-system
# acessar Ajustes › WhatsApp e escanear de novo

Você precisará escanear o QR novamente.

Mensagens demorando para chegar

Baileys envia em sequĂŞncia com pequeno delay. Para volume alto, considere migrar para WhatsApp Cloud API (paga, mas oficial e mais robusta).


Performance

Página demorando

next dev lento na primeira navegação

Normal — Next.js compila sob demanda em dev. Use npm run build && npm run start para sentir a velocidade real.


Build / Deploy

Module not found: Can't resolve '@prisma/client'

Rode npx prisma generate para gerar o client.

Type error: Cannot find module ...

Geralmente algum import desatualizado depois de mudar schema. Rode npx prisma generate e reinicie o next dev.

Error: dynamic = 'force-dynamic' is not assignable to ...

Você está exportando dynamic em um arquivo que não é uma página/route handler. Mova para a Page/Route correspondente.

Build trava em “Linting and checking validity of types”

Verifique erros de tipo: npx tsc --noEmit. Corrija os reportados.


Tailwind 4

“Class não está sendo aplicada”

Tailwind 4 nĂŁo tem mais tailwind.config.js. Tokens customizados via @theme em src/app/globals.css. Se vocĂŞ adicionou algo novo:

@theme {
  --color-rose-custom: #ff0066;
}

E use como bg-rose-custom. Faça hot reload.


Reportar bug

Se nada aqui resolveu:

  1. Reproduza o problema em ambiente limpo (./setup.sh --reset-db).
  2. Anote: SO, versĂŁo do Node, versĂŁo do projeto (git rev-parse HEAD), comandos exatos, erro completo.
  3. Abra issue em GitHub seguindo o template.