Projeto de uma API para controle de orçamento familiar. A API deve permitir que uma pessoa cadastre suas receitas e despesas do mês, bem como gerar um relatório mensal.
🪧 Vitrine.Dev | |
---|---|
✨ Nome | financas-api |
🏷️ Tecnologias | Java, Spring Boot, Spring Data JPA, Spring Security OAuth, Maven |
🚀 URL | TBD |
🔥 Desafio | https://www.alura.com.br/challenges/back-end |
Funcionalidade 1
Cadastro de despesas
: A API deve possuir um endpoint para o cadastro de despesas, sendo que ele deve aceitar requisições do tipo POST para a URI /despesas. Os dados da despesa(descrição, valor e data) devem ser enviados no corpo da requisição, no formato JSON.Funcionalidade 2
Cadastro de receitas
: A API deve possuir um endpoint para o cadastro de receitas, sendo que ele deve aceitar requisições do tipo POST para a URI /receitas. Os dados da receita(descrição, valor e data) devem ser enviados no corpo da requisição, no formato JSON.
Java 8
InteliJ IDEA
Spring Boot, Spring Data JPA, Spring Security OAuth
MySQL
Maven
Flyway
Lombok
Bean Validation
OpenAPI (Swagger)
OAuth2 e JWT
Criação e evolução do schema do banco de dados com Flyway
Utilização do Lombok nas classes para reduzir código boilerplate
Validações de entradas de dados na API com Bean Validation
Documentação com OpenAPI (Swagger)
Segurança com Spring Security, OAuth2 e JWT
Tratamento e modelagem de erros da API
Modelagem de erros seguindo a RFC 7807 (Problem Details for HTTP APIs)
Boas práticas e modelagem avançada de APIs
DTOs como alternativa ao uso de entidades como modelo de representação dos recursos
ModelMapper para fazer Object Mapping e converter DTOs em entidades e vice-versa
UUID para identificar recursos sensíveis
Testes
Testes de unidade
Testes de integração
Testes e2e automatizados para a API. Cada funcionalidade está descrita nos arquivos de feature do Gherkin, que sabe interpretar a linguagem natural, e o Cucumber automatiza todos os critérios de aceite
O deploy da aplicação no heroku, podendo ser acessada por esse link.
Você pode acessar os arquivos do projeto de teste e2e clicando aqui.