Skip to content

danielvitor-me/orchid-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OrchidAPI 🌸

Java Spring PostgreSQL Flyaway JUnit Spring Open Doc

O OrchidAPI é uma API REST desenvolvida para catalogar coleções de orquídeas, ideal para uso pessoal ou pequenos cultivadores. O sistema permite gerenciar o acervo completo de plantas, organizando-as por dados botânicos (espécies), localização física (ambientes), histórico visual (imagens) e categorização dinâmica por meio de etiquetas (tags).


🚀 Funcionalidades Principais

  • Gerenciamento do Acervo: Cadastro completo de orquídeas individuais com controle de estado de saúde (SAUDAVEL, EM_OBSERVACAO, DOENTE, EM_RECUPERACAO), data de aquisição e observações personalizadas.
  • Classificação Botânica: Vinculação das plantas a espécies com dados taxonômicos fixos (origem, nome científico único, família).
  • Organização por Ambiente: Mapeamento físico de onde as plantas estão localizadas (ex: estufa, varanda, jardim), facilitando o manejo e a busca rápida.
  • Galeria de Fotos: Suporte ao registro cronológico de imagens de cada orquídea para acompanhamento de evolução e floração.
  • Categorização Flexível (Tags): Sistema de etiquetas muitos-para-muitos para agrupar plantas por características sazonais ou de interesse (ex: "Floração Roxa", "Miniatura", "Presente de Aniversário").
  • Busca Avançada: Filtragem dinâmica de orquídeas por espécie, ambiente e tags associadas.

🛠️ Tecnologias e Ferramentas Utilizadas

Componente Tecnologia Papel no Projeto
Framework Base Spring Boot 3.x Ecossistema principal da aplicação
Persistência / ORM Spring Data JPA + Hibernate Abstração de banco de dados e mapeamento de entidades
Banco de Dados PostgreSQL Banco de dados relacional para produção/desenvolvimento
Versionamento de Banco Flyway Gerenciamento de evoluções do esquema via migrações SQL
Validação Bean Validation (Jakarta) Validação rigorosa dos dados de entrada (@NotNull, @Size, etc.)
Documentação Springdoc OpenAPI (Swagger UI) Geração automática da documentação dos endpoints
Testes JUnit 5 + MockMvc Testes de integração e validação das camadas de controle

📐 Padrões de Projeto e Boas Práticas

Para garantir a manutenibilidade, escalabilidade e clareza do código, o projeto adota:

  • Arquitetura em Camadas: Divisão clássica entre Controller (camada de apresentação/HTTP), Service (regras de negócio) e Repository (acesso a dados).
  • Uso de DTOs (Data Transfer Objects): Isolamento total das entidades de domínio. A API recebe e expõe objetos específicos de Request/Response, evitando vazamento de dados internos.
  • Tratamento Global de Exceções: Implementação de @ControllerAdvice para capturar falhas de negócio ou validações e retornar respostas JSON padronizadas e amigáveis ao cliente.
  • Imutabilidade e Segurança: Validação de payloads HTTP logo na entrada da aplicação via Bean Validation.

🗄️ Modelo de Dados (Estrutura Conceitual)

O banco de dados está modelado de forma relacional com as seguintes conexões:

  • Espécie 1 : N Orquídea — Uma espécie abriga várias plantas do acervo.
  • Ambiente 1 : N Orquídea — Um espaço físico agrupa várias plantas.
  • Orquídea 1 : N Imagem — Uma planta pode ter histórico de várias fotos.
  • Orquídea N : M Tag — Múltiplas orquídeas podem compartilhar várias etiquetas customizadas.

🛣️ Principais Endpoints

Abaixo estão os endpoints fundamentais além dos CRUDs convencionais (GET, POST, PUT, DELETE) de cada recurso:

Orquídeas

  • GET /orquideas?especieId=&ambienteId=&tagId= — Consulta avançada com filtros dinâmicos.
  • GET /orquideas/{id}/imagens — Retorna o histórico de imagens de uma planta específica.

Vínculo de Etiquetas (Tags)

  • POST /orquideas/{id}/tags/{tagId} — Associa uma tag existente a uma orquídea.
  • DELETE /orquideas/{id}/tags/{tagId} — Remove a associação de uma tag de uma orquídea.

📦 Como Executar o Projeto

Pré-requisitos

  • Java 21 ou superior instalado.
  • Maven 3.8+ instalado (ou utilizar o wrapper ./mvnw).
  • Instância do PostgreSQL ativa.

Passos para Execução

1. Clonar o repositório:

git clone https://github.com/seu-usuario/orchid-api.git
cd orchid-api

2. Configurar as credenciais do Banco de Dados:

Abra o arquivo src/main/resources/application.properties e ajuste as configurações conforme o seu ambiente:

spring.datasource.url=jdbc:postgresql://localhost:5432/nome_do_seu_banco
spring.datasource.username=seu_usuario
spring.datasource.password=sua_senha
 
# O Flyway cuidará da criação das tabelas automaticamente ao rodar
spring.flyway.enabled=true

3. Compilar e buildar a aplicação:

mvn clean install

4. Executar a aplicação:

mvn spring-boot:run

📖 Documentação da API

Com a aplicação em execução, você pode visualizar interativamente todos os endpoints disponíveis, parâmetros aceitos e esquemas de dados acessando a interface do Swagger UI:

http://localhost:8080/swagger-ui.html

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages