Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/isabelamoraes/drum-api
Explorando os conceitos de Clean Arch com Go através de uma aplicação para gerenciar e avaliar kits de bateria.
https://github.com/isabelamoraes/drum-api
clean-architecture gin gin-gonic go golang gorm gorm-orm
Last synced: about 1 month ago
JSON representation
Explorando os conceitos de Clean Arch com Go através de uma aplicação para gerenciar e avaliar kits de bateria.
- Host: GitHub
- URL: https://github.com/isabelamoraes/drum-api
- Owner: isabelamoraes
- Created: 2024-11-10T21:35:08.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-11-10T23:02:33.000Z (about 2 months ago)
- Last Synced: 2024-11-11T00:17:07.941Z (about 2 months ago)
- Topics: clean-architecture, gin, gin-gonic, go, golang, gorm, gorm-orm
- Language: Go
- Homepage:
- Size: 24.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Drum API
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 |## Clean Arch com Go
### Organização da aplicação em GO
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;### Clean Architecture
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.
![image](https://github.com/user-attachments/assets/0d1e2aad-5f2a-419b-b87c-490c36aea413)
Referência: [Clean Code Blog](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)
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.### Clean Arch com Go
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```
## Features
- [x] CRUD de baterias
- [x] Buscar uma bateria e suas reviews
- [x] Adicionar review para determinada bateria
- [ ] Testes## Tecnologias
Esse projeto foi desenvolvido utilizando:
- **[Golang](https://go.dev/)** - Linguagem de programação open-source criada pelo Google;
- **[Gin](https://gin-gonic.com/)** - Framework web para Golang;
- **[GORM](https://gorm.io/)** - Biblioteca ORM para Golang.## Setup
Para clonar e executar essa aplicação insira os comandos abaixo no terminal:
```bash
# 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```
## Referências
- Artigo - Construindo Sistemas com uma Arquitetura Limpa - [Link](https://engsoftmoderna.info/artigos/arquitetura-limpa.html)
- Cursos sobre Go na [Alura](https://www.alura.com.br/)
- Vídeo - Como organizar pastas e arquivo no Go - [Full Cycle](https://www.youtube.com/watch?v=OFud4iPuAH8)
- Artigo - Clear Arch com Golang - [Link](https://dev.to/booscaaa/implementando-clean-architecture-com-golang-4n0a)