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