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/cedrickchee/awesome-go

Last synced: 4 days ago
JSON representation

  • Websites

  • Command Line

    • Standard CLI

      • go-getoptions - Go option parser inspired on the flexibility of Perl’s GetOpt::Long.
      • acmd - Simple, useful and opinionated CLI package in Go.
      • argparse - Command line argument parser inspired by Python's argparse module.
      • argv - Go library to split command line string as arguments array using the bash syntax.
      • cli - Feature-rich and easy to use command-line package based on golang struct tags.
      • cli - Simple and complete API for building command line interfaces in Go.
      • climax - Alternative CLI with "human face", in spirit of Go command.
      • clîr - A Simple and Clear CLI library. Dependency free.
      • cmd - Extends the standard `flag` package to support sub commands and more in idiomatic way.
      • cmdr - A POSIX/GNU style, getopt-like command-line UI Go library.
      • cobra - Commander for modern Go CLI interactions.
      • command-chain - A go library for configure and run command chains - such like pipelining in unix shells.
      • commandeer - Dev-friendly CLI apps: sets up flags, defaults, and usage based on struct fields and tags.
      • complete - Write bash completions in Go + Go command bash completion.
      • Dnote - A simple command line notebook with multi-device sync.
      • elvish - An expressive programming language and a versatile interactive shell.
      • env - Tag-based environment configuration for structs.
      • flag - Simple but powerful command line option parsing library for Go supporting subcommand.
      • flaggy - A robust and idiomatic flags package with excellent subcommand support.
      • flagvar - A collection of flag argument types for Go's standard `flag` package.
      • go-arg - Struct-based argument parsing in Go.
      • go-commander - Go library to simplify CLI workflow.
      • go-flags - go command line option parser.
      • gocmd - Go library for building command line applications.
      • job - JOB, make your short-term command as a long-term job.
      • kingpin - Command line and flag parser supporting sub commands.
      • liner - Go readline-like library for command-line interfaces.
      • mitchellh/cli - Go library for implementing command-line interfaces.
      • mow.cli - Go library for building CLI applications with sophisticated flag and argument parsing and validation.
      • ops - Unikernel Builder/Orchestrator.
      • pflag - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
      • sand - Simple API for creating interpreters and so much more.
      • sflags - Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin and other libraries.
      • strumt - Library to create prompt chain.
      • subcmd - Another approach to parsing and running subcommands. Works alongside the standard `flag` package.
      • ts - Timestamp convert & compare tool.
      • ukautz/clif - Small command line interface framework.
      • urfave/cli - Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli).
      • wlog - Simple logging interface that supports cross-platform color and concurrency.
      • wmenu - Easy to use menu structure for cli applications that prompts users to make choices.
      • go-andotp - A CLI program to encrypt/decrypt [andOTP](https://github.com/andOTP/andOTP) files. Can be used as library as well.
      • hiboot cli - cli application framework with auto configuration and dependency injection.
    • Advanced Console UIs

      • aurora - ANSI terminal colors that supports fmt.Printf/Sprintf.
      • box-cli-maker - Make Highly Customized Boxes for your CLI.
      • cfmt - Contextual fmt inspired by bootstrap color classes.
      • cfmt - Simple and convenient formatted stylized output fully compatible with fmt library.
      • chalk - Intuitive package for prettifying terminal/console output.
      • colourize - Go library for ANSI colour text in terminals.
      • ctc - The non-invasive cross-platform terminal color library does not need to modify the Print method.
      • go-ataman - Go library for rendering ANSI colored text templates in terminals.
      • go-colorable - Colorable writer for windows.
      • go-colortext - Go library for color output in terminals.
      • go-isatty - isatty for golang.
      • go-prompt - Library for building a powerful interactive prompt, inspired by [python-prompt-toolkit](https://github.com/jonathanslenders/python-prompt-toolkit).
      • gocui - Minimalist Go library aimed at creating Console User Interfaces.
      • gookit/color - Terminal color rendering tool library, support 16 colors, 256 colors, RGB color rendering output, compatible with Windows.
      • marker - Easiest way to match and mark strings for colorful terminal outputs.
      • mpb - Multi progress bar for terminal applications.
      • progressbar - Basic thread-safe progress bar that works in every OS.
      • pterm - A library to beautify console output on every platform with many combinable components.
      • simpletable - Simple tables in terminal with Go.
      • tabby - A tiny library for super simple Golang tables.
      • table - Small library for terminal color based tables .
      • tabular - Print ASCII tables from command line utilities without the need to pass large sets of data to the API.
      • termbox-go - Termbox is a library for creating cross-platform text-based interfaces.
      • termdash - Go terminal dashboard based on **termbox-go** and inspired by [termui](https://github.com/gizak/termui).
      • termenv - Advanced ANSI style & color support for your terminal applications
      • termui - Go terminal dashboard based on **termbox-go** and inspired by [blessed-contrib](https://github.com/yaronn/blessed-contrib).
      • uilive - Library for updating terminal output in realtime.
      • uiprogress - Flexible library to render progress bars in terminal applications.
      • uitable - Library to improve readability in terminal apps using tabular data.
      • yacspin - Yet Another CLi Spinner package, for working with terminal spinners.
      • gommon/color - Style terminal text.
      • asciigraph - Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.
  • Audio and Music

    • Contents

      • flac - Native Go FLAC encoder/decoder with support for FLAC streams.
      • gaad - Native Go AAC bitstream parser.
      • GoAudio - Native Go Audio Processing Library.
      • gosamplerate - libsamplerate bindings for go.
      • id3v2 - ID3 decoding and encoding library for Go.
      • malgo - Mini audio library.
      • minimp3 - Lightweight MP3 decoder library.
      • mix - Sequence-based Go-native audio mixer for music apps.
      • music-theory - Music theory models in Go.
      • Oto - A low-level library to play sound on multiple platforms.
      • PortAudio - Go bindings for the PortAudio audio I/O library.
      • portmidi - Go bindings for PortMidi.
      • vorbis - "Native" Go Vorbis decoder (uses CGO, but has no dependencies).
  • Authentication and OAuth

    • Contents

      • authboss - Modular authentication system for the web. It tries to remove as much boilerplate and "hard things" as possible so that each time you start a new web project in Go, you can plug it in, configure, and start building your app without having to build an authentication system each time.
      • branca - Golang implementation of Branca Tokens.
      • casbin - Authorization library that supports access control models like ACL, RBAC, ABAC.
      • cookiestxt - provides parser of cookies.txt file format.
      • go-email-normalizer - Golang library for providing a canonical representation of email address.
      • go-guardian - Go-Guardian is a golang library that provides a simple, clean, and idiomatic way to create powerful modern API and web authentication that supports LDAP, Basic, Bearer token and Certificate based authentication.
      • go-jose - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
      • go-oauth2-server - Standalone, specification-compliant, OAuth2 server written in Golang.
      • gologin - chainable handlers for login with OAuth1 and OAuth2 authentication providers.
      • gorbac - provides a lightweight role-based access control (RBAC) implementation in Golang.
      • goth - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
      • httpauth - HTTP Authentication middleware.
      • jeff - Simple, flexible, secure and idiomatic web session management with pluggable backends.
      • jwt - Clean and easy to use implementation of JSON Web Tokens (JWT).
      • jwt - Lightweight JSON Web Token (JWT) library.
      • jwt - Safe, simple and fast JSON Web Tokens for Go.
      • jwt-auth - JWT middleware for Golang http servers with many configuration options.
      • loginsrv - JWT login microservice with plugable backends such as OAuth2 (Github), htpasswd, osiam.
      • oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support.
      • osin - Golang OAuth2 server library.
      • otpgo - Time-Based One-Time Password (TOTP) and HMAC-Based One-Time Password (HOTP) library for Go.
      • paseto - Golang implementation of Platform-Agnostic Security Tokens (PASETO).
      • permissions2 - Library for keeping track of users, login states and permissions. Uses secure cookies and bcrypt.
      • rbac - Minimalistic RBAC package for Go applications.
      • scope - Easily Manage OAuth2 Scopes In Go.
      • scs - Session Manager for HTTP servers.
      • securecookie - Efficient secure cookie encoding/decoding.
      • session - Go session management for web servers (including support for Google App Engine - GAE).
      • sessiongate-go - Go session management using the SessionGate Redis module.
      • sessions - Dead simple, highly performant, highly customizable sessions service for go http servers.
      • sessionup - Simple, yet effective HTTP session management and identification package.
      • sjwt - Simple jwt generator and parser.
      • otpgen - Library to generate TOTP/HOTP codes.
  • Blockchain

    • Contents

      • cosmos-sdk - A Framework for Building Public Blockchains in the Cosmos Ecosystem.
      • go-ethereum - Official Go implementation of the Ethereum protocol.
      • gossamer - A Go implementation of the Polkadot Host
      • tendermint - High-performance middleware for transforming a state machine written in any programming language into a Byzantine Fault Tolerant replicated state machine using the Tendermint consensus and blockchain protocols.
  • Bot Building

    • Contents

      • echotron - Concurrent library for Telegram Bots written in pure Go.
      • ephemeral-roles - A Discord bot for managing ephemeral roles based upon voice channel member presence.
      • go-chat-bot - IRC, Slack & Telegram bot written in Go.
      • go-sarah - Framework to build bot for desired chat services including LINE, Slack, Gitter and more.
      • go-tgbot - Pure Golang Telegram Bot API wrapper, generated from swagger file, session-based router and middleware.
      • go-twitch-irc - Library to write bots for twitch.tv chat
      • Golang CryptoTrading Bot - A golang implementation of a console-based trading bot for cryptocurrency exchanges.
      • govkbot - Simple Go [VK](https://vk.com) bot library.
      • hanu - Framework for writing Slack bots.
      • Kelp - official trading and market-making bot for the [Stellar](https://www.stellar.org/) DEX. Works out-of-the-box, written in Golang, compatible with centralized exchanges and custom trading strategies.
      • margelet - Framework for building Telegram bots.
      • micha - Go Library for Telegram bot api.
      • olivia - A chatbot built with an artificial neural network.
      • slack-bot - Ready to use Slack Bot for lazy developers: Custom commands, Jenkins, Jira, Bitbucket, Github...
      • slacker - Easy to use framework to create Slack bots.
      • slackscot - Another framework for building Slack bots.
      • tbot - Telegram bot server with API similar to net/http.
      • telebot - Telegram bot framework written in Go.
      • telegram-bot-api - Simple and clean Telegram bot client.
      • Tenyks - Service oriented IRC bot using Redis and JSON for messaging.
  • Build Automation

    • Contents

      • 1build - Command line tool to frictionlessly manage project-specific commands.
      • anko - Simple application watcher for multiple programming languages.
      • gaper - Builds and restarts a Go project when it crashes or some watched file changes.
      • goyek - Create build pipelines in Go.
      • mmake - Modern Make.
      • Task - simple "Make" alternative.
      • taskctl - Concurrent task runner.
      • realize - Go build system with file watchers and live reload. Run, build and watch file changes with custom paths.
      • gilbert - Build system and task runner for Go projects.
  • Configuration

    • Advanced Console UIs

      • aconfig - Simple, useful and opinionated config loader.
      • cleanenv - Minimalistic configuration reader (from files, ENV, and wherever you want).
      • config - A lightweight yet powerful config package for Go projects.
      • config - Cloud native application configuration. Bind ENV to structs in only two lines.
      • config - JSON or YAML configuration wrapper with environment variables and flags parsing.
      • configuration - Library for initializing configuration structs from env variables, files, flags and 'default' tag.
      • configure - Provides configuration through multiple sources, including JSON, flags and environment variables.
      • configuro - opinionated configuration loading & validation framework from ENV and Files focused towards 12-Factor compliant applications.
      • confita - Load configuration in cascade from multiple backends into a struct.
      • conflate - Library/tool to merge multiple JSON/YAML/TOML files from arbitrary URLs, validation against a JSON schema, and application of default values defined in the schema.
      • env - Parse environment variables to Go structs (with defaults).
      • envcfg - Un-marshaling environment variables to Go structs.
      • envconf - Configuration from environment.
      • envconfig - Read your configuration from environment variables.
      • envh - Helpers to manage environment variables.
      • fig - Tiny library for reading configuration from a file and from environment variables (with validation & defaults).
      • gcfg - read INI-style configuration files into Go structs; supports user-defined types and subsections.
      • genv - Read environment variables easily with dotenv support.
      • go-aws-ssm - Go package that fetches parameters from AWS System Manager - Parameter Store.
      • go-conf - Simple library for application configuration based on annotated structs. It supports reading the configuration from environment variables, config files and command line parameters.
      • go-ini - A Go package that marshals and unmarshals INI-files.
      • go-ssm-config - Go utility for loading configuration parameters from AWS SSM (Parameter Store).
      • go-up - A simple configuration library with recursive placeholders resolution and no magic.
      • godotenv - Go port of Ruby's dotenv library (Loads environment variables from `.env`).
      • gofigure - Go application configuration made easy.
      • gookit/config - application config manage(load,get,set). support JSON, YAML, TOML, INI, HCL. multi file load, data override merge.
      • harvester - Harvester, a easy to use static and dynamic configuration package supportig seeding, env vars and Consul integration.
      • hjson - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments.
      • hocon - Configuration library for working with the HOCON(a human-friendly JSON superset) format, supports features like environment variables, referencing other values, comments and multiple files.
      • ingo - Flags persisted in an ini-like config file.
      • ini - Go package to read and write INI files.
      • joshbetz/config - Small configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP.
      • kelseyhightower/envconfig - Go library for managing configuration data from environment variables.
      • koanf - Light weight, extensible library for reading config in Go applications. Built in support for JSON, TOML, YAML, env, command line.
      • konfig - Composable, observable and performant config handling for Go for the distributed processing era.
      • mini - Golang package for parsing ini-style configuration files.
      • nasermirzaei89/env - Simple useful package for read environment variables.
      • onion - Layer based configuration for Go, Supports JSON, TOML, YAML, properties, etcd, env, and encryption using PGP.
      • store - Lightweight configuration manager for Go.
      • swap - Instantiate/configure structs recursively, based on build environment. (YAML, TOML, JSON and env).
      • typenv - Minimalistic, zero dependency, typed environment variables library.
      • uConfig - Lightweight, zero-dependency, and extendable configuration management.
      • viper - Go configuration with fangs.
      • xdg - Go implementation of the [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) and [XDG user directories](https://wiki.archlinux.org/index.php/XDG_user_directories).
      • xdg - Cross platform package that follows the [XDG Standard](https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html).
      • ini - INI Parser & Write Library, Unmarshal to Struct,Marshal to Json,Write File,watch file.
      • goConfig - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
      • gonfig - Tag-based configuration parser which loads values from different providers into typesafe struct.
      • gone/jconf - Modular JSON configuration. Keep you config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
  • Continuous Integration

    • Advanced Console UIs

      • CDS - Enterprise-Grade CI/CD and DevOps Automation Open Source Platform.
      • drone - Drone is a Continuous Integration platform built on Docker, written in Go.
      • duci - A simple ci server no needs domain specific languages.
      • gomason - Test, Build, Sign, and Publish your go binaries from a clean workspace.
      • goveralls - Go integration for Coveralls.io continuous code coverage tracking system.
      • overalls - Multi-Package go project coverprofile for tools like goveralls.
      • roveralls - Recursive coverage testing tool.
      • gotestfmt - go test output for humans.
  • CSS Preprocessors

    • Advanced Console UIs

      • gcss - Pure Go CSS Preprocessor.
      • go-libsass - Go wrapper to the 100% Sass compatible libsass project.
  • Data Structures

    • Advanced Console UIs

      • algorithms - Algorithms and data structures.CLRS study.
      • binpacker - Binary packer and unpacker helps user build custom binary stream.
      • bit - Golang set data structure with bonus bit-twiddling functions.
      • bitmap - Dense, zero-allocation, SIMD-enabled bitmap/bitset in Go
      • bitset - Go package implementing bitsets.
      • bloom - Bloom filters implemented in Go.
      • bloom - Golang Bloom filter implementation.
      • bloomfilter - Yet another Bloomfilter implementation in Go, compatible with Java's Guava library.
      • boomfilters - Probabilistic data structures for processing continuous, unbounded streams.
      • cmap - a thread-safe concurrent map for go, support using `interface{}` as key and auto scale up shards.
      • concurrent-writer - Highly concurrent drop-in replacement for `bufio.Writer`.
      • conjungo - A small, powerful and flexible merge library.
      • count-min-log - Go implementation Count-Min-Log sketch: Approximately counting with approximate counters (Like Count-Min sketch but using less memory).
      • crunch - Go package implementing buffers for handling various datatypes easily.
      • cuckoo-filter - Cuckoo filter: a comprehensive cuckoo filter, which is configurable and space optimized compared with other implements, and all features mentioned in original paper is available.
      • cuckoofilter - Cuckoo filter: a good alternative to a counting bloom filter implemented in Go.
      • deque - A highly optimized double-ended queue.
      • deque - Fast ring-buffer deque (double-ended queue).
      • dict - Python-like dictionaries (dict) for Go.
      • dsu - Disjoint Set data structure implementation in Go.
      • encoding - Integer Compression Libraries for Go.
      • fsm - Finite-State Machine package.
      • gdcache - A pure non-intrusive cache library implemented by golang, you can use it to implement your own distributed cache.
      • go-adaptive-radix-tree - Go implementation of Adaptive Radix Tree.
      • go-datastructures - Collection of useful, performant, and thread-safe data structures.
      • go-edlib - Go string comparison and edit distance algorithms library (Levenshtein, LCS, Hamming, Damerau levenshtein, Jaro-Winkler, etc.) compatible with Unicode.
      • go-ef - A Go implementation of the Elias-Fano encoding.
      • go-geoindex - In-memory geo index.
      • go-mcache - Fast in-memory key:value store/cache library. Pointer caches.
      • gocache - A complete Go cache library with mutiple stores (memory, memcache, redis, ...), chainable, loadable, metrics cache and more.
      • goconcurrentqueue - Concurrent FIFO queue.
      • gods - Go Data Structures. Containers, Sets, Lists, Stacks, Maps, BidiMaps, Trees, HashSet etc.
      • gofal - fractional api for Go.
      • golang-set - Thread-Safe and Non-Thread-Safe high-performance sets for Go.
      • goset - A useful Set collection implementation for Go.
      • goskiplist - Skip list implementation in Go.
      • gostl - Data structure and algorithm library for go, designed to provide functions similar to C++ STL.
      • goterator - Iterator implementation to provide map and reduce functionalities.
      • go-rquad - Region quadtrees with efficient point location and neighbour finding.
      • gota - Implementation of dataframes, series, and data wrangling methods for Go.
  • Sponsorships

  • Database

    • Advanced Console UIs

      • hasql - Library for accessing multi-host SQL database installations.
  • Distributed Systems

    • Advanced Console UIs

      • dynamolock - DynamoDB-backed distributed locking implementation.
      • pglock - PostgreSQL-backed distributed locking implementation.
      • raft - Go implementation of the Raft consensus protocol, by CoreOS.
      • resgate - Realtime API Gateway for building REST, real time, and RPC APIs, where all clients are synchronized seamlessly.
  • File Handling

    • Advanced Console UIs

      • stl - Modules to read and write STL (stereolithography) files. Concurrent algorithm for reading.
  • Financial

    • Advanced Console UIs

      • fastme - Fast extensible matching engine Go implementation.
      • go-finance - Comprehensive financial markets data in Go.
  • Goroutines

    • Advanced Console UIs

      • oversight - Oversight is a complete implementation of the Erlang supervision trees.
  • IoT (Internet of Things)

    • Advanced Console UIs

      • periph - Peripherals I/O to interface with low-level board facilities.
  • JSON

    • Advanced Console UIs

  • Logging

    • Advanced Console UIs

      • gone/log - Fast, extendable, full-featured, std-lib source compatible log library.
  • Miscellaneous

    • Uncategorized

      • go-openapi - Collection of packages to parse and utilize open-api schemas.
      • VarHandler - Generate boilerplate http input and output handling.
  • Networking

    • Uncategorized

      • gohooks - GoHooks make it easy to send and consume secured web-hooks from a Go application. Inspired by Spatie's Laravel Webhook Client and Server.
  • Security

    • HTTP Clients

      • Interpol - Rule-based data generator for fuzzing and penetration testing.
      • themis - high-level cryptographic library for solving typical data security tasks (secure data storage, secure messaging, zero-knowledge proof authentication), available for 14 languages, best fit for multi-platform apps.
  • Server Applications

    • HTTP Clients

      • consul - Consul is a tool for service discovery, monitoring and configuration.
      • nsq - A realtime distributed messaging platform.
  • Testing

    • HTTP Clients

      • gocheck - More advanced testing framework alternative to gotest.
  • Text Processing

  • Third-party APIs

    • HTTP Clients

      • go-twitch - Go client for interacting with the Twitch v3 API.
  • Utilities

    • HTTP Clients

  • UUID

    • HTTP Clients

      • goflake - A small, scalable, & serverless unique ID generator for use in distributed systems. Inspired by Twitters Snowflake.
      • uniq - No hassle safe, fast unique identifiers with commands.
  • Web Frameworks

    • HTTP Clients

      • Confetti Framework - Confetti is a Go web application framework with an expressive, elegant syntax. Confetti combines the elegance of Laravel and the simplicity of Go.
      • REST Layer - Framework to build REST/GraphQL API on top of databases with mostly configuration over code.
      • aah - Scalable, performant, rapid development Web framework for Go.
    • Middlewares

      • go-wrap - Small middlewares package for net/http.
  • Code Analysis

    • Routers

      • GoCover.io - GoCover.io offers the code coverage of any golang package as a service.
      • Golint online - Lints online Go source files on GitHub, Bitbucket and Google Project Hosting using the golint package.
      • goreturns - Adds zero-value return statements to match the func return types.
      • gosimple - gosimple is a linter for Go source code that specialises on simplifying code.
      • staticcheck - staticcheck is `go vet` on steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#.
      • unused - unused checks Go code for unused constants, variables, functions and types.
  • Editor Plugins

  • Go Generate Tools

    • Routers

      • re2dfa - Transform regular expressions into finite state machines and output Go source code.
  • Go Tools

    • Routers

      • generator-go-lang - A [Yeoman](https://yeoman.io) generator to get new Go projects started.
  • Software Packages

    • DevOps Tools

      • Gogs - A Self Hosted Git Service in the Go Programming Language.
      • Wide - Web-based IDE for Teams using Golang.
    • Other Software

      • Docker - Open platform for distributed applications for developers and sysadmins.
      • hugo - Fast and Modern Static Website Engine.
      • syncthing - Open, decentralized file synchronization tool and protocol.
      • tsuru - Extensible and open source Platform as a Service software.
  • Conferences

  • E-Books

  • Meetups

  • Style Guides

  • Social Media

  • GUI

    • Advanced Console UIs

      • Wails - Mac, Windows, Linux desktop apps with HTML UI using built-in OS HTML renderer.