Sistema de gerenciamento para clínicas de psicoterapia, oferecendo funcionalidades para administração de pacientes, prontuários médicos e agendamentos.
- Visão Geral
- Arquitetura
- Tecnologias
- Funcionalidades
- Pré-requisitos
- Instalação
- Configuração
- Uso
- Docker
- API
- Estrutura do Projeto
- Testes
- Contribuição
- Licença
- Contato
HM Psicoterapia é uma aplicação web completa para gerenciamento de clínicas de psicoterapia. O sistema permite o cadastro e acompanhamento de pacientes, gerenciamento de prontuários médicos, histórico de tratamentos, medicações, exames e agendamento de consultas.
A aplicação foi desenvolvida seguindo os princípios de Clean Architecture e SOLID, garantindo um código modular, testável e de fácil manutenção.
O projeto segue a arquitetura Clean Architecture, dividida em camadas com responsabilidades bem definidas:
src/
├── domain/ # Regras de negócio e entidades
│ ├── entities/ # Interfaces e tipos de domínio
│ ├── repositories/ # Interfaces de repositório
│ └── usecases/ # Regras de negócio específicas
├── application/ # Lógica de aplicação
│ ├── services/ # Serviços que implementam casos de uso
│ └── state/ # Gerenciamento de estado (contexts)
├── infrastructure/ # Implementações externas
│ ├── api/ # Adaptadores de API
│ └── http/ # Cliente HTTP
└── presentation/ # Interface do usuário
├── components/ # Componentes reutilizáveis
├── layouts/ # Layouts de página
├── pages/ # Páginas da aplicação
├── hooks/ # Hooks personalizados
└── routes/ # Configuração de rotas
back-end/src/main/java/com/hmpsicoterapia/
├── domain/ # Regras de negócio e entidades
│ ├── entities/ # Entidades de domínio
│ ├── repositories/ # Interfaces de repositório
│ └── services/ # Interfaces de serviço
├── application/ # Lógica de aplicação
│ ├── dtos/ # Objetos de transferência de dados
│ └── usecases/ # Implementações de casos de uso
├── infrastructure/ # Implementações externas
│ ├── config/ # Configurações
│ ├── persistence/ # Implementações de repositório
│ └── security/ # Configuração de segurança
└── presentation/ # Interface com o usuário
├── controllers/ # Controladores REST
└── exceptions/ # Tratamento de exceções
- React: Biblioteca JavaScript para construção de interfaces
- TypeScript: Superset tipado de JavaScript
- Vite: Ferramenta de build rápida
- Tailwind CSS: Framework CSS utilitário
- React Router: Roteamento para React
- Axios: Cliente HTTP baseado em Promises
- Java: Linguagem de programação
- Spring Boot: Framework para desenvolvimento de aplicações Java
- Spring Security: Segurança e autenticação
- Spring Data JPA: Persistência de dados
- JWT: Autenticação baseada em tokens
- PostgreSQL: Banco de dados relacional
- Docker: Containerização da aplicação
- Docker Compose: Orquestração de containers
- Nginx: Servidor web para o frontend
- Cadastro completo de pacientes
- Histórico de atendimentos
- Dados de contato e informações pessoais
- Criação e edição de prontuários
- Registro de histórico médico
- Acompanhamento de medicações
- Registro de exames
- Anotações de consultas
- Registro de tipos de tratamento
- Acompanhamento de status do tratamento
- Histórico de evolução
- Login seguro
- Autenticação baseada em JWT
- Controle de acesso baseado em perfis
- Recuperação de senha
- Node.js (v14+)
- npm ou yarn
- Java JDK 11+
- Maven
- PostgreSQL
- Docker
- Docker Compose
git clone https://github.com/seu-usuario/hmpsicoterapia.git
cd hmpsicoterapiacd front-end
npm installcd back-end
mvn clean install# Na raiz do projeto
docker-compose up -dIsso irá construir e iniciar todos os serviços necessários (frontend, backend e banco de dados).
Crie um arquivo .env na raiz do diretório front-end com as seguintes variáveis:
VITE_API_URL=http://localhost:8080/api
Configure o arquivo application.properties em back-end/src/main/resources/:
# Banco de Dados
spring.datasource.url=jdbc:postgresql://localhost:5432/hmpsicoterapia
spring.datasource.username=seu_usuario
spring.datasource.password=sua_senha
spring.jpa.hibernate.ddl-auto=update
# JWT
jwt.secret=seu_segredo_jwt
jwt.expiration=86400000
# Email (para recuperação de senha)
spring.mail.host=smtp.gmail.com
spring.mail.port=587
spring.mail.username=seu_email@gmail.com
spring.mail.password=sua_senha_de_app
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=truecd back-end
mvn spring-boot:runO servidor estará disponível em http://localhost:8080.
cd front-end
npm run devA aplicação estará disponível em http://localhost:5173.
Após executar docker-compose up -d, a aplicação estará disponível em:
- Frontend: http://localhost
- Backend API: http://localhost:8080/api
- Banco de dados PostgreSQL: localhost:5433 (acessível via ferramentas como pgAdmin ou DBeaver)
- URL: http://localhost:5173 (desenvolvimento local) ou http://localhost (Docker)
- Usuário Admin: admin@hmpsicoterapia.com
- Senha: admin123
Recomendamos alterar a senha após o primeiro acesso.
O projeto está configurado para ser executado em containers Docker, facilitando a implantação e garantindo consistência entre ambientes.
docker-compose.yml: Orquestração dos serviços (frontend, backend, banco de dados)Dockerfile.frontend: Configuração para construir a imagem Docker do frontendback-end/Dockerfile: Configuração para construir a imagem Docker do backendnginx.conf: Configuração do Nginx para o frontend.env.docker: Variáveis de ambiente para o frontend no Dockerback-end/src/main/resources/application-docker.properties: Configuração do Spring Boot para o ambiente Docker
docker-compose up -ddocker-compose downdocker-compose up -d --builddocker-compose logs -fPara mais detalhes sobre a configuração Docker, consulte o arquivo README.docker.md.
A API REST do backend está disponível em http://localhost:8080/api (desenvolvimento local) ou http://localhost/api (Docker).
POST /api/auth/login- Login de usuárioPOST /api/auth/register- Registro de novo administradorPOST /api/auth/reset-password- Solicitar redefinição de senha
GET /api/prontuarios- Listar todos os prontuáriosGET /api/prontuarios/{id}- Obter prontuário específicoPOST /api/prontuarios- Criar novo prontuárioPUT /api/prontuarios/{id}- Atualizar prontuárioDELETE /api/prontuarios/{id}- Excluir prontuário
GET /api/pacientes- Listar todos os pacientesGET /api/pacientes/{id}- Obter paciente específicoPOST /api/pacientes- Criar novo pacientePUT /api/pacientes/{id}- Atualizar pacienteDELETE /api/pacientes/{id}- Excluir paciente
Para documentação completa da API, acesse http://localhost:8080/swagger-ui.html após iniciar o backend.
src/domain/entities: Definições de tipos e interfacessrc/application/services: Serviços para comunicação com a APIsrc/application/state: Gerenciamento de estado globalsrc/presentation/components: Componentes React reutilizáveissrc/presentation/pages: Páginas da aplicaçãopublic: Arquivos estáticos
src/main/java/com/hmpsicoterapia/domain/entities: Entidades JPAsrc/main/java/com/hmpsicoterapia/application/usecases: Serviços de negóciosrc/main/java/com/hmpsicoterapia/presentation/controllers: Controladores RESTsrc/main/resources: Configurações e recursos
cd front-end
npm testcd back-end
mvn test- Faça um fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature) - Faça commit das suas alterações (
git commit -m 'Adiciona nova feature') - Faça push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
- Siga os princípios SOLID e Clean Architecture
- Mantenha a cobertura de testes
- Documente novas funcionalidades
- Siga o estilo de código do projeto
Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE.md para detalhes.