8000
Skip to content

stephanievitoria/api-dinochronos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

🦖 DinoChronos API

Status Java Spring Boot PostgreSQL

A DinoChronos API é um ecossistema backend robusto que gerencia dados paleontológicos para uma experiência estilo "Pokédex". O projeto foi desenvolvido com foco em alta coesão e baixo acoplamento, utilizando padrões arquiteturais modernos para garantir uma base de código sustentável e profissional.


Do Design ao Dado (UI/UX & IHC)

Embora este repositório seja focado no Backend, a estrutura de dados foi projetada para atender aos requisitos de uma interface visual exclusiva desenhada no Figma. O design utiliza conceitos de Glassmorphism e HUD Interfaces, onde cada dado técnico preenche componentes interativos.

Visualização do Card (Figma Design):

Card Design T-Rex

Exemplo de Retorno da API (JSON):

{
  "id": 7,
  "nome": "Tyrannosaurus rex",
  "dieta": "CARNIVORO",
  "periodo": "CRETACEO",
  "tamanho": "12M",
  "peso": "8T",
  "descricao": "O Tyrannosaurus rex foi um dos maiores predadores terrestres já existentes...",
  "imagemUrl": "https://imgur.com/a/87Gzngn"
}

Nota de IHC: A separação entre a camada de apresentação e a API garante que os dados científicos (peso, tamanho, dieta) sejam servidos com integridade para a composição visual dos cards.


Arquitetura

O projeto segue os princípios da Clean Architecture, separando responsabilidades em camadas:

  • Domain: Regras de negócio puras, modelos (Entities) e contratos de repositório.
  • Application: Implementação dos Casos de Uso (UseCases) que orquestram o fluxo de dados.
  • Infrastructure: Camada técnica responsável pela persistência (JPA), configurações e drivers.
  • Presentation: Interface REST com suporte a DTOs para garantir contratos de entrada e saída seguros.

Tecnologias e Ferramentas

  • Linguagem: Java 21 (LTS)
  • Framework: Spring Boot 4.0.5
  • IDE: IntelliJ IDEA
  • Persistência: Spring Data JPA / Hibernate
  • Banco de Dados: PostgreSQL
  • Documentação: Swagger (OpenAPI 3.0)
  • Gerenciador de Dependências: Maven

Funcionalidades Backend

  • Gestão de Dados: Cadastro e persistência de informações científicas via API.

  • Busca Inteligente: Consulta por nome com suporte a Case Insensitivity.

  • Filtros Geológicos: Listagem segmentada por períodos (Triássico, Jurássico, Cretáceo).

  • Listagem de Coleção: Recuperação total de registros via API REST.

  • Documentação Dinâmica: Interface Swagger integrada para teste e inserção de dados.


Endpoints Principais (Quick View)

Para detalhes completos de schemas e códigos de retorno, consulte o Swagger UI. Abaixo, os principais pontos de entrada da API:

Método Endpoint Descrição
POST /api/dinos Cadastra um novo dinossauro na base científica.
GET /api/dinos Lista todos os registros (suporta paginação).
GET /api/dinos/{id} Busca detalhes completos de um espécime por ID.
GET /api/dinos/nome/{nome} Filtro inteligente por nome (Case Insensitive).
GET /api/dinos/periodo/{periodo} Filtra dinossauros por Era Geológica.

Fluxo da Aplicação

O sistema segue um fluxo rigoroso de camadas para garantir que a regra de negócio permaneça isolada e protegida:

ClientController (Presentation) → UseCase (Application) → Gateway/Repository (Domain) → JPA/PostgreSQL (Infrastructure)

  1. Request: O JSON chega pelo Controller e é validado via DTO.
  2. Processamento: O UseCase executa a lógica e orquestra as entidades de domínio.
  3. Mapeamento: O Mapper converte os objetos de domínio para Entidades JPA.
  4. Persistência: O dado é gravado no PostgreSQL através da implementação da infraestrutura.

Estrutura do Projeto

A organização das pastas reflete a separação de interesses e a independência de frameworks:

DinoChronos/
 ├── presentation/   # Entrada: Controllers REST e DTOs (Request/Response)
 ├── application/    # Orquestração: Casos de Uso (UseCases) e Mappers
 ├── domain/         # Core: Entidades, Enums e Interfaces de Repositório
 └── infrastructure/ # Detalhes Técnicos: Configurações, JPA e Persistence

Padrões e Conceitos Utilizados

Para garantir a escalabilidade e a manutenibilidade da DinoChronos API, foram aplicados os seguintes padrões e conceitos de engenharia:

  • Clean Architecture: Organização modular que garante a independência de frameworks e foca na lógica de negócio (Core).
  • Separation of Concerns (SoC): Divisão clara de responsabilidades entre as camadas de apresentação, aplicação, domínio e infraestrutura.
  • DTO Pattern (Request/Response): Utilização de objetos de transferência para desacoplar as entidades do banco de dados das respostas da API, garantindo segurança e flexibilidade contratual.
  • Mapper Pattern (Domain ↔ Entity): Isolamento das transformações de dados, garantindo que o domínio não conheça detalhes da persistência.
  • Repository Pattern: Abstração da camada de dados, permitindo que a aplicação dependa de interfaces e facilite a inversão de dependência.
  • SOLID: Aplicação dos princípios de Responsabilidade Única (SRP) e Inversão de Dependência (DIP) em toda a estrutura de camadas.

Garantia de Qualidade & Documentação

Testes Automatizados

A integridade dos fluxos de negócio é validada através de testes unitários utilizando JUnit e Mockito, garantindo a confiabilidade da lógica de domínio e a estabilidade dos UseCases.

Swagger UI (Documentação Interativa)

Acesse a interface de testes e a documentação dos endpoints através do link local: http://localhost:8082/swagger-ui/index.html


Como Rodar o Projeto

  1. Pré-requisitos: JDK 21 e PostgreSQL configurado e rodando.
  2. Clone o repositório:
    git clone https://github.com/stephanievitoria/api-dinochronos.git
  3. Configuração de Ambiente: Renomeie o arquivo application.properties.example para application.properties e insira suas credenciais locais de banco de dados. (Nota: Este arquivo está protegido via .gitignore para sua segurança).
  4. Execução:
    mvn spring-boot:run

Autora

Desenvolvido por Stephanie Soares


Foco em escalabilidade, integridade de dados e arquitetura profissional.

About

A DinoChronos API é uma aplicação backend desenvolvida em Java com Spring Boot que permite o cadastro, consulta e exploração de dinossauros de forma estruturada, inspirada em uma Pokédex.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

0