Skip to content

ebubekiryigit/golang-mongodb-rest-api-starter

Repository files navigation

GoLang + MongoDB + Redis RESTful Application Starter

Go Report Card

This project is a 'Boilerplate' or 'Starter' to build RESTful Applications and microservices using GoLang (Gin HTTP web framework), MongoDB and Redis.

Table of Contents

Features

Prerequisites

If you are not using Docker, you should also have:

  • MongoDB
  • Redis 6.2.X

Getting Started

Clone the repository and enjoy, I strongly recommend Jetbrains GoLand :)

# Clone Project
git clone https://github.com/ebubekiryigit/golang-mongodb-rest-api-starter.git go-rest-api-starter

# Change Directory
cd go-rest-api-starter

Using Docker

# Build & Create Docker Containers
docker-compose up -d

Using Local Environment

# Copy Example Env file
cp ./env.example .env

# Change MongoDB/Redis URI and Database Name

# MONGO_URI=<mongo_uri>
# MONGO_DATABASE=<db_name>

# USE_REDIS=<true or false>
# REDIS_DEFAULT_ADDR=<redis_uri>

# Download Modules
go mod download

# Build Project
go build -o go-starter .

# Run the Project
./go-starter

The application starts at port 8080:

  • GET /v1/ping Health check endpoint, returns 'pong' message

  • POST /v1/auth/register Creates a user and tokens
  • POST /v1/auth/refresh Refresh expired tokens
  • POST /v1/auth/login Login a user

  • POST /v1/notes Create a new note
  • GET /v1/notes Get paginated list of notes
  • GET /v1/notes/:id Get a one note details
  • PUT /v1/notes/:id Update a note
  • DELETE /v1/notes/:id Delete a note

  • GET /swagger/* Auto created swagger endpoint

You can also see: http://localhost:8080/swagger/index.html

If you want to add new routes and swagger docs, you should run swag init See: Gin Swagger

Project Structure

├── controllers         # contains api functions and main business logic
├── docs                # swagger files 
├── logs
├── middlewares         # request/response middlewares
│   └── validators      # data/request validators
├── models              
│   └── db              # collection models
├── routes              # router initialization
└── services            # general service & database actions

Future Work

  • Rate Limiting
  • i18n Localization
  • Testing

License

MIT License - Ebubekir Yiğit

About

A 'Boilerplate' or 'Starter' to build RESTful Applications and microservices using GoLang (Gin HTTP web framework), MongoDB and Redis.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published