API REST para gerenciamento de clientes e livros, desenvolvida em Kotlin com o ecossistema Spring Boot.
O propósito deste projeto é estruturar a arquitetura de back-end necessária para simular as operações de um e-commerce de livros, gerenciando o fluxo de cadastro, atualização e exclusão de clientes (Customers) e o vínculo/status dos livros (Books) associados a eles através de regras de negócio bem definidas.
O projeto combina a organização estrutural em camadas com o versionamento evolutivo do banco de dados:
- Controllers: Exposição dos endpoints da API (
BookController,CustomerController) para recepção de requisições. - Services: Concentração e isolamento das regras de negócio do sistema.
- Repositories: Comunicação direta com a base de dados utilizando abstrações do Spring Data JPA.
- Database (Migrations): Controle e versionamento evolutivo das tabelas estruturadas via Flyway (
V1__create_table_customer,V2__create_table_book,V3__add_status_at_customer).
- Kotlin
- Spring Boot (Web / Data JPA)
- MySQL
- Flyway Migrations
- Gradle (Kotlin DSL)
- Postman / Insomnia (Validação de Rotas)
GET /customers— Lista todos os clientes (suporta busca via query param?name=...).POST /customers— Cadastra um novo cliente.GET /customers/{id}— Busca os detalhes de um cliente específico.PUT /customers/{id}— Atualiza os dados cadastrais de um cliente.DELETE /customers/{id}— Inativa um cliente do sistema.
GET /books— Lista todos os livros cadastrados.POST /books— Cadastra um novo livro e o associa a um cliente existente.GET /books/{id}— Busca os detalhes de um livro específico.PUT /books/{id}— Atualiza informações cadastrais de um livro.DELETE /books/{id}— Altera o status do livro para cancelado/deletado.
- Certifique-se de ter o MySQL rodando localmente e crie um banco de dados chamado
mercadolivro. - Configure suas credenciais do banco no arquivo
src/main/resources/application.yml. - Clone o repositório e execute a aplicação via terminal ou IntelliJ:
./gradlew bootRun- Para testar as rotas: Você pode utilizar ferramentas como Postman, Insomnia ou a extensão HTTP Client do próprio IntelliJ para enviar as requisições para
http://localhost:8080utilizando as rotas listadas acima.