petrescue

petrescue cover

Project Info

Technologies

Java
Spring Boot
Spring Security
PostgreSQL
React
TailwindCSS
Cloudinary

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)