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.

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");

Owner
Deqode
Harnessing the power of blockchain, for your business.
Deqode
Similar Resources

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

Apr 24, 2022

⚡️ 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

Dec 24, 2022

go generate based graphql server library

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

Dec 31, 2022

gqlanalysis makes easy to develop static analysis tools for GraphQL in Go.

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

Dec 14, 2022

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

Dec 27, 2022

GraphQL implementation for click house in Go.

GraphQL implementation for click house in Go.

clickhouse-graphql-go GraphQL implementation for clickhouse in Go. This package stores real time streaming websocket data in clickhouse and uses Graph

Nov 20, 2022

GraphQL parser comparison in different languages

graphql-parser-bench Parsing a schema or document can be a critical part of the application, especially if you have to care about latency. This is the

Jul 10, 2022

This app is an attempt towards using go lang with graphql data fetch in react front end.

go_movies _A React js + GraphQL supported with backend in GoLang. This app is an attempt towards using go lang with graphql data fetch in react front

Dec 7, 2021

proof-of-concept minimal GraphQL service for LTV

LTV GraphQL Proof-of-Concept This is a barebones proof-of-concept of a possible GraphQL implementation that interacts with Core. It includes a few ver

Jan 4, 2022
A simple (yet effective) GraphQL to HTTP / REST router

ReGraphQL A simple (yet effective) GraphQL to REST / HTTP router. ReGraphQL helps you expose your GraphQL queries / mutations as REST / HTTP endpoints

Dec 12, 2022
A simple Go, GraphQL, and PostgreSQL starter template

Simple Go/GraphQL/PostgreSQL template Purpose Have a good starting point for any project that needs a graphql, go, and postgres backend. It's a very l

Jan 8, 2022
A GraphQL complete example using Golang And PostgreSQL

GraphQL with Golang A GraphQL complete example using Golang & PostgreSQL Installation Install the dependencies go get github.com/graphql-go/graphql go

Dec 6, 2022
Fast :zap: reverse proxy in front of any GraphQL server for caching, securing and monitoring.
Fast :zap: reverse proxy in front of any GraphQL server for caching, securing and monitoring.

Fast ⚡ reverse proxy in front of any GraphQL server for caching, securing and monitoring. Features ?? Caching RFC7234 compliant HTTP Cache. Cache quer

Nov 5, 2022
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

Dec 28, 2022
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

Dec 20, 2022
GraphQL server with a focus on ease of use
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

Dec 31, 2022
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

Dec 26, 2022
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

Oct 26, 2022
GraphQL server with a focus on ease of use
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

Dec 25, 2022