Mentaliza é uma plataforma web inovadora projetada para revolucionar o acesso a recursos e serviços gratuitos de saúde mental no Brasil. A solução oferece uma experiência integrada e acessível, onde usuários podem localizar facilmente instituições próximas através de um mapa interativo inteligente que adapta automaticamente o raio de busca conforme a disponibilidade de serviços na região.
O sistema combina tecnologia e propósito social ao disponibilizar ferramentas de busca avançada, permitindo filtros por tipo de equipamento - desde CAPS (Centros de Atenção Psicossocial) e UBS até espaços culturais e esportivos destinados à prevenção e bem-estar mental. Através de uma interface responsiva e intuitiva, a plataforma garante navegação fluida tanto em computadores quanto em dispositivos móveis, eliminando barreiras tecnológicas ao acesso à informação.
A arquitetura da plataforma é estruturada em módulos especializados: o sistema de geolocalização identifica automaticamente serviços próximos ao usuário, enquanto o mecanismo de busca inteligente expande progressivamente o raio de procura quando necessário. Seções educativas multimídia complementam a experiência, oferecendo conteúdo informativo em texto e vídeo para promover a conscientização sobre saúde mental.
Um diferencial significativo do Mentaliza é seu painel administrativo robusto, que permite gestão completa dos equipamentos cadastrados através de autenticação segura via Supabase. Administradores podem adicionar, editar e monitorar instituições em tempo real, garantindo que as informações permaneçam sempre atualizadas e confiáveis.
O público-alvo abrange pessoas em situação de vulnerabilidade social que buscam apoio psicológico, familiares em busca de orientação, profissionais da área de saúde e gestores públicos interessados em mapear recursos disponíveis. A plataforma atende tanto necessidades urgentes quanto preventivas, conectando usuários a espaços de lazer, cultura e esporte que promovem o bem-estar mental.
Além de beneficiar diretamente os usuários, o Mentaliza serve como ferramenta estratégica para políticas públicas, oferecendo dados valiosos sobre a distribuição geográfica de serviços e identificando lacunas no atendimento. Isso possibilita decisões mais informadas sobre investimentos em saúde mental e planejamento de novos equipamentos.
Com uma abordagem centrada no usuário e fundamentada em dados geoespaciais precisos, o Mentaliza transforma a busca por ajuda psicológica em uma experiência mais humana, eficiente e esperançosa. A plataforma não apenas conecta pessoas a recursos, mas fortalece a rede de apoio em saúde mental, contribuindo para a construção de uma sociedade mais acolhedora e consciente sobre a importância do cuidado psicológico.
- Node.js: Ambiente de execução JavaScript para o desenvolvimento do servidor.
- Express.js: Framework minimalista para a criação de rotas e APIs RESTful.
- PostgreSQL: Sistema de gerenciamento de banco de dados relacional, utilizado para armazenar informações sobre os serviços, instituições e usuários.
- Supabase: Plataforma de backend como serviço (BaaS) que facilita a integração com o banco de dados PostgreSQL, oferecendo autenticação e armazenamento de dados.
- Axios: Biblioteca para realizar requisições HTTP, utilizada para interagir com APIs externas e serviços de terceiros.
- JavaScript: Linguagem de programação principal para o desenvolvimento do frontend.
- HTML5 e CSS3: Estruturação e estilização da interface do usuário.
- Git e GitHub: Controle de versão e colaboração em equipe.
- Postman: Testes de API e integração.
- Figma: Ferramenta de prototipagem para definição de wireframes e fluxos de navegação.
- Draw.io: Ferramenta de diagramação para modelagem de dados e fluxos do sistema.
Este conjunto de tecnologias foi escolhido para garantir uma plataforma robusta, escalável e acessível, alinhada aos objetivos sociais e técnicos do projeto.
Veja este vídeo para ver o funcionamento da plataforma: Link.
Dentre os arquivos e pastas presentes na raiz do projeto, definem-se:
-
assets: aqui estão os arquivos relacionados a elementos não-estruturados deste repositório, como imagens.
-
document: aqui estão todos os documentos do projeto, como o Web Application Document (WAD) bem como documentos complementares, na pasta "other".
-
README.md: arquivo que serve como guia introdutório e explicação geral sobre o projeto e a aplicação (o mesmo arquivo que você está lendo agora).
-
src: Todo o código fonte criado para o desenvolvimento do projeto de aplicação web.
src/
├── config/ # Arquivos de configuração
├── controllers/ # Lógica de controle das requisições
├── middleware/ # Middlewares da aplicação
├── migrations/ # Scripts de migração do banco de dados
│ ├── development/ # Migrações para ambiente de desenvolvimento
│ └── production/ # Migrações para ambiente de produção
├── models/ # Definição de modelos de dados
├── routes/ # Definição das rotas do sistema
├── scripts/ # Scripts auxiliares e utilitários
├── tests/ # Arquivos de testes unitários e de integração
│ ├── integration/ # Testes de integração das APIs
│ ├── mocks/ # Mocks para testes
│ └── models/ # Testes unitários dos modelos
├── utils/ # Funções utilitárias
├── views/ # Arquivos de interface do usuário (EJS)
│ ├── components/ # Componentes reutilizáveis
│ ├── css/ # Arquivos de estilo CSS
│ ├── layout/ # Layouts base da aplicação
│ ├── pages/ # Páginas da aplicação
│ │ └── admin/ # Páginas administrativas
│ └── scripts/ # Scripts JavaScript do frontend
├── public/ # Arquivos públicos estáticos
│ └── assets/ # Imagens e recursos estáticos
├── .env.example # Exemplo de configuração de ambiente
├── app.js # Configuração principal do Express
├── jest.config.js # Configuração do framework de testes Jest
├── package.json # Gerenciador de dependências do Node.js
├── readme.md # Documentação técnica do projeto
└── server.js # Arquivo de inicialização do servidor
Aqui encontram-se todas as instruções necessárias para a instalação de todos os programas, bibliotecas e ferramentas imprescindíveis para a configuração do ambiente de desenvolvimento.
-
Node.js: Baixar e instalar o Node.js
- Certifique-se de que a versão instalada é a 18.16.0 ou superior.
- Durante a instalação, marque a opção "Add to PATH" para facilitar o uso do Node.js no terminal.
-
Supabase (obrigatório para painel administrativo):
- Crie uma conta no Supabase
- Crie um novo projeto
- Configure as variáveis de ambiente conforme instruções abaixo
-
Clone o repositório:
git clone https://github.com/Inteli-College/2025-1B-T17-IN02-G05.git
-
Navegue para o diretório do projeto e instale as dependências:
cd 2025-1B-T17-IN02-G05/src npm install
-
Crie uma conta no Supabase
-
Crie um novo projeto no Supabase
-
Configure as variáveis de ambiente:
- Copie o arquivo
.env.examplepara.envna pastasrc/:
cp .env.example .env
- Edite o arquivo
.envcom suas credenciais do Supabase
- Copie o arquivo
-
Obtenha as credenciais do Supabase:
- No painel do Supabase, selecione o seu projeto
- Na página do seu projeto, clique em "Conectar" no topo
- Procure por "Session Pooler" na página de configurações do banco de dados
- Copie a URL e a senha do Session Pooler
- Adicione as seguintes variáveis ao seu arquivo
.env:
DB_USER=postgres DB_HOST=seu_host_supabase.pooler.supabase.com DB_DATABASE=postgres DB_PASSWORD=sua_senha_supabase
Após configurar a conexão com o banco de dados, execute o script de migração para criar todas as tabelas necessárias:
npm run migrate:devEste comando executará automaticamente todas as migrações na pasta src/migrations/development/, criando:
- Tabelas de estados e municípios
- Tabela de endereços com coordenadas geográficas
- Tabela de equipamentos de saúde mental
- Tabela de tipos de serviços
- Tabela de vídeos educativos
- Índices geográficos para otimização de consultas
- Dados iniciais dos equipamentos
-
Acesse seu projeto no Supabase
-
Configure a autenticação:
- Vá para
Authentication > Settings - Em Site URL, configure:
- Desenvolvimento:
http://localhost:3000 - Produção:
https://seu-dominio.com
- Desenvolvimento:
- Em Redirect URLs, adicione:
- Desenvolvimento:
http://localhost:3000/admin/callback - Produção:
https://seu-dominio.com/admin/callback
- Desenvolvimento:
- Vá para
-
Obtenha as chaves de API:
- Vá para
Settings > API - Copie a URL do projeto (será usada como SUPABASE_URL)
- Copie a chave secret (será usada como SUPABASE_SECRET_KEY)
- Vá para
Adicione as seguintes variáveis ao seu arquivo .env:
# Configurações do Supabase Auth (OBRIGATÓRIO)
SUPABASE_URL=https://seu-projeto-id.supabase.co
SUPABASE_SECRET_KEY=sua_chave_secreta_supabase
ADMIN_EMAIL=admin@mentaliza.com-
No painel do Supabase:
- Vá para
Authentication > Users - Clique em Add user
- Vá para
-
Configure o usuário admin:
- Email:
admin@mentaliza.com(ou seu email preferido) - Password: Crie uma senha segura (mínimo 8 caracteres)
- Email Confirm: Marque como confirmado
- Auto Confirm User: Ative esta opção
- Email:
-
Inicie a aplicação:
npm run dev
-
Acesse o painel administrativo:
- URL:
http://localhost:3000/admin - Você será redirecionado para a tela de login do Supabase
- URL:
-
Faça login:
- Use o email e senha configurados no passo 3
- Após o login bem-sucedido, você será redirecionado para o painel
-
Verifique o acesso:
- Você deve conseguir ver e gerenciar equipamentos
- Todas as funcionalidades administrativas devem estar disponíveis
"Invalid login credentials"
- Verifique se o usuário foi criado corretamente no painel do Supabase
- Confirme se o email está marcado como confirmado
- Teste a senha no painel do Supabase (Authentication > Users)
"Invalid redirect URL"
- Verifique se as URLs de redirecionamento estão configuradas corretamente
- Confirme se não há espaços ou caracteres extras nas URLs
- Para desenvolvimento, use exatamente:
http://localhost:3000/admin/callback
"Supabase client not initialized"
- Verifique se
SUPABASE_URLeSUPABASE_SECRET_KEYestão no arquivo.env - Confirme se não há espaços extras nas variáveis de ambiente
- Reinicie o servidor após alterar o
.env
"Access denied" no painel administrativo
- Verifique se o usuário foi criado com o email correto
- Confirme se o email está confirmado no painel do Supabase
- Teste fazer login diretamente no painel do Supabase
"Network error" ou timeout
- Verifique sua conexão com a internet
- Confirme se o projeto Supabase está ativo e não pausado
- Teste acessar o painel do Supabase diretamente
- Obtenha uma chave da API do Google Maps:
- Acesse o Google Cloud Console
- Crie um novo projeto ou selecione um existente
- Ative a API do Google Maps JavaScript
- Gere uma chave de API
- Adicione a chave no arquivo
.envna variávelGOOGLE_MAPS_API_KEY
-
Inicie o servidor de desenvolvimento:
npm run dev
-
Acesse a aplicação:
- Abra seu navegador e acesse:
http://localhost:3000 - O servidor estará rodando e pronto para uso
- Abra seu navegador e acesse:
npm start: Inicia o servidor em modo produçãonpm run dev: Inicia o servidor em modo desenvolvimento com auto-reloadnpm test: Executa os testes unitáriosnpm run test:coverage: Executa os testes com relatório de coberturanpm run migrate:dev: Executa as migrações de desenvolvimentonpm run migrate:prod: Executa as migrações de produção
Se você encontrar erros de conexão com o banco de dados:
-
Verifique as credenciais no arquivo
.env:- Certifique-se de que todas as variáveis estão preenchidas corretamente
- Verifique se não há espaços extras nas variáveis
-
Para Supabase:
- Confirme se o projeto está ativo no painel do Supabase
- Verifique se o IP está na lista de IPs permitidos (ou configure para permitir todos:
0.0.0.0/0) - Verifique se o banco de dados está configurado corretamente no painel do Supabase
- Verifique se você está usando as credenciais corretas, procure por Session Pooler na página de configurações do banco de dados no supabase
Se as migrações falharem:
- Verifique a conexão com o banco primeiro
- Execute as migrações uma por vez para identificar qual está falhando
Se o mapa não carregar:
- Verifique se a chave da API está configurada no arquivo
.env - Confirme se a API está ativa no Google Cloud Console
- Verifique se há créditos disponíveis na conta do Google Cloud
Se receber erro de porta já em uso:
-
Altere a porta no arquivo
.env(variávelPORT) -
Ou termine o processo que está usando a porta 3000:
# No macOS/Linux lsof -ti:3000 | xargs kill -9 # No Windows netstat -ano | findstr :3000 taskkill /PID <PID_NUMBER> /F
npm run dev
-
Acesse a aplicação:
- Abra seu navegador e acesse:
http://localhost:3000 - O servidor estará rodando e pronto para uso
- Abra seu navegador e acesse:
Se não conseguir acessar /admin ou houver erros de autenticação:
-
Verifique a configuração do Supabase Auth:
- Confirme se
SUPABASE_URLeSUPABASE_SECRET_KEYestão no.env - Teste as credenciais no painel do Supabase
- Confirme se
-
Verifique o usuário administrador:
- Confirme se o usuário foi criado no painel do Supabase
- Verifique se o email está confirmado
- Teste fazer login diretamente no painel do Supabase
-
Verifique as URLs de redirecionamento:
- Desenvolvimento:
http://localhost:3000/admin/callback - Produção:
https://seu-dominio.com/admin/callback
- Desenvolvimento:
-
Problemas de rede:
- Verifique se o projeto Supabase está ativo
- Confirme sua conexão com a internet
- Teste acessar o painel do Supabase diretamente
-
Revisão e refinamento da documentação de negócios
- Atualização do Canvas de Proposta de Valor com correções requisitadas pelo professor
- Revisão da Análise de Mercado com aspectos mercadológicos e tecnológicos
- Aprimoramento da definição do Público-Alvo com visão comportamental
- Padronização e adequação de todas as referências bibliográficas
-
Melhoria na experiência do usuário e design
- Revisão completa das User Stories para alinhamento com personas
- Validação das personas existentes para adequação ao projeto
- Implementação de testes de usabilidade com metodologia de Teste de Guerrilha
- Validação de 10 cenários de uso com usuários reais
-
Correções e refinamentos no painel administrativo
- Correção crítica na funcionalidade de criação de novos equipamentos
- Implementação de novo botão para deletar tipos de vídeo no dashboard
- Comentários detalhados em todo o código fonte para melhor manutenibilidade
-
Melhorias na interface e usabilidade
- Redesign dos filtros do mapa para visibilidade permanente (sem necessidade de clique)
- Remoção do botão "Aplicar Filtros" - aplicação automática dos filtros
- Ajuste das cores do botão CVV para alinhamento com o guia de estilos
- Melhoria na tipografia do header para melhor legibilidade
-
Atualizações na arquitetura e documentação
- Atualização da documentação da arquitetura refletindo mudança de React para EJS
- Numeração e organização sistemática de todas as figuras do documento
-
Qualidade e testes
- Correção de falhas nos testes unitários existentes
- Validação final da aplicação através de testes de usabilidade
- Refinamento baseado em feedback dos usuários finais
- Implementação da segunda versão funcional do sistema
- Desenvolvimento completo da WebAPI com endpoints documentados e atualizados
- Implementação do Supabase Auth para autenticação de administradores
- Sistema de busca inteligente com expansão automática de raio
- Interface responsiva com controles de raio otimizados
- Testes unitários e de integração implementados
- Login do administrador implementado com supabase auth
- Novos tipos de filtro para equipamentos
- Melhorias no design e usabilidade do site
- Implementação da primeira versão funcional do sistema
- Desenvolvimento completo da WebAPI com endpoints documentados
- Criação do Guia de Estilos e Protótipo de Alta Fidelidade
- Implementação do padrão MVC (Model-View-Controller)
- Desenvolvimento do sistema de filtros e busca avançada
- Integração com Google Maps API
- Implementação do mapa interativo com geolocalização
- Sistema de administração para gerenciamento de equipamentos
- Desenvolvimento dos wireframes da aplicação
- Modelagem relacional completa do banco de dados
- Criação dos scripts SQL para estrutura do banco
- Implementação de consultas SQL otimizadas
- Desenvolvimento das migrações de banco de dados
- Configuração da estrutura de dados geoespaciais
- Documentação técnica das consultas SQL
- Criação da estrutura inicial do projeto (WAD)
- Definição do escopo e objetivos do projeto
- Análise de negócios (SWOT, 5 Forças de Porter)
- Desenvolvimento das personas do sistema
- Criação das User Stories no formato INVEST
- Definição dos critérios de aceite
- Priorização e organização do backlog
- Configuração inicial do ambiente de desenvolvimento
MODELO GIT BEE-MIND by Inteli, Anny Cerazi, Davi Duarte, Erik Taquemori, Gabriel Reis, Pedro Souza, Rayssa Guedes, Vinícius Cadena is licensed under Attribution 4.0 International.
