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.2e rodando em producao.
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.
- 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)
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
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 # WindowsDica: 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 |
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
DataSeederrepopula). Instrucoes, limites e troubleshooting em docs/DEPLOY.md.
# testes + gate de cobertura (JaCoCo >= 80% linhas)
./mvnw verifySuite: 98 testes (unitarios de services/controllers + integracao E2E com H2 in-memory), 0 falhas, cobertura >= 97%.
| 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
| 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 |
- 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
Sugestoes, issues e pull requests sao bem-vindos! Veja o fluxo de contribuicao no GUIA.
Distribuido sob a licenca MIT. Veja o arquivo LICENSE.