Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.