Go monolith with embedded microservices including GRPC,REST,GraphQL and The Clean Architecture.

Related tags

GoArcc
Overview

GoArcc - Go monolith with embedded microservices including GRPC,REST, graphQL and The Clean Architecture.

GitHub CI PkgGoDev Go Report Card Coverage Status Project Layout Release GitHub last commit GitHub go.mod Go version

Description

When you start writing a Go project, GoArcc helps to set up all the initial code boilerplate for your project. Initial boilerplate code means how you should organize your codebase and how you can write multiple services. We have support for REST, Graphql as well as gRPC.

We have implemented logging, tracing, health check, Jaeger, etc so that any developer will come and write services within a minute.

In short, GoArcc is a boilerplate setup codebase for any monolithic(Architecture) based web/mobile applications which later converted into microservices(Architecture).

Read more about GoArcc

Structure of Go packages

  • client/* - clients for server dialing
    • grpcClient - grpcClient dials grpc server
  • cmd/* - main application(s)
  • config - application related configs
  • db - postgres DB connection and adapters
  • logger - global zap logger
  • modules/* - embedded microservices, with structure:
    • external-svc - exposed apis logic implementation
    • internal-svc - unexposed apis logic implementation
    • models - database models, operations using gorm
    • pb - autogenerated files from .proto file
  • protos - External required protos for internal protos
    • types - application related common proto types
  • servers - all running servers
    • graphql - ms graphql registration and server invoke
    • grpc - ms grpc registration and server invoke
    • rest - ms rest registration and server invoke

Features

  • Project structure (mostly) follows Standard Go Project Layout.
  • Easily testable code (thanks to The Clean Architecture).
  • Graceful shutdown support.
  • Example gRPC API:
  • Example graphQL API:
  • Example REST API:
  • Example tests, both unit and integration.
  • Production logging using zap.
  • Production metrics using Prometheus.
  • Docker and docker-compose support.
  • Smart test coverage report
  • CI/CD setup for GitHub Actions.

Development

Requirements

Build from source

  1. Clone the repo:
git clone [email protected]:deqode/GoArcc.git
  1. After cloning the repo, review config.yml and update for your system as needed
  2. Build to create GoArcc binary
make build

Run

Jaeger UI:

http://localhost:16686

Health Trace:

http://localhost:8083/health/

Prometheus UI:

http://localhost:9090

Prometheus UI Metrics:

http://localhost:9090/metrics

Grpc Server:

http://localhost:8080

Graphql Server:

http://localhost:8081

Rest Server:

http://localhost:8082

License

Copyright 2021, DeqodeLabs (https://deqode.com/)

Licensed under the MIT License(the "License");

Issues
Owner
Deqode
Harnessing the power of blockchain, for your business.
Deqode
An implementation of GraphQL for Go / Golang

graphql An implementation of GraphQL in Go. Follows the official reference implementation graphql-js. Supports: queries, mutations & subscriptions. Do

null 7.8k Jul 18, 2021
A collection of Go packages for creating robust GraphQL APIs

api-fu api-fu (noun) (informal) Mastery of APIs. ?? Packages The top level apifu package is an opinionated library that aims to make it as easy as pos

Chris 34 Jul 21, 2021
Go monolith with embedded microservices including GRPC,REST,GraphQL and The Clean Architecture.

GoArcc - Go monolith with embedded microservices including GRPC,REST, graphQL and The Clean Architecture. Description When you start writing a Go proj

Deqode 6 Jul 14, 2021
⚡️ A Go framework for rapidly building powerful graphql services

Thunder is a Go framework for rapidly building powerful graphql servers. Thunder has support for schemas automatically generated from Go types, live q

null 1.4k Jul 20, 2021
Tools to write high performance GraphQL applications using Go/Golang.

graphql-go-tools Sponsors WunderGraph Are you looking for a GraphQL e2e data fetching solution? Supports frameworks like NextJS, type safety with gene

Jens Neuse 168 Jul 14, 2021
GraphQL server with a focus on ease of use

graphql-go The goal of this project is to provide full support of the GraphQL draft specification with a set of idiomatic, easy to use Go packages. Wh

null 3.8k Jul 18, 2021
GraphQL server with a focus on ease of use

graphql-go The goal of this project is to provide full support of the GraphQL draft specification with a set of idiomatic, easy to use Go packages. Wh

null 3.8k Jul 15, 2021
go generate based graphql server library

gqlgen What is gqlgen? gqlgen is a Go library for building GraphQL servers without any fuss. gqlgen is based on a Schema first approach — You get to D

99designs 6.3k Jul 24, 2021
Convert Golang Struct To GraphQL Object On The Fly

Straf Convert Golang Struct To GraphQL Object On The Fly Easily Create GraphQL Schemas Example Converting struct to GraphQL Object type UserExtra stru

Roshan Mehta 29 Jul 15, 2021
GraphJin - Build APIs in 5 minutes with GraphQL. An instant GraphQL to SQL compiler.

GraphJin - Build APIs in 5 minutes GraphJin gives you a high performance GraphQL API without you having to write any code. GraphQL is automagically co

Vikram Rangnekar 1.5k Jul 18, 2021
GQLEngine is the best productive solution for implementing a GraphQL server 🚀

GQLEngine is the best productive solution for implementing a graphql server for highest formance examples starwars: https://github.com/gqlengine/starw

null 82 May 16, 2021
graphql parser + utilities

graphql utilities for dealing with GraphQL queries in Go. This package focuses on actually creating GraphQL servers and expects you to describe your s

Travis Cline 53 May 27, 2021
gqlanalysis makes easy to develop static analysis tools for GraphQL in Go.

gqlanalysis gqlanalysis defines the interface between a modular static analysis for GraphQL in Go. gqlanalysis is inspired by go/analysis. gqlanalysis

null 29 May 8, 2021
Query Parser for REST

Query Parser for REST Query Parser is a library for easy building dynamic SQL queries to Database. It provides a simple API for web-applications which

Tim S. 24 Jul 14, 2021