https://github.com/gothinkster/golang-gin-realworld-example-app
  
  
    Exemplary real world application built with Golang + Gin 
    https://github.com/gothinkster/golang-gin-realworld-example-app
  
api best best-practices boilerplate crud example gin gin-mvc go golang gorm jwt practice realworld rest restful sample starter todolist todomvc
        Last synced: 6 months ago 
        JSON representation
    
Exemplary real world application built with Golang + Gin
- Host: GitHub
 - URL: https://github.com/gothinkster/golang-gin-realworld-example-app
 - Owner: gothinkster
 - License: mit
 - Created: 2017-10-02T18:30:41.000Z (about 8 years ago)
 - Default Branch: master
 - Last Pushed: 2024-01-05T04:06:57.000Z (almost 2 years ago)
 - Last Synced: 2025-04-13T16:53:40.816Z (7 months ago)
 - Topics: api, best, best-practices, boilerplate, crud, example, gin, gin-mvc, go, golang, gorm, jwt, practice, realworld, rest, restful, sample, starter, todolist, todomvc
 - Language: Go
 - Homepage: https://realworld.io
 - Size: 192 KB
 - Stars: 2,570
 - Watchers: 50
 - Forks: 504
 - Open Issues: 9
 - 
            Metadata Files:
            
- Readme: readme.md
 - License: LICENSE
 
 
Awesome Lists containing this project
- awesome-golang-repositories - golang-gin-realworld-example-app
 
README
          # 
[](https://travis-ci.org/wangzitian0/golang-gin-realworld-example-app)
[](https://codecov.io/gh/wangzitian0/golang-gin-realworld-example-app)
[](https://github.com/gothinkster/golang-gin-realworld-example-app/blob/master/LICENSE)
[](https://godoc.org/github.com/gothinkster/golang-gin-realworld-example-app)
> ### Golang/Gin codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the [RealWorld](https://github.com/gothinkster/realworld) spec and API.
This codebase was created to demonstrate a fully fledged fullstack application built with **Golang/Gin** including CRUD operations, authentication, routing, pagination, and more.
# Directory structure
```
.
├── gorm.db
├── hello.go
├── common
│   ├── utils.go        //small tools function
│   └── database.go     //DB connect manager
├── users
|   ├── models.go       //data models define & DB operation
|   ├── serializers.go  //response computing & format
|   ├── routers.go      //business logic & router binding
|   ├── middlewares.go  //put the before & after logic of handle request
|   └── validators.go   //form/json checker
├── ...
...
```
# Getting started
## Install Golang
Make sure you have Go 1.13 or higher installed.
https://golang.org/doc/install
## Environment Config
Set-up the standard Go environment variables according to latest guidance (see https://golang.org/doc/install#install).
## Install Dependencies
From the project root, run:
```
go build ./...
go test ./...
go mod tidy
```
## Testing
From the project root, run:
```
go test ./...
```
or
```
go test ./... -cover
```
or
```
go test -v ./... -cover
```
depending on whether you want to see test coverage and how verbose the output you want.
## Todo
- More elegance config
- Test coverage (common & users 100%, article 0%)
- ProtoBuf support
- Code structure optimize (I think some place can use interface)
- Continuous integration (done)