Uma API REST para gerenciamento de cápsulas do tempo, permitindo criar e armazenar mensagens que serão "abertas" em datas futuras específicas.
O Cápsula do Tempo Core é uma aplicação Spring Boot que oferece funcionalidades para:
- 🕰️ Criar cápsulas do tempo com datas de expiração
- 💌 Adicionar mensagens às cápsulas
- 📅 Gerenciar cronograma de envio de mensagens
- 📊 Acompanhar status das mensagens (enviadas/pendentes)
- 🔍 Consultar cápsulas e mensagens através de uma API REST
- Java 21
- Spring Boot 3.3.13
- Spring Data JPA
- PostgreSQL
- Flyway (migrações de banco)
- SpringDoc OpenAPI 3 (documentação Swagger)
- Lombok
- Maven
GET /api/capsulas/- Lista todas as cápsulasPOST /api/capsulas/- Cria uma nova cápsulaGET /api/capsulas/{id}- Obtém uma cápsula específicaPUT /api/capsulas/{id}- Atualiza uma cápsulaDELETE /api/capsulas/{id}- Remove uma cápsula
GET /api/capsulas/{id}/mensagens- Lista mensagens de uma cápsulaPOST /api/capsulas/{id}/mensagens- Adiciona mensagem à cápsulaGET /api/capsulas/{capsulaId}/mensagens/{id}- Obtém mensagem específicaPUT /api/capsulas/{capsulaId}/mensagens/{id}- Atualiza uma mensagemDELETE /api/capsulas/{capsulaId}/mensagens/{id}- Remove uma mensagem
- Java 21 ou superior
- PostgreSQL instalado e rodando
- Maven (ou use o wrapper incluído no projeto)
git clone https://github.com/WirisWernek/capsula-do-tempo-core.git
cd capsula-do-tempo-coreCrie um banco de dados PostgreSQL:
CREATE DATABASE capsula_do_tempo;O projeto já possui configurações padrão no application.yml, mas você pode personalizar através de variáveis de ambiente:
export DATABASE_SERVER=localhost
export DATABASE_PORT=5432
export DATABASE_NAME=capsula_do_tempo
export DATABASE_USER=postgres
export DATABASE_PASSWORD=postgres# No Linux/macOS
./mvnw spring-boot:run
# No Windows
mvnw.cmd spring-boot:runmvn spring-boot:run# Compilar o projeto
./mvnw clean package -DskipTests
# Executar o JAR gerado
java -jar target/capsula-do-tempo-0.0.1-SNAPSHOT.jarA aplicação estará disponível em:
- API: http://localhost:8080
- Swagger UI: http://localhost:8080/swagger-ui.html
- Health Check: http://localhost:8080/actuator/health
A documentação completa da API está disponível através do Swagger:
- Local: http://localhost:8080/swagger-ui.html
- Online: https://wiriswernek.github.io/capsula-do-tempo-core/
spring:
datasource:
url: jdbc:postgresql://localhost:5432/capsula_do_tempo
username: postgres
password: postgresserver:
port: 8080logging:
file:
name: log/appfile.logsrc/
├── main/
│ ├── java/com/github/wiriswernek/capsula_do_tempo/
│ │ ├── config/ # Configurações (Swagger)
│ │ ├── controllers/ # Controllers REST
│ │ ├── exceptions/ # Exceções customizadas
│ │ ├── models/
│ │ │ ├── dto/ # Data Transfer Objects
│ │ │ ├── entity/ # Entidades JPA
│ │ │ └── repository/ # Repositórios JPA
│ │ └── services/ # Regras de negócio
│ └── resources/
│ ├── application.yml # Configurações da aplicação
│ └── db/migration/ # Scripts Flyway
└── test/ # Testes unitários
# Executar todos os testes
./mvnw test
# Executar testes com relatório de cobertura
./mvnw test jacoco:reportEm desenvolvimento - Docker Compose com PostgreSQL será adicionado em breve.
- Faça o fork do projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-feature) - Commit suas mudanças (
git commit -am 'Adiciona nova feature') - Push para a branch (
git push origin feature/nova-feature) - Abra um Pull Request
Wiris Wernek
- Email: wiriswernek@gmail.com
- GitHub: @WirisWernek
- Repositório: https://github.com/WirisWernek/capsula-do-tempo-core
- Documentação API: https://wiriswernek.github.io/capsula-do-tempo-core/