Uma API completa para conectar pessoas com deficiência e voluntários, facilitando solicitações de ajuda e avaliações de acessibilidade de locais públicos e privados.
A AcessibilidadeWebAPI é uma solução desenvolvida em .NET 8 que visa melhorar a inclusão e acessibilidade através de:
- 🤝 Conexão entre deficientes e voluntários para assistência personalizada
- 📍 Sistema de avaliação de acessibilidade de locais públicos e privados
- 🔔 Notificações em tempo real via Azure IoT Hub
- 🛡️ Autenticação JWT com diferentes perfis de usuário
- 📊 Histórico completo de solicitações e assistências
- ✅ Cadastro de Deficientes - Perfil completo com tipo de deficiência
- ✅ Cadastro de Voluntários - Perfil com habilidades e disponibilidade
- ✅ Autenticação JWT - Login seguro com roles diferenciados
- ✅ Atualização de Perfis - Gerenciamento completo de dados
- ✅ Solicitações de Ajuda - Deficientes podem pedir assistência específica
- ✅ Aceite de Voluntários - Matching inteligente entre necessidade e habilidade
- ✅ Histórico de Status - Rastreamento completo: Pendente → Aceita → Concluída
- ✅ Avaliação de Qualidade - Feedback sobre assistências prestadas
- ✅ Cadastro de Locais - Endereços e informações de acessibilidade
- ✅ Avaliações Detalhadas - Notas e comentários sobre acessibilidade
- ✅ Histórico de Avaliações - Evolução da acessibilidade ao longo do tempo
- ✅ Busca Inteligente - Encontrar locais acessíveis próximos
- ✅ Azure IoT Hub - Notificações em tempo real
- ✅ Dispositivos Múltiplos - Suporte a diferentes plataformas
- ✅ Eventos Importantes - Novas solicitações, aceites, conclusões
AcessibilidadeWebAPI/
├── 📁 Entidades/ # Modelos de dados (Deficiente, Voluntario, etc.)
├── 📁 Controllers/ # Endpoints da API
├── 📁 BancoDados/ # DbContext e mapeamentos EF Core
├── 📁 Repositorios/ # Camada de acesso a dados
├── 📁 Executores/ # Lógica de negócio
├── 📁 Models/ # DTOs de entrada e saída
├── 📁 Dtos/ # Objetos de transferência
├── 📁 Services/ # Serviços (Push notifications, etc.)
└── 📁 Migrations/ # Migrações do banco de dados
- 👤 Usuario: Classe base para Deficiente e Voluntario
- ♿ Deficiente: Usuário com necessidades de assistência
- 🤝 Voluntario: Usuário que oferece ajuda
- 📋 SolicitacaoAjuda: Pedidos de assistência
- ✅ Assistencia: Registro de ajuda prestada
- 📍 Local: Locais avaliados quanto à acessibilidade
- ⭐ AvaliacaoLocal: Avaliações de acessibilidade
- ✅ .NET 8 SDK instalado
- ✅ SQL Server (LocalDB ou instância completa)
- ✅ Git configurado
- ✅ IDE (Visual Studio, VS Code, Rider)
-
Clone o repositório:
git clone <url-do-repositorio> cd AcessibilidadeWebAPI
-
Configure a string de conexão em
appsettings.json:{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=AcessibilidadeDB;Trusted_Connection=true;" } } -
Execute as migrações:
dotnet ef database update --project AcessibilidadeWebAPI
-
Compile e execute:
dotnet build dotnet run --project AcessibilidadeWebAPI
-
Acesse a API:
- 🌐 Swagger UI:
https://localhost:7139/swagger - 📡 API Base:
https://localhost:7139/api
- 🌐 Swagger UI:
# Todos os testes
dotnet test AcessibilidadeWebAPI.Tests
# Apenas testes de DataConclusao (correção específica)
dotnet test --filter "DataConclusao"
# Com relatório detalhado
dotnet test --logger "console;verbosity=detailed"Problema Original:
- Campo
DataConclusaousando "data futura" (AddYears(100)) para representar assistências não concluídas
Solução Implementada:
- ✅ DataConclusao nullable (
DateTimeOffset?) - ✅ Lógica corrigida em todos os controllers
- ✅ DTOs atualizados para suportar nullable
- ✅ Validação através de testes específicos
Impacto:
- 🎯 Lógica mais limpa e semânticamente correta
- 🧪 98.5% dos testes passando (64 de 65)
- 🔍 Validação específica através de git hooks
Configuração MSBuild Integrada:
- ✅ Instalação automática no primeiro build
- ✅ Multiplataforma (Windows, Linux, Mac)
- ✅ Validações obrigatórias antes de cada push
Proteções Ativas:
# Executado automaticamente a cada git push:
- 📦 Build do projeto principal
- 🧪 Build dos testes
- 🔬 Execução de todos os testes
- 🎯 Validação específica DataConclusaoPOST /api/auth/register- Cadastro de usuárioPOST /api/auth/login- Login e obtenção de JWTPUT /api/auth/profile- Atualização de perfil
GET /api/deficiente- Listar deficientesGET /api/voluntario- Listar voluntáriosGET /api/voluntario/perfil- Perfil completo do voluntário
POST /api/solicitacao-ajuda- Criar solicitaçãoPOST /api/solicitacao-ajuda/{id}/aceitar- Aceitar solicitaçãoGET /api/solicitacao-ajuda/disponiveis- Listar disponíveisPOST /api/assistencia- Registrar assistência
GET /api/local- Listar locaisPOST /api/local- Cadastrar localPOST /api/avaliacao-local- Avaliar acessibilidadeGET /api/avaliacao-local/local/{id}- Avaliações de um local
- ✅ 64 de 65 testes passando (98.5%)
- ✅ Testes unitários para todas as entidades
- ✅ Testes de integração para controllers
- ✅ Testes específicos para correção DataConclusao
- 🛡️ Git hooks impedem push de código problemático
- 📦 Build obrigatório antes de commit
- 🧪 Testes obrigatórios antes de push
- 🎯 Validação contínua da correção DataConclusao
- ✅ Nullable reference types habilitados
- ✅ Entity Framework Core com mapeamentos fluentes
- ✅ Injeção de dependência configurada
- ✅ Separação de responsabilidades (Repository/Executor pattern)
- 🔧 Backend: .NET 8, ASP.NET Core Web API
- 🗄️ Banco de Dados: SQL Server + Entity Framework Core
- 🔐 Autenticação: JWT Bearer Tokens
- 🔔 Notificações: Azure IoT Hub / Azure Mobile Push
- 🧪 Testes: xUnit, Entity Framework InMemory
- 📦 Build: MSBuild com targets customizados
- 🛡️ CI/CD: Git Hooks automáticos
-
Clone e configure:
git clone <repo> cd AcessibilidadeWebAPI dotnet build # Instala git hooks automaticamente
-
Crie sua branch:
git checkout -b feature/nova-funcionalidade
-
Desenvolva e teste:
# Seus commits normais git add . git commit -m "Implementar nova funcionalidade" # Push (vai executar todas as validações automaticamente) git push origin feature/nova-funcionalidade
- 🎯 Todas as mudanças devem ter testes correspondentes
- 📝 Commits em português seguindo convenções semânticas
- 🧪 100% dos testes devem passar antes do push
- 🛡️ Git hooks garantem qualidade automaticamente
- Verifique se o problema já não foi reportado
- Inclua passos para reproduzir o problema
- Informe versão do .NET e sistema operacional
- Anexe logs relevantes se disponível
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- 🐛 Issues: Use o sistema de issues do GitHub
- 💬 Discussões: GitHub Discussions
- 📧 Email: [seu-email@exemplo.com]
- ✅ Funcional: API completa e operacional
- 🧪 Testado: 98.5% dos testes passando
- 🛡️ Protegido: Git hooks automáticos ativos
- 🚀 Pronto: Para deploy em produção
Desenvolvido com ❤️ para promover acessibilidade e inclusão. Contribuições são sempre bem-vindas! 🇧🇷