Skip to content

t00lmaker/elixir-bank

Repository files navigation

Elixir Bank (Desafio Técnico)

Build Status Coverage Status Inline docs

Desafio técnico para criação de uma API de um banco utlizando Elixir.

O que vai encontrar aqui ?

Uma API REST impleementada utilizando Elixir e o framwork Phoenix que simula um sistema bancario simples. Além disso, essa é uma aplicação 'dockerizada' juntamente com um banco de dados Postgres em um docker-compose.

Features

  1. Login com JWT
  2. Cadastro de Clientes
  3. Operações bancarias:
    • Saque de conta.
    • Depositos em conta.
    • Transferências entre contas.
  4. Relátorio de Transaçẽs por dia, mês, ano e total.

API

A documentação da API pode ser encontrada aqui.

Setup

Essa é uma aplicação Elixir, preparada para gerar uma release para entregar código em produção. Esse mesmo pacote pode ser colocado em um docker container e ser "deployado" como unidade. Além disso, permite que a execução de uma unidade mais abrangente, o docker-compose.

Abaixo duas formas execução da aplicação:

Servidor Local

Para executar dessa forma é necessário um postgres rodando e configurado nas os arquivos de configuração da aplicação, que são os mesmo de qualquer aplicação Phoenix.


mix ecto.setup
mix phx.server

Docker Compose

Presumindo que já tenha o Docker e Docker Compose instalado, execute o comando abaixo.


docker-compose up

Nessa abordagem uma release será construida, dockerizada e executada em um ambiente configurado com banco de dados preparado para conexão.

Em ambas as abordagem um usuário admin com password adminAdmin é criado e ficará pronto para uso segundo a especificação da API.

Modelo

Modelo_ER

  • users: Utiliza para acesso no sistema
  • clients: Clientes cadastrados no sistema, que podem possuir uma ou mais accounts.
  • accounts: Representa as contas de um cliente, que por sua vez pode ter diversas operations associadas.
  • operations: Representa as operações realizadas em uma account, que por sua vez pode ter diversas operações associadas. O campo type representa o tipo de operação e tem o seguinte domínio:
    • SAQUE : Retirada de dinheiro da conta.
    • TRANSFERENCIA : Movimentação de recursos de uma conta para outra.
    • CREDITO : Entrada de dinheiro na conta, que pode ser oriundo de uma TRANSFERENCIA, é referenciada pelo campo origin_operation_id.

Testes

Testes podem ser executados com o seguinte comando:


mix test

Pode-se ver a cobertura dos testes utilizando o seguinte commando:


mix converalls

TODOs

Veja as Issues do repositório.

About

Desafio tecnico para criação de uma API de um banco utlizando Elixir.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages