Skip to content

Latest commit

 

History

History
161 lines (122 loc) · 5.97 KB

File metadata and controls

161 lines (122 loc) · 5.97 KB

CosmosX API

Versao Status Testes Cobertura Java Spring Boot Licenca

API REST em Java + Spring Boot para gerenciamento de uma agencia espacial ficticia: astronautas, naves espaciais, planetas, missoes, simulacao de missoes, estatisticas e exploracao.

Projeto CONCLUIDO. Todas as fases do Roadmap foram implementadas e entregues; a versao atual esta publicada na tag v2.0.2 e rodando em producao.


Sobre o projeto

O CosmosX API e uma API para controlar operacoes de uma frota espacial. Ela permite cadastrar e consultar:

  • Astronautas
  • Naves espaciais (spacecrafts)
  • Planetas
  • Missoes

Alem disso, inclui simulacao de execucao de missoes (com eventos aleatorios de perigo, consumo de combustivel e coleta de recursos), estatisticas gerais, ranking de astronautas, historico e descoberta automatica de planetas.

Os dados sao persistidos em um banco H2 (arquivo ./data/, gitignored) usando JPA/Hibernate.

Tecnologias

  • Java 17+ (compilado/testado até o Java 25)
  • Spring Boot 4.1.0 (Spring Web MVC)
  • Spring Data JPA (Hibernate)
  • H2 (banco embarcado + console web)
  • Bean Validation (spring-boot-starter-validation)
  • Spring Boot Actuator (health check /actuator/health)
  • Swagger/OpenAPI (springdoc-openapi)
  • JaCoCo (cobertura >= 80% de linhas)
  • Maven (com Maven Wrapper)

Estrutura do projeto

src/main/java/com/goomez/CosmosX/
├── config/          # CORS, OpenAPI, DataSeeder
├── controller/      # Endpoints REST
├── service/         # Regras de negocio
├── repository/      # Repositorios JPA
├── model/           # Entidades JPA
├── dto/             # Request/Response records
├── exception/       # Excecoes customizadas
└── handler/         # Global Exception Handler

Como executar

Pre-requisitos: JDK 17+ (ex.: 17, 21 ou 25 — precisa ter javac), e Maven (ou use o wrapper incluso no projeto).

# clonar o repositorio
git clone https://github.com/GoomezCode/CosmosX_API.git
cd CosmosX_API

# apontar para um JDK completo (com javac), se necessario
export JAVA_HOME=~/.jdks/jdk-25.0.4.1+1

# rodar a aplicacao
./mvnw spring-boot:run     # Linux/Mac
mvnw.cmd spring-boot:run   # Windows

Dica: se der erro release version 17 not supported, o JDK em uso nao tem compilador/versao adequada — veja a Solucao de Problemas.

A aplicacao sobe por padrao em http://localhost:8080.

Recurso URL
API http://localhost:8080
Swagger UI http://localhost:8080/swagger-ui.html
OpenAPI JSON http://localhost:8080/v3/api-docs
H2 Console http://localhost:8080/h2-console
Health Check http://localhost:8080/actuator/health

Producao

A API esta publicada e rodando no Render:

Recurso URL
API https://cosmosx-api.onrender.com
Swagger UI https://cosmosx-api.onrender.com/swagger-ui.html
Health Check https://cosmosx-api.onrender.com/actuator/health

No tier gratuito do Render o disco e efemero: os dados do H2 resetam a cada deploy (o DataSeeder repopula). Instrucoes, limites e troubleshooting em docs/DEPLOY.md.

Testes

# testes + gate de cobertura (JaCoCo >= 80% linhas)
./mvnw verify

Suite: 98 testes (unitarios de services/controllers + integracao E2E com H2 in-memory), 0 falhas, cobertura >= 97%.

Endpoints disponiveis

Recurso GET all GET by ID POST PUT DELETE
/astronauts
/spacecraft
/planet
/mission
/mission/{id}/start - - - -
/mission/history - - - -
/stats - - - -
/ranking - - - -
/exploration/discover - - - -
/actuator/health - - - -

Documentacao detalhada: docs/ENDPOINTS.md

Documentacao

Arquivo Descricao
GUIA.md Guia de configuracao e execucao
ENDPOINTS.md Documentacao dos endpoints
ROADMAP.md Roadmap de implementacao (Fases 1-6)
ARQUITETURA.md Padroes e arquitetura
TECHNICAL_REFERENCE.md Referencia tecnica consolidada
DEPLOY.md Deploy em producao (Render/Docker)
CHANGELOG.md Historico de versoes

Status

  • CRUD de astronautas, naves, planetas e missoes (com GET by ID, PUT e DELETE)
  • ID auto-gerado nas entidades
  • DTO Pattern (Request/Response)
  • Bean Validation
  • Global Exception Handler
  • Simulacao de missoes (/mission/{id}/start) com combustivel, perigo e recursos
  • Estatisticas (/stats), ranking (/ranking) e historico (/mission/history)
  • Descoberta automatica de planetas (/exploration/discover)
  • Persistencia JPA + H2
  • Swagger/OpenAPI
  • CORS configurado
  • Spring Boot Actuator (/actuator/health)
  • Testes unitarios + integracao E2E (98 testes, 0 falhas)
  • JaCoCo com gate de cobertura >= 80%
  • Licenca MIT

Contribuindo

Sugestoes, issues e pull requests sao bem-vindos! Veja o fluxo de contribuicao no GUIA.

Licenca

Distribuido sob a licenca MIT. Veja o arquivo LICENSE.