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

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages