Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

awesome-go

A curated list of awesome Go frameworks, libraries and software
https://github.com/divilla/awesome-go

Last synced: 4 days ago
JSON representation

  • Micro services frameworks

    • m3o.com
    • gokit.io
    • go-zero.dev
    • go-micro.dev
    • wiki.hyperledger.org/display/fabric
    • micro.dev
    • Go kit - programming toolkit for building microservices (or elegant monoliths) in Go. We solve common problems in distributed systems and application architecture, so you can focus on delivering business value.
    • go-zero - cloud-native Go microservices framework with cli tool for productivity.
    • Hyperledger Fabric - enterprise-grade permissioned distributed ledger framework for developing solutions and applications. Its modular and versatile design satisfies a broad range of industry use cases. It offers a unique approach to consensus that enables performance at scale while preserving privacy.
    • Micro - distributed cloud platform. Addresses the key requirements for building services in the cloud. It leverages the microservices architecture pattern and provides a set of services which act as the building blocks of a platform. Micro deals with the complexity of distributed systems and provides simpler programmable abstractions to build on.
    • Micro Services - reusable real world microservices. Micro Services provide the fundamental building blocks for any products, apps or services. They can be used in isolation or combined to create a powerful distributed system. The services are intended to be consumed by each other using RPC and from the external world through a Micro API.
    • Go Micro - framework for distributed systems development. Provides the core requirements for distributed systems development including RPC and Event driven communication. The Micro philosophy is sane defaults with a pluggable architecture.
  • Tutorials

  • Networking, Distributed, Microservices & Cloud - Tools & Services

    • etcd.io
    • dapr.io
    • vaultproject.io
    • jaegertracing.io
    • nomadproject.io
    • d.dtm.pub
    • heroiclabs.com
    • serf.io
    • luraproject.org
    • purpleidea.com/tags/mgmtconfig
    • polycube-network.readthedocs.io
    • Caddy - fast, multi-platform web server with automatic HTTPS
    • etcd - distributed reliable key-value store for the most critical data of a distributed system.
    • dapr - portable, serverless, event-driven runtime that makes it easy for developers to build resilient, stateless and stateful microservices that run on the cloud and edge and embraces the diversity of languages and developer frameworks.
    • Vault - tool for secrets management, encryption as a service, and privileged access management.
    • Jaeger - CNCF Jaeger, a Distributed Tracing Platform.
    • Nomad - easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
    • Distributed Transactions Manager - distributed transaction framework which provides cross-service eventual data consistency. It provides saga, tcc, xa, 2-phase message, outbox, workflow patterns for a variety of application scenarios. It also supports multiple languages and multiple store engine
    • d.dtm.pub
    • Nakama - Distributed server for social and realtime games and apps.
    • evio - Fast event-loop networking
    • serf - Service orchestration and management tool.
    • lura - Ultra performant API Gateway with middlewares. A project hosted at The Linux Foundation.
    • Mgmt - Next generation distributed, event-driven, parallel config management!
    • Polycube - eBPF/XDP-based software framework that provides fast and lightweight network functions such as bridges, routers, firewalls, and others.
    • uhaha - framework for building highly available Raft-based data applications in Go. Small footprint, TLS and Auth password support. Multiple examples to help jumpstart integration, including a Key-value DB, a Timeseries DB, and a Ticket Service.
    • youbbs.org
  • Web frameworks

    • gin-gonic.com
    • iris-go.com
    • go-kratos.dev
    • gearbox - web framework for building micro services written in Go with a focus on high performance. It's built on [fasthttp](https://github.com/valyala/fasthttp) which is **up to 10x faster** than net/http
    • gogearbox.com
    • echo - high performance, minimalist Go web frameworkHigh performance, minimalist Go web framework.
    • Iris Web Framework - fastest HTTP/2 Go Web Framework. AWS Lambda, gRPC, MVC, Unique Router, WebSockets, Sessions, Test suite, Dependency Injection and more. A true successor of expressjs and laravel.
    • Fiber - Express inspired web framework built on top of [fasthttp](https://github.com/valyala/fasthttp), the fastest HTTP engine for Go. Designed to ease things up for fast development with zero memory allocation and performance in mind.
    • Kratos - microservice-oriented governance framework implemented by golang, which offers convenient capabilities to help you quickly build a bulletproof application from scratch.
    • Atreugo - High performance and extensible micro web framework with zero memory allocations in hot paths built on top of [fasthttp](https://github.com/valyala/fasthttp).
    • Gear - lightweight, composable and high performance web service framework for Go.
    • Gramework - Fast and Reliable Golang Web Framework
    • gogearbox.com
  • CLI frameworks

    • cobra.dev
    • cli.urfave.org
    • wiki
    • montferret.dev
    • pterm.sh
    • ignite.com
    • Awesome TUIs
    • Cobra - library for creating powerful modern CLI applications.
    • Bubble Tea - powerful little TUI framework
    • cli - simple, fast, and fun package for building command line apps
    • tview - Terminal UI library with rich, interactive widgets
    • Katana - next-generation crawling and spidering framework
    • Ferret - Declarative web scraping
    • PTerm - modern Go module to easily beautify console output. Featuring charts, progressbars, tables, trees, text input, select menus and much more
    • Glamour - Stylesheet-based markdown rendering for your CLI apps
    • Go CLI - library for implementing command-line interfaces in Go. cli is the library that powers the CLI for Packer, Consul, Vault, Terraform, Nomad, and more.
    • Termenv - Advanced ANSI style & color support for your terminal applications
    • ishell - Library for creating interactive cli applications.
    • Ignite CLI - all-in-one platform to build, launch, and maintain any crypto application on a sovereign and secured blockchain
    • Command line interface - package for building command line app
    • CLI for ChatGPT - elegant interactive CLI for ChatGPT
    • argparse - Argparse for golang. Just because `flag` sucks
    • Grumble - powerful modern CLI and SHELL
    • CLI Color - terminal color rendering library, support 8/16 colors, 256 colors, RGB color rendering output, support Print/Sprintf methods, compatible with Windows.
    • gookit.github.io/color
    • GCli - CLI application, tool library, running CLI commands, support console color, user interaction, progress display, data formatting display, generate bash/zsh completion add more features.
    • gookit.github.io/gcli
  • Multiplexers

    • go-chi.io
    • goji.io
    • godoc.org/github.com/buaazp/fasthttprouter
    • fasthttp - Fast HTTP package for Go. Tuned for high performance. Zero memory allocations in hot paths. Up to 10x faster than net/http
    • gorilla/mux - powerful HTTP router and URL matcher for building Go web servers with gorilla
    • chi - lightweight, idiomatic and composable router for building Go HTTP services
    • bone - Lightning Fast HTTP Multiplexer
    • go-zoo.github.io/bone
    • pat - Sinatra style pattern muxer for Go's net/http library, formerly pat.go
    • Goji - minimalistic and flexible HTTP request multiplexer
    • Lion - fast HTTP router for building modern scalable modular REST APIs
    • FastHttpRouter - high performance fasthttp request router that scales well
    • httptreemux - High-speed, flexible tree-based HTTP router for Go.
    • Router - Router implementation for fasthttp
    • fasthttp-routing - fast and powerful routing package for fasthttp servers
    • muxie - modern, fast and light HTTP multiplexer for Go. Fully compatible with the http.Handler interface. Written for everyone.
    • denco - The fast and flexible HTTP request router
  • Tool-kits & helpers

  • Middlewares & framework add-ons

    • godoc.org/github.com/hashicorp/go-cleanhttp
    • pkg.go.dev/github.com
    • godoc.org/github.com/ugorji/go/codec
    • Gorilla WebSocket - fast, well-tested and widely used WebSocket implementation
    • Negroni - Idiomatic HTTP Middleware
    • WS - Tiny WebSocket library
    • sessions - provides cookie and filesystem sessions and infrastructure for custom session backends.
    • go-getter - Package for downloading things from a string URL using a variety of protocols.
    • go-retryablehttp - Retryable HTTP client
    • gorilla/securecookie - encodes and decodes authenticated and optionally encrypted cookie values for Go web applications.
    • cap - collection of authentication Go packages related to OIDC, JWKs and Distributed Claims.
    • cleangttp - Functions for accessing "clean" Go http.Client values
    • echo-swagger - echo middleware to automatically generate RESTful API documentation with Swagger 2.0.
    • msgpack - Open-Source Go Code. msgpack.org[Go]
    • gin-cache - high performance gin middleware to cache http response. Compared to gin-contrib/cache, It has a huge performance improvement.
    • recws - reconnecting WebSocket is a websocket client based on gorilla/websocket that will automatically reconnect if the connection is dropped and keeps the connection alive - thread safe!
  • HTML template engines

    • www.schlachter.tech/pongo2
    • quicktemplate - Fast, powerful, yet easy to use template engine for Go. Optimized for speed, zero memory allocations in hot paths. Up to 20x faster than html/template. Inspired by the [Mako templates](http://www.makotemplates.org/) philosophy.
    • pongo2 - Django-syntax like templating-language ([official website](https://www.schlachter.tech/solutions/pongo2-template-engine/)).
    • amber - elegant templating engine for Go Programming Language It is inspired from HAML and Jade.
    • plush - The powerful template system that Go needs.
    • goview - lightweight, minimalist and idiomatic template library based on golang html/template.
    • Blocks - simple, Go-idiomatic view engine based on html/template with some extra features.
    • www.schlachter.tech/pongo2
  • Data structures

    • ants.andypan.me
    • FSM for Go - Finite State Machine
    • ants-pool - high-performance and low-cost goroutine pool in Go, inspired by fasthttp
    • concurrent map - a thread-safe concurrent map for go
    • golang-lru - provides the lru package which implements a fixed-size thread safe LRU cache. (Hashicorp)
    • skipmap - high-performance, scalable concurrent sorted map based on skip-list. Up to 10x faster than sync.Map in the typical pattern.
    • Golang local cache - simple local cache
    • go-set - generic set implementation for Go
  • Config managers

  • Applications

    • go-colly.org/
    • bombardier - Fast cross-platform HTTP benchmarking tool.
    • Colly - Lightning Fast and Elegant Scraping Framework for Gophers. With Colly you can easily extract structured data from websites, which can be used for a wide range of applications, like data mining, data processing or archiving.
    • go-smtp - An SMTP client & server library written in Go
    • goyoubbs - open source web forum built on Golang, fasthttp and leveldb.
  • HTML utilities

    • html - implements an HTML5-compliant tokenizer and parser.
    • LRU
    • htmlquery - is an XPath query package for HTML,
    • goquery - brings a syntax and a set of features similar to [jQuery](https://jquery.com) to the Go language. It is based on Go's net/html package and the CSS Selector library [cascadia](https://github.com/andybalholm/cascadia). Since the net/html parser returns nodes, and not a full-featured DOM tree, jQuery's stateful manipulation functions (like height(), css(), detach()) have been left off.
    • cascadia - CSS selectors Go library
  • Distributed Data Stores

    • dgraph.io
    • www.icefiredb.com
    • www.ghostdbcache.com
    • ZanRedisDB - distributed fault-tolerant key-value database Compatible with Redis.
    • Dgraph - horizontally scalable and distributed GraphQL database with a graph backend. It provides ACID transactions, consistent replication, and linearizable reads. It's built from the ground up to perform for a rich set of queries.
    • Doozer - consistent distributed data store.
    • Olric - Distributed in-memory object store. It can be used both as an embedded Go library and as a language-independent service.
    • IceFireDB - database built for web3 and web2. It strives to fill the gap between web2 and web3 with a friendly database experience, making web3 application data storage more convenient, and making it easier for web2 applications to achieve decentralization and data immutability.
    • GhostDB - distributed, in-memory, general purpose key-value data store that delivers microsecond performance at any scale. Supports persistance and point in time recovery.
    • Redwood - highly-configurable, distributed, realtime database that manages a state tree shared among many peers.
    • Vasto - distributed high-performance key-value store. On Disk. Eventual consistent. HA. Able to grow or shrink without service interruption. Vasto scales embedded RocksDB into a distributed key-value store, adding sharding, replication.
    • www.ghostdbcache.com
    • www.icefiredb.com
  • Key/Value Databases

    • go.etcd.io/bbolt
    • BadgerDB - embeddable, persistent and fast key-value (KV) database written in pure Go. It is the underlying database for Dgraph, a fast, distributed graph database. It's meant to be a performant alternative to non-Go-based key-value stores like RocksDB.
    • BBolt - an embedded key/value database for Go.
    • LevelDB - key/value database in Go.
    • BuntDb - embeddable, in-memory key/value database for Go with custom indexing and geospatial support
    • Pebble - RocksDB/LevelDB inspired key-value database.
    • gokv - Simple key-value store abstraction and implementations for Go (Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB and many more)
  • Databases

    • docs.immudb.io/master
    • pkg.go.dev/github.com/gookit/cache
    • immudb - immutable database based on zero trust, SQL and Key-Value, tamperproof, data change history
    • tiedot - document database engine that uses JSON as document notation; it has a powerful query processor that supports advanced set operations; it can be embedded into your program, or run a stand-alone server using HTTP (2017)
    • go-memdb - in-memory database built on immutable radix trees
    • column - high-performance, columnar, in-memory storage engine that supports fast querying, update and iteration with zero-allocations, bitmap indexing, TTL, transactions and streaming messages. (2021 - reference)
    • CCache - LRU Cache, written in Go, focused on supporting high concurrency. Supports: Hashed buckets, Layered Cache & TTL.
    • vellum - library implementing an FST (finite state transducer)
    • Cache - generic cache use and cache manage. Provide a unified usage API by packaging various commonly used drivers. Support File, Memory, Redis, Memcached and more.
  • Drivers

  • Message brokers

    • nsq.io
    • NSQ - realtime distributed messaging platform.
    • Mist - distributed, tag-based pub-sub service for modern web applications and container-driven cloud.
    • yarpc - message passing platform for Go
    • Event - lightweight event manager and dispatcher
    • relay - framework for simple message passing using an AMQP broker
    • httpmq - simple HTTP message queue written in Go with goleveldb, just like httpsqs written in C with Tokyo Cabinet.
    • hnlq715.github.io/httpmq
  • Tools & linters

    • n9e.github.io
    • golangci-lint - fast Go linters runner. It runs linters in parallel, uses caching, supports yaml config, has integrations with all major IDE and has dozens of linters included.
  • Other

    • make-test - creates great testing display
    • Consul - distributed, highly available, and data center aware solution to connect and configure applications across dynamic, distributed infrastructure.
    • lego - Let's Encrypt client and ACME library
    • go-acme.github.io/lego
    • laitos - top geek's chindogu - personal assistant over satellite/telephone/SMS/chatbot, plus web infrastructure servers (web & mail, ad-free DNS, web proxy, SNMP, etc)
  • gRPC

    • Go gRPC docs
    • gRPC-Go - The [Go](https://golang.org/) implementation of [gRPC](https://grpc.io/): A high performance, open source, general RPC framework that puts mobile and HTTP/2 first. For more information see the
  • JSON parsers & validators

    • Golang Serialization Benchmark
    • jsoniter - high-performance 100% compatible drop-in replacement of "encoding/json".
    • easyjson - fast and easy way to marshal/unmarshal Go structs to/from JSON without the use of reflection. Ability to customize the generated code by providing options not available with the standard encoding/json package, such as generating "snake_case" names or enabling omitempty behavior by default.
    • ffjson: faster JSON for Go - faster JSON serialization for Go
    • go-json - Fast JSON encoder/decoder compatible with encoding/json for Go
    • fastjson - Fast JSON parser and validator for Go. No custom structs, no code generation, no reflection. Outperforms [GJSON](https://github.com/tidwall/gjson) when accessing multiple unrelated fields.
    • GJSON - provides a fast and simple way to get values from a json document. It has features such as one line retrieval, dot notation paths, iteration, and parsing json lines.
    • SJSON - provides a very fast and simple way to set a value in a json document.
    • Pretty - provides fast methods for formatting JSON for human readability, or to compact JSON for smaller payloads.
  • Dependency Injection

    • DI - lightweight dependency injection container.
  • Testing & Benchmarking

    • Testify - toolkit with common assertions and mocks that plays nicely with the standard library.
  • Email utilities

    • Hermes - Hermes is the Go port of the great [mailgen](https://github.com/eladnava/mailgen) engine for Node.js. Check their work, it's awesome! It's a package that generates clean, responsive HTML e-mails for sending transactional e-mails (welcome e-mails, reset password e-mails, receipt e-mails and so on), and associated plain text fallback.
  • SQL Builders

    • gosql - orm and sql builder
    • dbr - query builder and other additions to Go's database/sql for super fast performance and convenience.
    • ozzo-dbx - db driver and query builder (reference)
    • fuckdb - generates a go compatible struct type with the required column names, data types, and annotations just fill in the database information in the web UI. Making go web develop very easy by saving a lot of time writing structure.fuckdbis based/inspired by the work of Seth Shelnutt's db2struct, and Db2Struct is based/inspired by the work of ChimeraCoder's gojson package gojson.
    • DBQ - lightweight Dapper like db driver for PostgreSQl and MySQL
    • MaxMind DB Reader - MaxMind DB Reader for Go
    • scany - Library for scanning data from a database into Go structs and more. It integrates with 'database/sql'
  • RESTful API Server builders & generators

    • apig - RESTful API server generator.
    • gorm
    • gin
    • REST Layer - is an API framework heavily inspired by the excellent [Python Eve](http://python-eve.org). It helps you create a comprehensive, customizable, and secure REST (graph) API on top of pluggable [backend storages](#main-storage-handlers) with no boiler plate code so you can focus on your business logic.
    • DBCore (ALPHA) - code generator build around database schemas and an API specification. Included with DBCore are templates for generating a Go REST API and React UI.
  • Validators

    • ozzo-validation - idiomatic Go (golang) validation package. Supports configurable and extensible validation rules (validators) using normal language constructs instead of error-prone struct tags.
    • govalidator - package of validators and sanitizers for strings, numerics, slices and structs.
  • Code generators

  • State Machines

  • Computer vision & recognition

    • gocv - package provides Go language bindings for the [OpenCV 4](http://opencv.org/) computer vision library.
  • Blockchain

    • Tendermint - Byzantine Fault Tolerant (BFT) middleware that takes a state transition machine - written in any programming language - and securely replicates it on many machines. Or Blockchain, for short.
    • blackholeDB - conceptual Key-Value distributed Database. HoleDB uses IPFS as decentralized filesystem, and BadgerDB as store for local key value pairs. (work in progress)
    • go-orbit-db - distributed peer-to-peer database on IPFS. This project intends to provide a fully compatible port of the JavaScript version in Go.