Aplicacao Next.js para apoio emocional com dois perfis principais:
- usuario/paciente para iniciar atendimentos e acompanhar conversas
- voluntario para marcar disponibilidade e responder chats
- Next.js 16
- React 19
- TypeScript
- Supabase Auth + Database
- Tailwind CSS + componentes proprios
- Node.js 20.9.0 ou superior
- npm 10 ou superior
- projeto Supabase configurado
O repositorio inclui .nvmrc com a versao recomendada.
Crie um arquivo .env.local a partir de .env.example.
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_URL=
SUPABASE_SERVICE_ROLE_KEY=Notas:
NEXT_PUBLIC_SUPABASE_URLeSUPABASE_URLnormalmente apontam para a mesma URL.SUPABASE_SERVICE_ROLE_KEYdeve existir apenas em ambiente seguro. Nao commite esse valor.- Se alguma chave ja foi exposta anteriormente, rotacione antes do deploy.
Execute os SQLs em ordem no projeto Supabase antes de testar ou publicar.
Tabelas esperadas:
profileschatsmessagesfeedbacklibrary
nvm use
npm install
npm run lint
npm run devAplicacao disponivel em http://localhost:3000.
Para criar um usuario e um voluntario de teste no Supabase:
npm run seed:supabaseUsuarios criados:
user@test.localvolunteer@test.local
Senha padrao:
senha123
- Registrar ou criar os usuarios de teste.
- Fazer login como voluntario e marcar disponibilidade.
- Fazer login como usuario e iniciar um chat.
- Validar envio e recebimento de mensagens em ambos os perfis.
- Validar biblioteca em
/library. - Validar envio de feedback em
/paciente/chats. - Rodar
npm run lint. - Rodar
npm run buildcom Node 20.9.0+.
- Importe o repositorio na Vercel.
- Configure as variaveis abaixo no projeto:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEYSUPABASE_URLSUPABASE_SERVICE_ROLE_KEY
- Garanta que o projeto use Node 20.9.0+.
- Execute o deploy.
- Repita o checklist funcional na URL publicada.
- O build exige Node 20.9.0 ou superior por causa do Next.js 16.
- O projeto foi ajustado para nao depender de
better-sqlite3,bcryptoujsonwebtokenno deploy atual. - O lint deve ficar limpo; um aviso de atualizacao do pacote
baseline-browser-mappingpode aparecer, mas nao bloqueia a publicacao.