gorest is a starter kit, written in Golang with Gin framework, for rapid prototyping and developing a RESTful API. The source code is released under the MIT license and is free for any personal or commercial project.
1.x.y
1
: production-ready
x
: breaking changes
y
: new functionality or bug fixes in a backwards compatible manner
Version 1.6.x
contains breaking changes!
Note: For version 1.4.5
: v1.4.5
Go 1.17+
- MySQL
- PostgreSQL
- SQLite3
- Redis
- MongoDB
Note: gorest uses GORM as its ORM
- built on top of Gin
- use the supported databases without writing any extra configuration files
- environment variables using GoDotEnv
- CORS policy
- basic auth
- two-factor authentication
- JWT using golang-jwt/jwt
- password hashing with
Argon2id
- JSON protection from hijacking
- simple firewall (whitelist/blacklist IP)
- email validation (pattern + MX lookup)
- email verification (sending verification code)
- forgotten password recovery
- render
HTML
templates - forward error logs and crash reports to sentry.io
- super easy to learn and use - lots of example codes
Please study the .env.sample
file. It is one of the most crucial files required
to properly set up a new project. To load all environment variables, either rename
the .env.sample
file to .env
, or set all the environment variables in your
development or production instance manually.
Tutorials:
For version 1.6.x
, please check the project in example
For version 1.4.x
and 1.5.x
, Wiki
- convention over configuration
import (
"github.com/gin-gonic/gin"
gconfig "github.com/pilinux/gorest/config"
gcontroller "github.com/pilinux/gorest/controller"
gdatabase "github.com/pilinux/gorest/database"
gmiddleware "github.com/pilinux/gorest/lib/middleware"
)
- install a relational (SQLite3, MySQL or PostgreSQL), Redis, or Mongo database
- for 2FA, a relational + a redis database is required
- set up an environment to compile the Go codes (a quick tutorial for any Debian based OS)
- install
git
- check the Wiki and example for tutorials and implementations
Note: For MySQL driver, please check issue: 7
Note For SQLite3:
DBUSER
,DBPASS
,DBHOST
andDBPORT
environment variables should be left unchanged.DBNAME
must contain the full path and the database file name; i.e,
/user/location/database.db
Please see CONTRIBUTING to join this amazing project.
Please see this document.
© Mahir Hasan 2019 - 2022
Released under the MIT license