Sistema para gerenciamento de consultas médicas desenvolvido em .NET 8.
O backend do projeto Hackaton foi desenvolvido em .NET 8.0, utilizando uma arquitetura em camadas (N-Tier) com padrões de design modernos e boas práticas de desenvolvimento.
- .NET 8.0: Framework mais recente da Microsoft
- C#: Linguagem de programação principal
- ASP.NET Core: Framework web para construção de APIs RESTful
- SQL Server: Banco de dados relacional
- Entity Framework Core: ORM (Object-Relational Mapping)
- Migrations: Sistema de controle de versão do banco de dados
- JWT (JSON Web Tokens): Autenticação e autorização
- BCrypt: Hash de senhas
- Bearer Authentication: Esquema de autenticação
- CORS: Configurado para permitir requisições cross-origin
- Swagger/OpenAPI: Documentação automática da API
- Health Checks: Monitoramento de saúde da aplicação
-
API (Hackaton.Api)
- Controllers
- Configurações
- Middlewares
- Segurança
-
Application (Hackaton.Application)
- Serviços
- DTOs
- Interfaces de Serviço
-
Domain (Hackaton.Domain)
- Entidades
- Interfaces de Repositório
- Regras de Negócio
-
Infrastructure (Hackaton.Infrastructure)
- Repositórios
- Contexto do Banco de Dados
- Implementações de Persistência
- AdminController: Gerenciamento administrativo
- AuthController: Autenticação e autorização
- PacientesController: Gestão de pacientes
- MedicosController: Gestão de médicos
- ConsultasController: Gestão de consultas
- AgendasController: Gestão de agendas
- TestAuthController: Testes de autenticação
O diagrama ER acima apresenta a estrutura do banco de dados do sistema de consultas médicas, composto pelas seguintes entidades:
Armazena informações dos médicos cadastrados no sistema, incluindo nome, CRM, senha (hash), especialidade, valor da consulta, email e telefone.
Contém dados dos pacientes que utilizam o sistema, como nome, CPF, email, senha (hash), telefone e data de nascimento.
Gerencia os horários disponibilizados pelos médicos para atendimento, relacionando-se com a entidade Médicos.
Registra as consultas marcadas, relacionando médicos, pacientes e agendas, além de armazenar informações como data/hora, status e valor.
Este modelo permite o gerenciamento completo do fluxo de agendamento de consultas, desde a disponibilização de horários pelos médicos até a marcação e acompanhamento das consultas pelos pacientes.
- Login com JWT
- Refresh Token
- Proteção de rotas
- Hash seguro de senhas
- CRUD de Médicos
- CRUD de Pacientes
- Perfis de acesso
- Gestão de Agendas
- Marcação de Consultas
- Disponibilidade de Horários
- Tratamento global de exceções
- CORS
- Autenticação JWT
- Health Checks
- Swagger/OpenAPI
- Validação de tokens JWT
- Configuração de CORS
- Proteção contra ataques comuns
- Microsoft.AspNetCore.OpenApi (8.0.8)
- Swashbuckle.AspNetCore (6.5.0)
- Microsoft.EntityFrameworkCore.Design (8.0.8)
- Microsoft.AspNetCore.Authentication.JwtBearer (8.0.4)
- System.IdentityModel.Tokens.Jwt (7.4.0)
- BCrypt.Net-Next (4.0.3)
- POST /api/auth/login
- POST /api/auth/refresh-token
- GET /api/medicos
- POST /api/medicos
- PUT /api/medicos/{id}
- DELETE /api/medicos/{id}
- GET /api/pacientes
- POST /api/pacientes
- PUT /api/pacientes/{id}
- DELETE /api/pacientes/{id}
- GET /api/consultas
- POST /api/consultas
- PUT /api/consultas/{id}
- DELETE /api/consultas/{id}
- GET /api/agendas
- POST /api/agendas
- PUT /api/agendas/{id}
- DELETE /api/agendas/{id}
- Endpoint de Health Check: /health
- Swagger UI: /swagger
- Logs de exceções
- Monitoramento de performance
- Injeção de Dependência
- Repository Pattern
- Service Layer Pattern
- Tratamento de Exceções
- Validação de Dados
- Separação de Responsabilidades
- Autenticação JWT
- Hash de Senhas com BCrypt
- Proteção contra CSRF
- Validação de Tokens
- Headers de Segurança
- CORS Configurado
- Tratamento de Exceções Seguro
O projeto utiliza GitHub Actions para automação de CI/CD
