Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/khannedy/golang-clean-architecture
Go-Lang Clean Architecture
https://github.com/khannedy/golang-clean-architecture
Last synced: about 4 hours ago
JSON representation
Go-Lang Clean Architecture
- Host: GitHub
- URL: https://github.com/khannedy/golang-clean-architecture
- Owner: khannedy
- License: apache-2.0
- Created: 2020-10-28T16:37:03.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-08-06T17:58:05.000Z (3 months ago)
- Last Synced: 2024-11-06T16:50:00.009Z (7 days ago)
- Language: Go
- Size: 1.04 MB
- Stars: 689
- Watchers: 9
- Forks: 177
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Golang Clean Architecture Template
## Description
This is golang clean architecture template.
## Architecture
![Clean Architecture](architecture.png)
1. External system perform request (HTTP, gRPC, Messaging, etc)
2. The Delivery creates various Model from request data
3. The Delivery calls Use Case, and execute it using Model data
4. The Use Case create Entity data for the business logic
5. The Use Case calls Repository, and execute it using Entity data
6. The Repository use Entity data to perform database operation
7. The Repository perform database operation to the database
8. The Use Case create various Model for Gateway or from Entity data
9. The Use Case calls Gateway, and execute it using Model data
10. The Gateway using Model data to construct request to external system
11. The Gateway perform request to external system (HTTP, gRPC, Messaging, etc)## Tech Stack
- Golang : https://github.com/golang/go
- MySQL (Database) : https://github.com/mysql/mysql-server
- Apache Kafka : https://github.com/apache/kafka## Framework & Library
- GoFiber (HTTP Framework) : https://github.com/gofiber/fiber
- GORM (ORM) : https://github.com/go-gorm/gorm
- Viper (Configuration) : https://github.com/spf13/viper
- Golang Migrate (Database Migration) : https://github.com/golang-migrate/migrate
- Go Playground Validator (Validation) : https://github.com/go-playground/validator
- Logrus (Logger) : https://github.com/sirupsen/logrus
- Confluent Kafka Golang : https://github.com/confluentinc/confluent-kafka-go## Configuration
All configuration is in `config.json` file.
## API Spec
All API Spec is in `api` folder.
## Database Migration
All database migration is in `db/migrations` folder.
### Create Migration
```shell
migrate create -ext sql -dir db/migrations create_table_xxx
```### Run Migration
```shell
migrate -database "mysql://root:@tcp(localhost:3306)/golang_clean_architecture?charset=utf8mb4&parseTime=True&loc=Local" -path db/migrations up
```## Run Application
### Run unit test
```bash
go test -v ./test/
```### Run web server
```bash
go run cmd/web/main.go
```### Run worker
```bash
go run cmd/worker/main.go
```