https://github.com/gopher-lego/ginger
Working with Gin-framework just like Laravel-framework skeleton.
https://github.com/gopher-lego/ginger
framework gin go golang laravel rest-api skeleton template
Last synced: 8 months ago
JSON representation
Working with Gin-framework just like Laravel-framework skeleton.
- Host: GitHub
- URL: https://github.com/gopher-lego/ginger
- Owner: gopher-lego
- License: mit
- Created: 2020-12-29T15:33:24.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-01T16:11:32.000Z (over 1 year ago)
- Last Synced: 2025-03-27T07:48:10.776Z (8 months ago)
- Topics: framework, gin, go, golang, laravel, rest-api, skeleton, template
- Language: Go
- Homepage:
- Size: 227 KB
- Stars: 5
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# ginger
Directory structure for sample golang project development.
There are several ways to use it.
## Run debug mode directly
```
$ vi app.debug.json
$ go run main.go
```
## Run debug mode with live reload
Think about this tool ↓
1) install air: https://github.com/cosmtrek/air#via-go-install
2) faq: https://github.com/cosmtrek/air#command-not-found-air-or-no-such-file-or-directory
## Deploy release mode directly
```
# Update setting
$ cp app.mode.json.example app.release.json
$ vi app.release.json
# Build & distribute
$ export GIN_MODE=release
$ "go build && ./ginger" OR "go run main.go"
# Optional
$ scp ginger xx@xx.xx.xx.xx:/dist/
```
## Deploy & Run release with docker locally
```
$ vi setting/app.release.json
$ dkc -f docker-compose-from-src.yml up -d --build --force-recreate
```
## Deploy in CI/CD way (Github Actions)
```
# Update and push to release/prod branch trigger actions
$ vi .github/workflows/go.yml
# On remote server
$ cd gingerApi/dist
$ dkc -f docker-compose-from-dist.yml up -d --build --force-recreate
```
## Preset features
Support global CORS middleware.
Support global Request Rate limit middleware by [limiter](https://github.com/ulule/limiter).
Support config set by [Viper](https://github.com/spf13/viper) in config/
Support production ready Docker environment out of box.
Support database/migrations with [golang-migration](https://github.com/golang-migrate/migrate)
## Development workflow
```
main.go ->
route/api.go ->
app/http/xx.go
app/request/xxx_request.go
app/repository/xxx_repo.go <- app/model/xxx.go
<- config/database.go
```
## Derived projects example
[accountserve-go](https://github.com/farwish/accountserve-go)
[orderserve-go](https://github.com/farwish/orderserve-go)
## Thirdparty pkg
### gorm
Official example:
```
$ go get -u gorm.io/gorm
$ go get -u gorm.io/driver/mysql
$ go get -u gorm.io/driver/sqlite
```
https://gorm.io/zh_CN/docs/models.html
https://gorm.io/zh_CN/docs/connecting_to_the_database.html
https://gorm.io/zh_CN/docs/index.html#%E5%AE%89%E8%A3%85
### golang-migrate
CLI install: https://github.com/golang-migrate/migrate/tree/master/cmd/migrate
MySQL driver: https://github.com/golang-migrate/migrate/tree/master/database/mysql
CLI example
```
$ migrate create -ext sql -dir database/migrations -seq create_orders_table
$ migrate -path database/migrations -database "mysql://root:123456@(127.0.0.1:33056)/testdb?multiStatements=true" up
$ migrate -path database/migrations -database "mysql://root:123456@(127.0.0.1:33056)/testdb?multiStatements=true" version
$ migrate -path database/migrations -database "mysql://root:123456@(127.0.0.1:33056)/testdb?multiStatements=true" force <2>
$ migrate -path database/migrations -database "mysql://root:123456@(127.0.0.1:33056)/testdb?multiStatements=true" down
```
### uuid
https://github.com/google/uuid
https://godoc.org/github.com/google/uuid