petrescue

Project Info
Technologies
Project Links
Imagens do Sistema
Mapa interativo com marcadores mostrando onde animais foram reportados
Detalhes de um caso: imagem, descrição, status e ação de marcar como resolvido
Formulário para criar novo relato com tipo, descrição, localização e imagem
Busca avançada: filtros por tipo, bairro, data e status para encontrar casos rapidamente
Detalhes Técnicos
O Pet Reports foi desenvolvido com uma arquitetura em camadas bem definida, facilitando a manutenção e a escalabilidade do sistema. As principais camadas são:
- Controller (REST): Recebe as requisições HTTP e direciona para os serviços corretos.
- Service: Onde ficam as regras de negócio, como validações, permissões e lógica dos relatos.
- Repository: Responsável pela comunicação com o banco de dados usando JPA/Hibernate.
- Security: Implementa autenticação e autorização via JWT, controlando o acesso por papel (usuário/admin).
- Infra: Integrações externas, como upload de imagens para o Cloudinary.
- Documentação: Toda a API é documentada automaticamente com Swagger (OpenAPI).
O sistema permite cadastro e login seguro, criação e busca de relatos com filtros, upload de imagens, permissões por papel e visualização dos casos em um mapa interativo.
Diagrama de entidades e relações do banco de dados (JPA/Hibernate)
Fluxo de uso: do cadastro ao resgate e resolução de casos
Modelo de Dados
Usuários
- id: UUID
- name: Nome
- email: E-mail
- password: Senha (BCrypt)
- role: USER | ADMIN
Relatórios
- id: UUID
- user: Referência ao usuário
- animal_type: Tipo do animal
- description: Descrição do caso
- image: URL da imagem
- latitude / longitude: Coordenadas geográficas
- date: Data da criação
- status: resolved | unresolved
Principais Endpoints REST
- POST /api/auth/register — Registro de novo usuário
- POST /api/auth/login — Login e geração de token JWT
- POST /api/reports — Criar novo relatório
- GET /api/reports/search — Buscar relatórios com filtros
- PATCH /api/reports/:id/resolve — Marcar como resolvido
- DELETE /api/reports/:id — Deletar relatório (usuário ou admin)