https://github.com/lucasfloriani/go-boilerplate
Go boilerplate para rápida codificação de microserviços REST
https://github.com/lucasfloriani/go-boilerplate
configor cors dao gin-gonic golang gorm gzip jwt mvc ozzo postgres services viper
Last synced: 2 months ago
JSON representation
Go boilerplate para rápida codificação de microserviços REST
- Host: GitHub
- URL: https://github.com/lucasfloriani/go-boilerplate
- Owner: lucasfloriani
- License: mit
- Created: 2018-06-03T01:59:23.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-06-12T04:05:08.000Z (about 8 years ago)
- Last Synced: 2025-02-28T11:02:12.012Z (over 1 year ago)
- Topics: configor, cors, dao, gin-gonic, golang, gorm, gzip, jwt, mvc, ozzo, postgres, services, viper
- Language: Go
- Homepage:
- Size: 26.4 KB
- Stars: 3
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Go Boilerplate
Este repositório foi criado para facilitar o desenvolvimento de aplicações microservico REST, trazendo uma estrutura base para desenvolvimento com base em design patterns e estruturas de código bem estruturadas na área de programação.
Seu principal intuito foi criar uma estrutura backend para ser utilizada junto com ferramentas SPA como Vue, React, Angular, etc, porem sua aplicação tambem pode servir para criação de somente API REST.
## Dependências do Projeto
* [Gorm (Banco de Dados)](https://github.com/jinzhu/gorm)
* [Gin (HTTP Router)](https://github.com/gin-gonic/gin)
* [Ozzo Validation (Validação de campos)](https://github.com/go-ozzo/ozzo-validation)
* [Viper (Auxiliar de Configuração via Flags, Variaveis de Ambiente e Arquivos)](https://github.com/spf13/viper)
* [Configor (Leitor de arquivos YAML, JSON, etc)](https://github.com/jinzhu/configor)
* [Gin JWT (Middleware para validação com JWT)](https://github.com/appleboy/gin-jwt)
* [Gin Contrib - Cors (Middleware para liberação de CORS)](https://github.com/gin-contrib/cors)
* [Gin Contrib - Gzip (Middleware para Gzip)](https://github.com/gin-contrib/gzip)
* [Gin Contrib - Location (Middleware para pegar URL do projeto)](https://github.com/gin-contrib/location)
## Dependências Auxiliares
Bibliotecas que não foram adicionadas ao projeto porem podem ser utilizadas para auxiliar casos especificos:
* [Logrus (Criação de logs)](https://github.com/sirupsen/logrus)
* [Boilr (Criação de boilerplates via CLI)](https://github.com/tmrts/boilr)
## Projetos Inspirados
Lista dos projetos onde certas partes de código foram copiadas ou retiradas ideias para contrução da estrutura:
* [Go Base](https://github.com/dhax/go-base)
* [Alloy](https://github.com/olliecoleman/alloy)
* [Golang gin Realworld Example App](https://github.com/gothinkster/golang-gin-realworld-example-app)
* [Go RESTful Application Starter Kit](https://github.com/qiangxue/golang-restful-starter-kit)
## Estrutura de Pastas
**/app:** configurações de nivel de aplicação.\
**/config:** arquivos .yaml com configuração de nivel de aplicação.\
**/daos:** objetos DAO contendo os metodos CRUD.\
**/db:** conexão com o banco de dados com base nas configurações de nivel de aplicação.\
**/handlers:** entrypoints REST da aplicação.\
**/helper:** funções auxiliares da aplicação.\
**/middleware:** middlewares (funções) customizados para adicionar aos entrypoints dos handlers.\
**/models:** structs dos objetos do banco.\
**/route:** criação das rotas e middlewares default com chamada da funções de criação de rotas.\
**/services:** logica de negócio.\
**/vendor:** dependências do projeto.