Golang-pangu
Go-pangu is a Go boilerplate which follows cutting-edge solutions already adopted by the industry, JWT(JSON Web Tokens), Postgres, Redis, Docker, Gin, Ginkgo, Gorm. It is a solid production-ready starting point for your new backend projects.
Features
Golang-pangu is based on following tools
name | description |
---|---|
Go | an open source programming language that makes it easy to build simple, reliable, and efficient software. |
Gin | web struct based on Go, flexible middleware๏ผstrong data binding and outstanding performance. |
Gorm | The fantastic ORM library for Golang aims to be developer friendly. |
Ginkgo | Ginkgo builds on Go's testing package, allowing expressive Behavior-Driven Development ("BDD") style tests. |
JWT | JSON Web Tokens. An open, industry standard RFC 7519 method for representing claims securely between two parties. |
Postgres | The world's most advanced open source relational database |
Redis | An open source (BSD licensed), in-memory data structure store, used as a database, cache and message broker. |
Docker | Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. |
Struct
.
โโโ application.yml
โโโ args
โ โโโ args.go
โ โโโ cmd.go
โโโ conf
โ โโโ conf_debug.go
โ โโโ conf.go
โ โโโ conf_release.go
โโโ controller
โ โโโ application.go
โ โโโ auth.go
โ โโโ error.go
โ โโโ session.go
โโโ db
โ โโโ db.go
โโโ Dockerfile
โโโ go.mod
โโโ go.sum
โโโ jwt
โ โโโ jwt.go
โโโ main.go
โโโ Makefile
โโโ middleware
โ โโโ middleware.go
โโโ models
โ โโโ base_model.go
โ โโโ user.go
โโโ params
โ โโโ params.go
โโโ README.md
โโโ redis
โ โโโ redis.go
โโโ routers
โ โโโ router.go
โโโ test
โ โโโ sign_in_test.go
โ โโโ test_suite_test.go
โโโ util
โโโ util.go
file | function |
---|---|
application.yml | config file |
args | functions which can fetch params from request url |
conf | functions which can get configurations |
controller | handlers |
db | database operations like migrating database |
jwt | fuctions to create and check jwt |
main.go | main function.Call function with "--db" parameter, "create" to create database, "migrate" to migrate tables, "dorp" to delete database |
middleware | middleware |
models | base models and basic database operations |
params | struct used in data binding |
redis | redis connection and operations |
router | router |
test | test |
i18n | internationalization |
influx | influx operations include read/save point |
Start
- install postgres, redis
- config application.yml
`make create`(create database) or `go run main.go -db=create`
`make migrate`(migrate tables) or `go run main.go -db=migrate`
`make watch`(with hot reload) or `go run main.go`
- open
http://localhost:3002/ping
in web browser, and then you will get a "pong" response
Api examples
-
sign_up
Post
http://localhost:3002/users/sign_up
params: email, password, password_confirm
Register user
-
sign_in
Post
http://localhost:3002/users/sign_in
params: email, password, DEVICE_TYPE, login_type
You will get a header with authorization parameter from response after logging in successfully
-
auth_ping
Get
http://localhost:3002/auth_ping
Should add a valid user token to request this api
-
change_password
Post
http://localhost:3002/users/change_password
params: origin_password, password, password_confirm
Modify user's password, which needs authorization
-
cities
Post
http://localhost:3002/cities
params: language
set language to en, return cities in English. set language to zh, return cities in Chinese.
sms api
(Tencent service, need to set your key in application.yml )
-
sms
Get
http://localhost:3002/sms
params: mobile
send sms
influx apis
(need to install influxdb and modify main.go)
-
influx_save
Post
http://localhost:3002/influx_save
params: user_name, local, version
save struct in influxdb
-
influx_show
Post
http://localhost:3002/influx_save
get struct message in influxdb
pay apis
(Alipay service, need to set you key in application.yml)
-
alipay
Post
http://localhost:3002/alipay
create alipay bill
-
alipay_notify
Post
http://localhost:3002/alipay_notify
receive pay details notify
other public library
Rails-pangu is a Rails 6(API Only) boilerplate which follows cutting-edge solutions already adopted by the industry, notablly, Devise, JWT(JSON Web Tokens), Postgres, Redis, Docker, Rspec, RuboCop, CircleCI. It is a solid production-ready starting point for your new backend projects.
Projects using Go-pangu
product | description |
---|---|
eSheep | Network booster which helps global users access better entertainment content from China. |
cs-server | agent server(Comming soon!) |
soda-server | Comming soon! |
License
Code and documentation copyright 2020 the Golang-pangu Authors and ruilisi Network Code released under the MIT License.
Contributors
Thanks goes to these wonderful people (emoji key):
hophacker |
Tony |
Ganggou |
ExcitingFrog |
Leo7991 |
Daxigua443 |
Soryu23 |
This project follows the all-contributors specification. Contributions of any kind welcome!