{"id":26451110,"url":"https://github.com/pedroyremolo/transfer-api","last_synced_at":"2026-05-09T13:15:31.656Z","repository":{"id":45258072,"uuid":"304391916","full_name":"pedroyremolo/transfer-api","owner":"pedroyremolo","description":"API criada com o propósito de prover o gerenciamento das transferências entre contas de um banco digital.","archived":false,"fork":false,"pushed_at":"2021-12-27T11:23:56.000Z","size":217,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-15T00:53:44.093Z","etag":null,"topics":["ddd","docker-compose","go-dockerfile","golang","hexagonal-architecture","mongodb","rest-api"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pedroyremolo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-15T16:52:57.000Z","updated_at":"2021-12-27T11:23:57.000Z","dependencies_parsed_at":"2022-08-27T21:00:24.109Z","dependency_job_id":null,"html_url":"https://github.com/pedroyremolo/transfer-api","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedroyremolo%2Ftransfer-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedroyremolo%2Ftransfer-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedroyremolo%2Ftransfer-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pedroyremolo%2Ftransfer-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pedroyremolo","download_url":"https://codeload.github.com/pedroyremolo/transfer-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244260003,"owners_count":20424654,"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":["ddd","docker-compose","go-dockerfile","golang","hexagonal-architecture","mongodb","rest-api"],"created_at":"2025-03-18T16:31:51.057Z","updated_at":"2026-05-09T13:15:26.628Z","avatar_url":"https://github.com/pedroyremolo.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Transfer API\n\nAPI criada com o propósito de prover o gerenciamento das transferências entre contas\nde um banco digital.\n\nA arquitetura da aplicação visa aplicar os conceitos do [Domain-Driver Design](https://www.amazon.com.br/Domain-Driven-Design-Eric-Evans/dp/8550800651),\nEric Evans, e da [Hexagonal Architecture](https://fideloper.com/hexagonal-architecture), de Alistair Cockburn.\n\n## Requerimentos / Dependências\nA aplicação, feita em [Go](https://golang.org/), depende do próprio módulo, e de pelo\nmenos uma instância [MongoDB](https://docs.mongodb.com/v4.2/).\n\nA mesma é distribuída através de containers [Docker](https://docs.docker.com/).\n\nTodas as dependências de pacotes estão relacionadas em go.mod, que é utilizado para \ngerenciamento das mesmas.\n\n- [Go](https://golang.org/dl/) 1.15\n- [BRDoc](https://github.com/Nhanderu/brdoc) 1.1.2\n- [mongo-driver](https://github.com/mongodb/mongo-go-driver) 1.4.2\n- [httprouter](https://github.com/julienschmidt/httprouter) 1.3.0\n- [crypto](https://golang.org/x/crypto) 0.0.0-20201016220609-9e8e0b390897\n- [jwt](https://github.com/gbrlsnchs/jwt) 3.0.0\n- [logrus](https://github.com/sirupsen/logrus) 1.7.0\n\nPara baixa-las, com Go instalado na sua máquina:\n```bash\n$ go mod download\n```\n\n## Como usar\n\nA aplicação possui distribuição via [Docker](Dockerfile), e possui um arquivo\n[docker-compose](docker-compose.yml), sendo este o modo mais fácil de executa-la \nlocalmente.\n\nAlém disso, possui uma especificação [OpenAPI 3](https://swagger.io/specification/)\natravés do arquivo [openapi.yml](openapi.yml).\n\nA mesma é gerenciada via variáveis de ambiente, segue abaixo a tabela:\n\n| Nome                      | Descrição                                                  |\n|---------------------------|------------------------------------------------------------|\n| APP_PORT                  | Porta a ser escutada pela aplicação para novas requisições |\n| APP_LOG_LEVEL             | Nível de log estruturado da aplicação                      |\n| APP_DOCUMENT_DB_HOST      | Host da instância do MongoDB                               |\n| APP_DOCUMENT_DB_PORT      | Porta da instância do MongoDB                              |\n| APP_DOCUMENT_DB_USERNAME  | Usuário da instância do MongoDB                            |\n| APP_DOCUMENT_DB_SECRET    | Senha da instância do MongoDB                              |\n| APP_DOCUMENT_DB_NAME      | Nome do banco default da instância do MongoDB              |\n| APP_JWT_GATEKEEPER_SECRET | Segredo de geração do token JWT                            |\n| APP_JWT_GATEKEEPER_ISSUER | Emissor do token JWT                                       |\n\n### Docker-Compose\n\nPara executar via [docker-compose](https://docs.docker.com/compose/)\n\n```bash\n$ docker-compose up --build -d\n```\n\n## Licença\n A aplicação está sob a licença [MIT](https://choosealicense.com/licenses/mit/)\n \n## Créditos\n\nAgradecimento em especial a todos os autores das bibliotecas de terceiros utilizadas, e\ncitadas acima.\n\nE aos conteúdos, e seus autores, em que me baseei para a construção dessa aplicação:\n\n### Videos\n\n- [How Do You Structure Your Go Apps?](https://www.youtube.com/watch?v=1rxDzs0zgcE\u0026t=2152s)\n- [Building Hexagonal Microservices with Go](https://www.youtube.com/watch?v=rQnTtQZGpg8)\n- [Unit testing HTTP servers](https://www.youtube.com/watch?v=hVFEV-ieeew)\n- [The Context Package](https://www.youtube.com/watch?v=LSzR0VEraWw)\n\n\n### Artigos\n\n- [Aprenda Go com Testes](https://larien.gitbook.io/aprenda-go-com-testes/)\n- [DDD Lite in Go](https://threedots.tech/post/ddd-lite-in-go-introduction/)\n- [Repository Pattern in Go](https://threedots.tech/post/repository-pattern-in-go/)\n- [Round Float to 2 decimal places](https://yourbasic.org/golang/round-float-2-decimal-places/)\n- [Using Domain-Driven Design(DDD) in Golang](https://dev.to/stevensunflash/using-domain-driven-design-ddd-in-golang-3ee5)\n- [A theory of modern Go](http://peter.bourgon.org/blog/2017/06/09/theory-of-modern-go.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedroyremolo%2Ftransfer-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpedroyremolo%2Ftransfer-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpedroyremolo%2Ftransfer-api/lists"}