Skip to content
/ Vitta Public

Sistema focado como apoio a saude mental atraves de conversas e questionarios basicos para o acompanhamento psicologico.

Notifications You must be signed in to change notification settings

oustyy/Vitta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Vitta


Vitta — Plataforma de Agendamento e Atendimento

Acesso (produção): https://vitta-production.up.railway.app/

Descrição

Vitta é um sistema web full‑stack (React frontend + Spring Boot backend + PostgreSQL) focado no apoio à saúde mental através de conversas e questionários básicos para acompanhamento psicológico masculino. O objetivo é oferecer uma interface para que homens possam solicitar atendimento, responder questionários de acompanhamento e conversar com especialistas de forma simples e segura com a clínica que frequenta.


Visão Geral das Funcionalidades

  • Cadastro e login de usuários com JWT.
  • Perfis distintos: USUARIO, ESPECIALISTA, ADM.
  • Solicitação de atendimento por usuário; especialistas recebem notificações em tempo real.
  • Chat em tempo real entre usuário e especialista usando STOMP sobre SockJS.
  • Questionários e formulários básicos para triagem e acompanhamento (ex.: escalas de humor, checklists de sintomas).
  • Histórico de conversas e respostas a questionários para acompanhamento longitudinal (visível para o usuário e, quando autorizado, para o especialista).
  • Endpoints administrativos para gestão de especialistas, usuários e conteúdo dos questionários.
  • Persistência de dados em PostgreSQL (migrações com Flyway disponíveis no projeto).

Como usar (produção)

  1. Abra https://vitta-production.up.railway.app/ no navegador.
  2. Usuário final:
    • Clique em Registrar para criar uma conta de usuário (forneça CPF, nome, email e senha).
    • Faça Login com CPF ou email + senha.
    • Responda questionários iniciais ou periódicos sugeridos pelo app para avaliar bem‑estar e sintomas.
    • Solicite atendimento usando o botão correspondente na interface. Aguarde um especialista aceitar.
  3. Especialista:
    • Faça login com suas credenciais.
    • Visualize solicitações e triagens decorrentes dos questionários.
    • Inscreva‑se no tópico de solicitações (/topic/solicitacoes) — o frontend já faz isso automaticamente.
    • Aceite solicitações para iniciar conversas com usuários e acompanhe histórico e respostas a questionários para melhor contextualização do atendimento.
  4. Admin:
    • Administradores (ADM) têm endpoints restritos para criação de especialistas e manutenção.

Endpoints Principais

  • POST /api/usuarios/register — Registrar novo usuário (público).
  • POST /api/usuarios/login — Login; retorna token JWT (público).
  • GET /api/usuarios/whoami — Verifica autenticação e retorna info do principal.
  • POST /api/usuarios/admin/create-specialist — Criar especialista (somente ADM).
  • GET /api/usuarios/{cpf} — Buscar usuário por CPF.

Consulte o código em src/main/java/com/example/vitta/controller para a lista completa de endpoints e comportamento.


WebSocket / Chat (como funciona)

  • Endpoint STOMP (SockJS): wss(s)://vitta-production.up.railway.app/chat
  • O frontend usa new SockJS('/chat') e em seguida STOMP para enviar/receber mensagens.
  • Autenticação STOMP: inclua o cabeçalho Authorization: Bearer <token> no frame CONNECT. O servidor decodifica o JWT e atribui ROLE_<tipo> ao usuário.
  • Tópicos usados:
    • /topic/solicitacoes — broadcast para especialistas sobre novas solicitações (mensagens de tipo solicitacao, cancel, removed).
    • /topic/chat/{userId} — canal privado de chat para conversa entre usuário e especialista.

Observação: o frontend já cuida da inscrição em tópicos e do envio do header Authorization no CONNECT.


Privacidade e Segurança de Dados (resumo)

  • O sistema armazena conversas e respostas a questionários para fins de acompanhamento clínico; trata‑se de dados sensíveis — mantenha acesso controlado.
  • Recomenda‑se configurar variáveis de ambiente e segredos (JWT secret, credenciais DB) no provedor (Railway) e não expor informações sensíveis publicamente.
  • Considere políticas de retenção de dados e avisos de privacidade para usuários finais; este projeto não implementa uma política legal automaticamente.

Admin e Criação de Contas ADM

  • Contas ADM possuem tipo = "ADM" e a autoridade ROLE_ADM.
  • Existe um utilitário scripts/create_admin.js que cria uma conta ADM diretamente no banco (usa bcrypt para hash da senha). Em produção, execute o script apontando para a DATABASE_PUBLIC_URL do Railway ou crie via SQL com hash bcrypt gerado localmente.
  • Recomendação: sempre fazer backup do banco antes de manipular dados em produção.

Logs & Observabilidade

  • Use o painel Railway → selecione o serviço VittaLogs para visualizar boot, requests e erros.
  • Para investigar falhas (403/500), copie o request id mostrado nas respostas e procure o log correspondente no Railway.

Estrutura do Repositório (resumida)

VITTA/
├── vitta/                 # Backend (Spring Boot)
│   ├── src/main/java/...  # Controladores, serviços, config
│   ├── src/main/resources/static/  # arquivos estáticos (frontend build)
│   └── src/main/resources/db/migration/  # Flyway
├── vitta-frontend/        # Código React (origem do build)
├── scripts/               
└── README.md

Contato / Contribuições


About

Sistema focado como apoio a saude mental atraves de conversas e questionarios basicos para o acompanhamento psicologico.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published