/kfinances

Um projeto feito para você anotar as suas despesas, lembra aquela fatura do cartão que você sempre esquece ou acha que não pagou ? simples salve ela no sistema logo após pagar, atualize ela, quando precisar saber se já pagou basta olhar as suas despesas pendente

Primary LanguageJava

KFinances

Ferramentas utilizadas

Java Spring Swagger Grafana Prometheus Gradle Docker MySQL Redis GitHub Actions

Sobre

Um projeto feito para você anotar as suas despesas, lembra aquela fatura do cartão que você sempre esquece ou acha que não pagou? simples salve ela no sistema logo após pagar, atualize ela, quando precisar saber se já pagou basta olhar as suas despesas pendente

  • Porquê decidiu fazer esse projeto?

    • Para aplicar o que eu estudava, aprender novas coisas e aplicar elas também em um projeto prático
  • Quais foram os desafios de implementá-lo?

    • Seguir um padrão de testes, configurar o spring security e otimizar o hibernate / spring data jpa
  • O que eu aprendi com ele?

    • Padrões de teste, como configurar e executar os testes com perfil especifíco, otimizar o hibernate, métricas com micrometer e prometheus, spring security e tratar os erros lançado e cache com spring data

Tabela de conteúdos

Arquitetura

Circulo da clean architecture

Camadas da aplicação

Domain, é a camada onde se encontra as regras de negócio, validações e as interfaces gateways (abstração dos métodos do banco dedados, são usadas para remover o acomplamento com o banco de dados)

Application, é a camada que contem todos os casos de uso (criar um usuário, pegar um usuário pelo id, atualizar um usuário, deletar um usuário, esse é famoso CRUD) e contem a integração com o gateway do banco de dados

Infrastructure, é a camada responsável por conectar tudo, o usuário com a application e domain layer, contem a conexão com o banco de dados, entidades do banco e as rotas

Features

Principais rotas e features do sistema

  1. Criação de uma conta na aplicação: Criar conta feature 1

  1. Logar em uma conta já cadastrada na aplicação: Logar em uma conta feature 2

  1. Criar uma despesa para a sua conta: Criar uma despesa feature 3

Requisitos para rodar o projeto

  1. Docker e docker-compose
  2. Java e JDK 19 (caso não queira rodar atráves de containers)

Instruções para executar o projeto

  1. Baixe a aplicação e instale as dependências:
# Baixando o projeto e acessando o diretorio
git clone https://github.com/Kaua3045/kfinances.git cd kfinances

# Baixando as dependências
./gradlew --refresh-dependencies  

# Gerando o .jar da aplicação
./gradlew build
  1. Antes de executar o container, você precisa configurar o arquivo .env.example, depois renomeie ele para .env

  2. Suba o container da aplicação e suas dependências:

# Cria a imagem da aplicação e sobe os containers
docker-compose up --build -d
  1. Para acessar a api, basta usar a url: localhost:8080/api
  2. Para acessar o grafana com as métricas, basta usar a url: localhost:3333

Contribuindo com o projeto

Para contribuir com o projeto, veja mais informações em CONTRIBUTING

Changelog

Para ver as últimas alterações do projeto, acesse AQUI