Skip to content
 
 

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Inteli - Instituto de Tecnologia e Liderança

Inteli - Instituto de Tecnologia e Liderança

Mentaliza

Time Bee-mind

Integrantes

Professores

Orientadora

Instrutores

Descrição do Projeto

Descrição do Projeto

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.


Tecnologias Utilizadas

Backend

  • 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.

Frontend

  • JavaScript: Linguagem de programação principal para o desenvolvimento do frontend.
  • HTML5 e CSS3: Estruturação e estilização da interface do usuário.

Outras Tecnologias e Ferramentas

  • 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.

Link de demonstração

Veja este vídeo para ver o funcionamento da plataforma: Link.

Estrutura de pastas

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

Configuração para desenvolvimento e execução do código

 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.

Pré-requisitos

  1. 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.
  2. 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

Instalação

  1. Clone o repositório:

    git clone https://github.com/Inteli-College/2025-1B-T17-IN02-G05.git
  2. Navegue para o diretório do projeto e instale as dependências:

    cd 2025-1B-T17-IN02-G05/src
    npm install

Configuração do Banco de Dados

Opção 1: Usando Supabase (Recomendado)

  1. Crie uma conta no Supabase

  2. Crie um novo projeto no Supabase

  3. Configure as variáveis de ambiente:

    • Copie o arquivo .env.example para .env na pasta src/:
    cp .env.example .env
    • Edite o arquivo .env com suas credenciais do Supabase
  4. 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

Configuração das Tabelas do Banco de Dados

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:dev

Este 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

Configuração do Supabase Auth

1. Configuração no Painel do Supabase

  1. Acesse seu projeto no Supabase

  2. Configure a autenticação:

    • Vá para Authentication > Settings
    • Em Site URL, configure:
      • Desenvolvimento: http://localhost:3000
      • Produção: https://seu-dominio.com
    • Em Redirect URLs, adicione:
      • Desenvolvimento: http://localhost:3000/admin/callback
      • Produção: https://seu-dominio.com/admin/callback
  3. 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)

2. Configuração das Variáveis de Ambiente

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

3. Criação do Usuário Administrador

  1. No painel do Supabase:

    • Vá para Authentication > Users
    • Clique em Add user
  2. 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

4. Testando a Autenticação

  1. Inicie a aplicação:

    npm run dev
  2. Acesse o painel administrativo:

    • URL: http://localhost:3000/admin
    • Você será redirecionado para a tela de login do Supabase
  3. Faça login:

    • Use o email e senha configurados no passo 3
    • Após o login bem-sucedido, você será redirecionado para o painel
  4. Verifique o acesso:

    • Você deve conseguir ver e gerenciar equipamentos
    • Todas as funcionalidades administrativas devem estar disponíveis

5. Solução de Problemas do Supabase Auth

"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_URL e SUPABASE_SECRET_KEY estã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

Configuração da API do Google Maps

  1. 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 .env na variável GOOGLE_MAPS_API_KEY

Execução da Aplicação

  1. Inicie o servidor de desenvolvimento:

    npm run dev
  2. Acesse a aplicação:

    • Abra seu navegador e acesse: http://localhost:3000
    • O servidor estará rodando e pronto para uso

Scripts Disponíveis

  • npm start: Inicia o servidor em modo produção
  • npm run dev: Inicia o servidor em modo desenvolvimento com auto-reload
  • npm test: Executa os testes unitários
  • npm run test:coverage: Executa os testes com relatório de cobertura
  • npm run migrate:dev: Executa as migrações de desenvolvimento
  • npm run migrate:prod: Executa as migrações de produção

Solução de Problemas Comuns

Erro de Conexão com o Banco de Dados

Se você encontrar erros de conexão com o banco de dados:

  1. 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
  2. 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

Erro nas Migrações

Se as migrações falharem:

  1. Verifique a conexão com o banco primeiro
  2. Execute as migrações uma por vez para identificar qual está falhando

Problemas com a API do Google Maps

Se o mapa não carregar:

  1. Verifique se a chave da API está configurada no arquivo .env
  2. Confirme se a API está ativa no Google Cloud Console
  3. Verifique se há créditos disponíveis na conta do Google Cloud

Porta já em uso

Se receber erro de porta já em uso:

  1. Altere a porta no arquivo .env (variável PORT)

  2. 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
  3. Acesse a aplicação:

    • Abra seu navegador e acesse: http://localhost:3000
    • O servidor estará rodando e pronto para uso

Problemas com o Painel Administrativo

Se não conseguir acessar /admin ou houver erros de autenticação:

  1. Verifique a configuração do Supabase Auth:

    • Confirme se SUPABASE_URL e SUPABASE_SECRET_KEY estão no .env
    • Teste as credenciais no painel do Supabase
  2. 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
  3. Verifique as URLs de redirecionamento:

    • Desenvolvimento: http://localhost:3000/admin/callback
    • Produção: https://seu-dominio.com/admin/callback
  4. Problemas de rede:

    • Verifique se o projeto Supabase está ativo
    • Confirme sua conexão com a internet
    • Teste acessar o painel do Supabase diretamente

Histórico de lançamentos

1.0.0 - 26/06/2025 (Sprint 5)

  • 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

0.4.0 - 13/06/2025 (Sprint 4)

  • 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

0.3.0 - 30/05/2025 (Sprint 3)

  • 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

0.2.0 - 16/05/2025 (Sprint 2)

  • 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

0.1.0 - 02/05/2025 (Sprint 1)

  • 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

Licença

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.

About

Development of a web platform to democratize access to free mental health resources in Brazil. Built with Node.js, PostgreSQL, Supabase, and JavaScript, it features an interactive map, geolocation, and a CRUD dashboard, with a Figma-designed interface focused on accessibility, usability, and intuitive navigation.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages