{"id":21382986,"url":"https://github.com/josecfreittas/exbank","last_synced_at":"2025-03-16T11:16:24.286Z","repository":{"id":131317657,"uuid":"377949301","full_name":"josecfreittas/exbank","owner":"josecfreittas","description":null,"archived":false,"fork":false,"pushed_at":"2021-07-04T01:12:03.000Z","size":45,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-14T05:15:12.234Z","etag":null,"topics":["elixir","phoenix","phoenix-framework"],"latest_commit_sha":null,"homepage":"","language":"Elixir","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/josecfreittas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-17T20:08:43.000Z","updated_at":"2022-01-26T03:47:25.000Z","dependencies_parsed_at":"2023-07-31T06:15:53.206Z","dependency_job_id":null,"html_url":"https://github.com/josecfreittas/exbank","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecfreittas%2Fexbank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecfreittas%2Fexbank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecfreittas%2Fexbank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josecfreittas%2Fexbank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josecfreittas","download_url":"https://codeload.github.com/josecfreittas/exbank/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243858066,"owners_count":20359269,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elixir","phoenix","phoenix-framework"],"created_at":"2024-11-22T11:04:52.453Z","updated_at":"2025-03-16T11:16:24.244Z","avatar_url":"https://github.com/josecfreittas.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sobre o projeto\n\n**ExBank** é um projeto fictício que provê uma API REST onde é possível fazer a criação de contas e transferência de valores entre essas contas.\n\n## Tecnologias\n\n* [Elixir](https://elixir-lang.org)\n* [Phoenix framework](https://phoenixframework.org)\n* [PostgreSQL](https://www.postgresql.org)\n\n# Setup\n\n## Bancos de dados\n\nPara bancos de dados (desenvolvimento e testes), foi adicionada uma configuração para [Docker Compose](https://docs.docker.com/compose/install/), onde é possível iniciar as instâncias necessárias a partir do comando `docker-compose up -d`\n\n## Elixir e Phoenix\n\nO projeto foi desenvolvido e testado utilizando o [Erlang/OTP 24.0](https://www.erlang.org/downloads/24.0) e o [Elixir 1.12](https://elixir-lang.org/blog/2021/05/19/elixir-v1-12-0-released/). Se você usa o gerenciador de pacotes e versões [asdf](https://github.com/asdf-vm/asdf), é possível instalar as versões recomendadas de cada pacote através do comando `asdf install` no diretório raiz do projeto (onde se encontra o arquivo `.tool-versions`).\n\nSerá preciso fazer a instalação do Phoenix Framework para que o projeto possa ser executado. O passo a passo de como fazer a instalação pode ser encontrado [aqui](https://hexdocs.pm/phoenix/installation.html).\n\n## Configurações do projeto\n\nNo diretório `config/` será possível encontrar os arquivos `dev.exs` e `test.exs`, cada um contem as principais configurações para que o projeto possa ser executado em ambiente de desenvolvimento e de testes automáticos, respectivamente.\nEsses arquivos já estão inicialmente configurados para que o projeto rode corretamente em conjunto com a execução dos bancos de dados através da configuração de Docker Composer que acompanha o projeto.\n\n## Executando\n\nConsiderando uma configuração correta do ambiente, o projeto já poderá ser executado.\n\nMas antes, para fazer configuração e migração do banco de dados, é preciso executar o comando `mix ecto.setup`. Após isso, com o comando `mix phx.server` o servidor já será inicializado.\n\n## Testes automatizados\n\nO projeto vem com uma suíte de testes unitários e de integração. Para executar esses testes basta utilizar o comando `mix test`.\n\n## Testando a API\n\nO projeto acompanha um arquivo chamado `requests.http`. Esse arquivo contem a descrição de todas as endpoints que o projeto comporta, desde o fluxo de criação de contas e login, até transações e estornos. É possível fazer requisições HTTP para as endpoints descritas utilizando à extensão [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client) para o editor [VSCode](https://code.visualstudio.com).\n\n\n| Método | Rota                               | Descrição                                                                                   | Payload                   | Query                    |\n|--------|------------------------------------|---------------------------------------------------------------------------------------------|---------------------------|--------------------------|\n| POST   | `/api/accounts`                    | Criação de conta. Novas contas começam com saldo 500 (do que vamos chamar de __centavos__)  | `name`, `cpf`, `password` |                          |\n| POST   | `/api/accounts/login`              | Geração do token de acesso                                                                  | `cpf`, `password`         |                          |\n| GET    | `/api/accounts/me`                 | Retorna informações da conta                                                                |                           |                          |\n| GET    | `/api/transactions`                | Retorna uma lista com as transações feitas pelo usuário logado                              |                           | `date_start`, `date_end` |\n| POST   | `/api/transactions`                | Efetua o envio de um valor em __centavos__ da conta logada para outra conta especificada    | `recipient_cpf`, `amount` |                          |\n| GET    | `/api/transactions/:id`            | Retorna informações sobre uma transação específica                                          |                           |                          |\n| POST   | `/api/transactions/:id/chargeback` | Efetua o estorno de uma transferência recebida pelo usuário logado                          |                           |                          |\n\n\nO token `access` recebido pela endpoint `/api/accounts/login` deverá ser ser enviado via header para toda requisição que necessite de autenticação:  \n\u003e Authorization: Bearer `access`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosecfreittas%2Fexbank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosecfreittas%2Fexbank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosecfreittas%2Fexbank/lists"}