Skip to content
This repository has been archived by the owner on Dec 3, 2022. It is now read-only.

yhagio/go_api_boilerplate

Folders and files

NameName
Last commit message
Last commit date

Latest commit

d69ca4f · Dec 3, 2022
Jun 11, 2022
Feb 18, 2020
Feb 16, 2020
Feb 15, 2020
Feb 17, 2020
Mar 21, 2020
Feb 15, 2020
Feb 18, 2020
Feb 15, 2020
Feb 17, 2020
Feb 16, 2020
Feb 16, 2020
Feb 2, 2020
Feb 13, 2020
Feb 13, 2020
Feb 6, 2020
Feb 12, 2020
Mar 22, 2020
Feb 6, 2020
Nov 28, 2022
Nov 28, 2022
Feb 9, 2020
Feb 4, 2020
Feb 15, 2020
Feb 16, 2020

Repository files navigation

Build Status codecov MIT Licence Open Source Love

Go (Golang) REST / GraphQL API Boilerplate

Note: in demo, I disabled email

Used libraries:


  • Components Diagram

diagram image

  • See Swagger Doc http://localhost:3000/swagger/index.html

swagger image

  • See GraphQL Playground http://localhost:3000/graphql

graphql image


Features

  • User Auth functionality (Signup, Login, Forgot Password, Reset Password)
  • JWT Authentication
  • REST API
  • GraphQL API
  • Gorm (Golang SQL DB ORM) with Postgres implementation and auto migration
  • Configs via environmental variables
  • Email notification (Welcome email, Reset password email)
  • Swagger REST API documentation
  • GraphQL playground
  • Unit tests
  • Dependency injection

Run locally

Create .env at root, i.e.

MAILGUN_API_KEY=key-b9jksfh8s9843uhfsdhds
MAILGUN_DOMAIN=xxxxx.mailgun.org

EMAIL_FROM=support@go_api_boilerplate.com

DB_HOST=localhost
DB_PORT=5432
DB_USER=your-user
DB_PASSWORD=your-password
DB_NAME=local-dev-db

JWT_SIGN_KEY=secret
HAMC_KEY=secret
PEPPER=secret

ENV=development

APP_PORT=3000
APP_HOST=http://localhost

Run

# Terminal 1
docker-compose up        # docker-compose up (Run postgres)
docker-compose down      # docker-compose down (Shutdown postgres)

# Terminal 2
go run github.com/99designs/gqlgen -v # Generate Graphql stuff
swag init -g app/app.go               # Generates Swagger
go run *.go                           # Run application
go test -v -cover ./...               # Run go test

Todo

  • Input Validations
  • Custom Error messages
  • Logger
  • More unit tests

maybe?

  • gRPC
  • Redis Streams
  • Redis PubSub
  • WebSocket
  • MongoDB

Contribution

Welcome for suggestions