{"id":19762522,"url":"https://github.com/isabelamoraes/drum-api","last_synced_at":"2026-05-09T23:40:19.692Z","repository":{"id":262165391,"uuid":"886389133","full_name":"isabelamoraes/drum-api","owner":"isabelamoraes","description":"Explorando os conceitos de Clean Arch com Go através de uma aplicação para gerenciar e avaliar kits de bateria.","archived":false,"fork":false,"pushed_at":"2024-11-10T23:02:33.000Z","size":25,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-10T23:42:25.872Z","etag":null,"topics":["clean-architecture","gin","gin-gonic","go","golang","gorm","gorm-orm"],"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/isabelamoraes.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":"2024-11-10T21:35:08.000Z","updated_at":"2024-11-10T23:03:37.000Z","dependencies_parsed_at":"2024-11-11T00:17:09.742Z","dependency_job_id":"7991fc73-baa8-4026-8990-ccaf28ec3661","html_url":"https://github.com/isabelamoraes/drum-api","commit_stats":null,"previous_names":["isabelamoraes/drum-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isabelamoraes%2Fdrum-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isabelamoraes%2Fdrum-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isabelamoraes%2Fdrum-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isabelamoraes%2Fdrum-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isabelamoraes","download_url":"https://codeload.github.com/isabelamoraes/drum-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241094616,"owners_count":19908671,"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":["clean-architecture","gin","gin-gonic","go","golang","gorm","gorm-orm"],"created_at":"2024-11-12T04:04:41.072Z","updated_at":"2026-05-09T23:40:14.645Z","avatar_url":"https://github.com/isabelamoraes.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n  Drum API\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e\n  Explorando os conceitos de Clean Arch com Go através de uma aplicação para gerenciar e avaliar kits de bateria.\n\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#arquitetura\"\u003eClean Arch com Go\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#tecnologias\"\u003eTecnologias\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"#setup\"\u003eSetup\u003c/a\u003e\n  \u003ca href=\"#referencias\"\u003eReferências\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003c/p\u003e\n\n## Clean Arch com Go\n\n### Organização da aplicação em GO\n\nGeralmente a comunidade Go organiza a aplicação seguindo a seguinte estrutura:\n- cmd: arquivos que contém o código de entrada do programa;\n- internal: armazena código restrito ao uso do módulo (data, models, handler, service, etc);\n- pkg: pacotes externos;\n\n### Clean Architecture\n\nProposto por Robert Martin, Clean Architecture, ou Arquitetura Limpa, é um padrão arquitetural que consistem em uma série de princípios para estruturar um projeto de forma coesa, testável e de fácil manutenção.\n\n![image](https://github.com/user-attachments/assets/0d1e2aad-5f2a-419b-b87c-490c36aea413)\n\nReferência: [Clean Code Blog](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)\n\nA estrutura se baseia nas seguintes camadas:\n- Entidades - modelos e regras de negócio da empresa\n- Casos de usos - regras de negócio da aplicação\n- Adapters - mediação da interação entre as camadas externas centrais da aplicação\n- Framework e Drivers - camada mais externa na qual temos a parte de frameworks, banco de dados, etc.\n\n### Clean Arch com Go\n\nCom base nos conceito de Clean Arch e na maneira como a comunidade organiza as aplicações em Go, o projeto respeita a seguinte estrutura:\n\n```\n├── cmd\n├── internal\n│   ├── adapter\n|   |   ├── http\n│   │   └── logger\n│   ├── core\n│   │   ├── domain\n|   |   |   ├── applicationerror\n│   │   |   └── usecase\n│   │   └── dto\n│   ├── di\n│   ├── error\n│   ├── infra\n|   |   └── gorm\n|   |   |   ├── model\n|   |   |   └── repositories\n│   └── scripts\n\n```\n\n## Features\n\n- [x] CRUD de baterias\n- [x] Buscar uma bateria e suas reviews\n- [x] Adicionar review para determinada bateria\n- [ ] Testes\n\n## Tecnologias\n\nEsse projeto foi desenvolvido utilizando:\n\n-  **[Golang](https://go.dev/)** - Linguagem de programação open-source criada pelo Google;\n-  **[Gin](https://gin-gonic.com/)** - Framework web para Golang;\n-  **[GORM](https://gorm.io/)** - Biblioteca ORM para Golang.\n\n## Setup\n\nPara clonar e executar essa aplicação insira os comandos abaixo no terminal:\n\n```bash\n# Clone this repository\n$ git clone https://github.com/isabelamoraes/drum-api.git drum-api\n\n# Go into the repository\n$ cd drum-api\n\n# Install dependencies\n$ go mod tidy\n\n# Run docker-compose\n$ docker-compose up\n\n# Run migrations\n$ go run internal/scripts/automigration/migrate.go\n\n# Run api\n$ go run cmd/main.go\n\n```\n\n## Referências\n\n- Artigo - Construindo Sistemas com uma Arquitetura Limpa - [Link](https://engsoftmoderna.info/artigos/arquitetura-limpa.html)\n- Cursos sobre Go na [Alura](https://www.alura.com.br/)\n- Vídeo - Como organizar pastas e arquivo no Go - [Full Cycle](https://www.youtube.com/watch?v=OFud4iPuAH8)\n- Artigo - Clear Arch com Golang  - [Link](https://dev.to/booscaaa/implementando-clean-architecture-com-golang-4n0a)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisabelamoraes%2Fdrum-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisabelamoraes%2Fdrum-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisabelamoraes%2Fdrum-api/lists"}