{"id":16052168,"url":"https://github.com/gutoscherer/transactionsroutine","last_synced_at":"2026-05-05T21:33:52.641Z","repository":{"id":144456993,"uuid":"305522953","full_name":"GutoScherer/TransactionsRoutine","owner":"GutoScherer","description":"Transactions Routine é uma aplicação para simular transações bancárias, como compra, saque e pagamento.","archived":false,"fork":false,"pushed_at":"2020-10-26T14:55:04.000Z","size":52,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T15:13:36.851Z","etag":null,"topics":["api","api-rest","clean-architecture","clean-code","ddd","ddd-architecture","docker","docker-compose","go","golang","gorm","gorm-orm","rest"],"latest_commit_sha":null,"homepage":"","language":"Go","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/GutoScherer.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":"2020-10-19T21:59:22.000Z","updated_at":"2020-10-26T14:55:06.000Z","dependencies_parsed_at":null,"dependency_job_id":"c8498fd5-010d-4179-9ce4-c947d9af5e84","html_url":"https://github.com/GutoScherer/TransactionsRoutine","commit_stats":{"total_commits":16,"total_committers":1,"mean_commits":16.0,"dds":0.0,"last_synced_commit":"ef7b81ef1dbf2a7fe65cc00b1204922c354bf22c"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GutoScherer%2FTransactionsRoutine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GutoScherer%2FTransactionsRoutine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GutoScherer%2FTransactionsRoutine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GutoScherer%2FTransactionsRoutine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GutoScherer","download_url":"https://codeload.github.com/GutoScherer/TransactionsRoutine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247301255,"owners_count":20916476,"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":["api","api-rest","clean-architecture","clean-code","ddd","ddd-architecture","docker","docker-compose","go","golang","gorm","gorm-orm","rest"],"created_at":"2024-10-09T01:07:41.444Z","updated_at":"2026-05-05T21:33:52.574Z","avatar_url":"https://github.com/GutoScherer.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Transactions Routine\nTransactions Routine é uma aplicação para simular transações bancárias, como compra, saque e pagamento.\n\nA aplicação foi desenvolvida utilizando a linguagem GoLang e conceitos de Clean Architecture descritos por Robert C. Martin em seu livro \"Clean Architecture: A Craftsman's Guide to Software Structure\". Tais conceitos de clean architeture permitem escrever um código organizado, encapsulando a lógica de negócio e mantendo componentes desacoplados, o que torna possível desenvolver uma aplicação testável, independente de interface, banco de dados ou qualquer agente externo.\n\n## Dependências\n- **Docker:** É uma plataforma aberta para criação, execução e publicação (deploy) de containers. Um Container é a forma de empacotar sua aplicação e suas dependências (bibliotecas) de forma padronizada. [Mais Informações](https://www.docker.com/)\n\n- **Docker Compose:** É uma ferramenta para definir e rodar aplicações multi-container Docker. Com o docker composer é possível utilizar um arquivo YAML para configurar todos os serviços de sua aplicação e, com um único comando, criar e executar todos os serviços definidos. [Mais Informações](https://docs.docker.com/compose/)\n  \n- **Make:** É um utilitário que compila automaticamente programas e bibliotecas do arquivo fonte através da leitura de instruções contidas em arquivos denominados Makefiles, que especificam como obter o programa de destino. [Mais Informações](https://pt.wikipedia.org/wiki/Make)\n\n## Configuração\nPor motivos de segurança, dados de configuração da aplicação devem ficar contidos em um arquivo **.env** na raiz do projeto. Para facilitar a execução existe um arquivo **.env.example** com um exemplo de dados de configuração.\n\n## Como Executar\n1. Executar ***make configure*** para gerar um arquivo **.env** na raiz do projeto utilizando o arquivo de exemplo.\n2. Executar ***make start*** para subir todos os containeres Docker necessários para executar a aplicação.\n\n## Testes\nApós subir a aplicação utilizando os comandos mostrados na seção anterior, executar ***make test*** para rodar todos os testes existentes.\n\n## REST API\n\nA aplicação expõe uma API REST HTTP em um porta configurável. Por padrão 8080.\n\nNo caso de erro, a API responde com um Status Code HTTP apropriado, e em determinados casos, o payload conterá mais informações sobre o erro.\nExemplo:\n```\n{\n    \"error\": \"Invalid accountID\"\n}\n```\n\n## Endpoints\n### `GET /accounts/{accoundID}`\n\nEndpoint responsável por buscar uma conta cadastrada no sistema.\n\nParâmetros:\n```\naccountID: integer\n```\n\nResponse\n```json\nHTTP/1.1 200 OK\nDate: Mon, 26 Oct 2020 01:17:32 GMT\nContent-Type: application/json\nContent-Length: 51\n\n{\n    \"account_id\": 2,\n    \"document_number\": \"1234567890021\"\n}\n```\n\n### `POST /accounts`\n\nEndpoint responsável por cadastrar uma nova conta para um cliente à partir de um número de documento.\n\nHeaders:\n```\nContent-Type: application/json\n```\n\nRequest Body:\n```json\n{\n    \"document_number\": \"1234567890021\"\n}\n```\n\nResponse:\n```json\nHTTP/1.1 201 Created\nDate: Mon, 26 Oct 2020 01:20:43 GMT\nContent-Type: application/json\nContent-Length: 51\n\n{\n    \"account_id\": 4,\n    \"document_number\": \"1234567890022\"\n}\n```\n\n### `POST /transactions`\n\nEndpoint responsável por registrar uma nova transação para uma conta cadastrada, informando também o valor e o tipo da operação (ver tabela abaixo).\n\n\n| ID | Descrição        | Tipo da Operação |\n|----|------------------|------------------|\n|  1 | COMPRA À VISTA   | Débito           |\n|  2 | COMPRA PARCELADA | Débito           |\n|  3 | SAQUE            | Débito           |\n|  4 | PAGAMENTO        | Crédito          |\n\n**Atenção:** Todas as operações do tipo débito serão salvas com valor negativo.\n\nHeaders:\n```\nContent-Type: application/json\n```\n\nRequest Body:\n```json\n{\n    \"account_id\": 1,\n    \"operation_type_id\": 1,\n    \"amount\": 100.50\n}\n```\n\nResponse:\n```json\nHTTP/1.1 201 Created\nDate: Mon, 26 Oct 2020 01:31:56 GMT\nContent-Type: application/json\nContent-Length: 111\n\n{\n    \"account_id\": 1,\n    \"operation_type\": \"COMPRA A VISTA\",\n    \"amount\": -100.5,\n    \"created_at\": \"2020-10-26T01:31:56.3622751Z\"\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgutoscherer%2Ftransactionsroutine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgutoscherer%2Ftransactionsroutine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgutoscherer%2Ftransactionsroutine/lists"}