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

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

  • 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.
  • 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.
  • 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
  • Code generators

  • Computer vision & recognition

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

  • 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.
  • 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
  • Dependency Injection

    • DI - lightweight dependency injection container.
  • Distributed Data Stores

    • www.icefiredb.com
    • www.ghostdbcache.com
    • www.ghostdbcache.com
    • 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.
    • 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.
    • www.icefiredb.com
    • ZanRedisDB - distributed fault-tolerant key-value database Compatible with Redis.
    • dgraph.io
    • www.icefiredb.com
  • Drivers

  • 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.
  • 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
  • HTML template engines

    • www.schlachter.tech/pongo2
    • 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
    • www.schlachter.tech/pongo2
  • 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
  • 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.
  • Key/Value Databases

    • go.etcd.io/bbolt
    • 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)
    • 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.
    • blog.dgraph.io/post/badger
  • Message brokers

    • nsq.io
    • Event - lightweight event manager and dispatcher
    • 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
    • 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
    • httpmq - simple HTTP message queue written in Go with goleveldb, just like httpsqs written in C with Tokyo Cabinet.
  • Micro services frameworks

    • 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 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.
    • wiki.hyperledger.org/display/fabric
    • 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.
    • m3o.com
  • Middlewares & framework add-ons

  • 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
    • www.gorillatoolkit.org/pkg/mux
  • Networking, Distributed, Microservices & Cloud - Tools & Services

    • youbbs.org
    • etcd.io
    • dapr.io
    • jaegertracing.io
    • d.dtm.pub
    • heroiclabs.com
    • 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.
    • vaultproject.io
    • nomadproject.io
    • d.dtm.pub
    • serf.io