Explorando os conceitos de Clean Arch com Go através de uma aplicação para gerenciar e avaliar kits de bateria.
Clean Arch com Go | Features | Tecnologias | Setup Referências |
Geralmente a comunidade Go organiza a aplicação seguindo a seguinte estrutura:
- cmd: arquivos que contém o código de entrada do programa;
- internal: armazena código restrito ao uso do módulo (data, models, handler, service, etc);
- pkg: pacotes externos;
Proposto 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.
Referência: Clean Code Blog
A estrutura se baseia nas seguintes camadas:
- Entidades - modelos e regras de negócio da empresa
- Casos de usos - regras de negócio da aplicação
- Adapters - mediação da interação entre as camadas externas centrais da aplicação
- Framework e Drivers - camada mais externa na qual temos a parte de frameworks, banco de dados, etc.
Com base nos conceito de Clean Arch e na maneira como a comunidade organiza as aplicações em Go, o projeto respeita a seguinte estrutura:
├── cmd ├── internal │ ├── adapter | | ├── http │ │ └── logger │ ├── core │ │ ├── domain | | | ├── applicationerror │ │ | └── usecase │ │ └── dto │ ├── di │ ├── error │ ├── infra | | └── gorm | | | ├── model | | | └── repositories │ └── scripts - CRUD de baterias
- Buscar uma bateria e suas reviews
- Adicionar review para determinada bateria
- Testes
Esse projeto foi desenvolvido utilizando:
- Golang - Linguagem de programação open-source criada pelo Google;
- Gin - Framework web para Golang;
- GORM - Biblioteca ORM para Golang.
Para clonar e executar essa aplicação insira os comandos abaixo no terminal:
# Clone this repository $ git clone https://github.com/isabelamoraes/drum-api.git drum-api # Go into the repository $ cd drum-api # Install dependencies $ go mod tidy # Run docker-compose $ docker-compose up # Run migrations $ go run internal/scripts/automigration/migrate.go # Run api $ go run cmd/main.go - Artigo - Construindo Sistemas com uma Arquitetura Limpa - Link
- Cursos sobre Go na Alura
- Vídeo - Como organizar pastas e arquivo no Go - Full Cycle
- Artigo - Clear Arch com Golang - Link
