Go
This is a mirrored zone from the avelino/awesome-go repository. Part of the Awesome list collection.
Contents_Index
- ACTOR MODEL5
- ARTIFICIAL INTELLIGENCE6
- AUDIO AND MUSIC11
- AUTHENTICATION AND AUTHORIZATION39
- BLOCKCHAIN11
- BOT BUILDING14
- BUILD AUTOMATION13
- ADVANCED CONSOLE UIS35
- STANDARD CLI49
- CONFIGURATION58
- CONTINUOUS INTEGRATION16
- CSS PREPROCESSORS2
- DATA INTEGRATION FRAMEWORKS3
- BIT-PACKING AND COMPRESSION6
- BIT SETS2
- BLOOM AND CUCKOO FILTERS8
- DATA STRUCTURE AND ALGORITHM COLLECTIONS4
- ITERATORS3
- MAPS6
- MISCELLANEOUS DATA STRUCTURES AND ALGORITHMS17
- NULLABLE TYPES3
- QUEUES8
- SETS4
- TEXT ANALYSIS9
- TREES6
- PIPES4
- CACHES31
- DATABASES IMPLEMENTED IN GO45
- DATABASE SCHEMA MIGRATION22
- DATABASE TOOLS19
- SQL QUERY BUILDERS26
- INTERFACES TO MULTIPLE BACKENDS5
- RELATIONAL DATABASE DRIVERS21
- NOSQL DATABASE DRIVERS29
- SEARCH AND ANALYTIC DATABASES9
- DATE AND TIME23
- DISTRIBUTED SYSTEMS65
- DYNAMIC DNS3
- EMAIL24
- EMBEDDABLE SCRIPTING LANGUAGES23
- ERROR HANDLING18
- FILE HANDLING26
- FINANCIAL26
- FORMS13
- FUNCTIONAL10
- GAME DEVELOPMENT22
- GENERATORS13
- GEOGRAPHIC17
- GO COMPILERS7
- GOROUTINES50
- GUI28
- HARDWARE8
- IMAGES43
- IOT (INTERNET OF THINGS)14
- JOB SCHEDULER17
- JSON40
- LOGGING62
- MACHINE LEARNING38
- MESSAGING58
- MICROSOFT OFFICE1
- MICROSOFT EXCEL6
- MICROSOFT WORD1
- DEPENDENCY INJECTION25
- PROJECT LAYOUT19
- STRINGS8
- UNCATEGORIZED59
- LANGUAGE DETECTION5
- MORPHOLOGICAL ANALYZERS16
- SLUGIFIERS3
- TOKENIZERS9
- TRANSLATION9
- TRANSLITERATION4
- NETWORKING78
- HTTP CLIENTS24
- OPENGL6
- ORM25
- PACKAGE MANAGEMENT4
- PERFORMANCE8
- QUERY LANGUAGE17
- REFLECTION9
- RESOURCE EMBEDDING4
- SCIENCE AND DATA ANALYSIS36
- SECURITY44
- SERIALIZATION19
- SERVER APPLICATIONS32
- STREAM PROCESSING9
- TEMPLATE ENGINES18
- TESTING FRAMEWORKS66
- MOCK21
- FUZZING AND DELTA-DEBUGGING/REDUCING/SHRINKING2
- SELENIUM AND BROWSER CONTROL TOOLS4
- FAIL INJECTION1
- FORMATTERS8
- MARKUP LANGUAGES13
- PARSERS/ENCODERS/DECODERS25
- REGULAR EXPRESSIONS5
- SANITATION2
- SCRAPERS9
- RSS1
- UTILITY/MISCELLANEOUS7
- THIRD-PARTY APIS102
- UTILITIES183
- UUID14
- VALIDATION15
- VERSION CONTROL8
- VIDEO11
- WEB FRAMEWORKS38
- ACTUAL MIDDLEWARES12
- LIBRARIES FOR CREATING HTTP MIDDLEWARES11
- ROUTERS27
- WEBASSEMBLY7
- WEBHOOKS SERVER3
- WINDOWS3
- WORKFLOW FRAMEWORKS5
- XML6
- ZERO TRUST5
- CODE ANALYSIS32
- EDITOR PLUGINS13
- GO GENERATE TOOLS13
- GO TOOLS21
- DEVOPS TOOLS97
- OTHER SOFTWARE72
- BENCHMARKS15
- CONFERENCES15
- E-BOOKS FOR PURCHASE15
- FREE E-BOOKS20
- GOPHERS11
- MEETUPS65
- STYLE GUIDES8
- TWITTER5
- REDDIT1
- WEBSITES34
- TUTORIALS47
- GUIDED LEARNING4
Actor Model
5_ENTRIESLibraries for building actor-based programs.
- asyncmachine-go/pkg/machine
Graph control flow library (AOP, actor, state-machine).
- Ergo
An actor-based Framework with network transparency for creating event-driven architecture in Golang. Inspired by Erlang.
- Goakt
Fast and Distributed Actor framework using protocol buffers as message for Golang.
- Hollywood
Blazingly fast and light-weight Actor engine written in Golang.
- ProtoActor
Distributed actors for Go, C#, and Java/Kotlin.
Artificial Intelligence
6_ENTRIESLibraries for building programs that leverage AI.
- chromem-go
Embeddable vector database for Go with Chroma-like interface and zero third-party dependencies. In-memory with optional persistence.
- fun
The simplest but powerful way to use large language models (LLMs) in Go.
- langchaingo
LangChainGo is a framework for developing applications powered by language models.
- LocalAI
Open Source OpenAI alternative, self-host AI models.
- Ollama
Run large language models locally.
- OllamaFarm
Manage, load-balance, and failover packs of Ollamas.
Audio and Music
11_ENTRIESLibraries for manipulating audio.
- beep
A simple library for playback and audio manipulation.
- flac
Native Go FLAC encoder/decoder with support for FLAC streams.
- gaad
Native Go AAC bitstream parser.
- go-mpris
Client for mpris dbus interfaces.
- 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.
- Oto
A low-level library to play sound on multiple platforms.
- PortAudio
Go bindings for the PortAudio audio I/O library.
Authentication and Authorization
39_ENTRIESLibraries for implementing authentication and authorization.
- 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 it, and start building your app without having to build an authentication system each time.
- branca
branca token specification implementation for Golang 1.15+.
- casbin
Authorization library that supports access control models like ACL, RBAC, and ABAC.
- cookiestxt
provides a parser of cookies.txt file format.
- go-githubauth
Utilities for GitHub authentication: generate and use GitHub application and installation tokens.
- 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-iam
Developer-first Identity and Access Management system with a simple UI.
- go-jose
Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
- go-jwt
JWT authentication package providing access tokens and refresh tokens with fingerprinting, Redis storage, and automatic refresh capabilities.
- goiabada
An open-source authentication and authorization server supporting OAuth2 and OpenID Connect.
- gologin
chainable handlers for login with OAuth1 and OAuth2 authentication providers.
- gorbac
provides a lightweight role-based access control (RBAC) implementation in Golang.
- gosession
This is quick session for net/http in GoLang. This package is perhaps the best implementation of the session mechanism, or at least it tries to become one.
- goth
provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
- jeff
Simple, flexible, secure, and idiomatic web session management with pluggable backends.
- 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.
- jwt-go
A full featured implementation of JSON Web Tokens (JWT). This library supports the parsing and verification as well as the generation and signing of JWTs.
- jwx
Go module implementing various JWx (JWA/JWE/JWK/JWS/JWT, otherwise known as JOSE) technologies.
- keto
Open Source (Go) implementation of "Zanzibar: Google's Consistent, Global Authorization System". Ships gRPC, REST APIs, newSQL, and an easy and granular permission language. Supports ACL, RBAC, and other access models.
- loginsrv
JWT login microservice with pluggable 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.
- oidc
Easy to use OpenID Connect client and server library written for Go and certified by the OpenID Foundation.
- osin
Golang OAuth2 server library.
- otpgen
Library to generate TOTP/HOTP codes.
- 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).
- permissions
Library for keeping track of users, login states, and permissions. Uses secure cookies and bcrypt.
- 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).
- 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.
- spicedb
A Zanzibar-inspired database that enables fine-grained authorization.
- x509proxy
Library to handle X509 proxy certificates.
Blockchain
11_ENTRIESTools for building blockchains.
- cometbft
A distributed, Byzantine fault-tolerant, deterministic state machine replication engine. It is a fork of Tendermint Core and implements the Tendermint consensus algorithm.
- cosmos-sdk
A Framework for Building Public Blockchains in the Cosmos Ecosystem.
- gno
A comprehensive smart contract suite built with Golang and Gnolang, a deterministic, purpose-built Go variant for blockchains.
- go-ethereum
Official Go implementation of the Ethereum protocol.
- gosemble
A Go-based framework for building Polkadot/Substrate-compatible runtimes.
- gossamer
A Go implementation of the Polkadot Host.
- kubo
An IPFS implementation in Go. It provides content-addressable storage which can be used for decentralized storage in DApps. It is based on the IPFS protocol.
- lnd
A complete implementation of a Lightning Network node.
- nview
Local monitoring tool for a Cardano Node. It's a TUI (terminal user interface) designed to fit most screens.
- solana-go
Go library to interface with Solana JSON RPC and WebSocket interfaces.
- 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
14_ENTRIESLibraries for building and working with bots.
- arikawa
A library and framework for the Discord API.
- bot
Zero-dependencies Telegram Bot library with additional UI components.
- echotron
An elegant and concurrent library for Telegram Bots in Go.
- go-joe
A general-purpose bot library inspired by Hubot but written in Go.
- go-sarah
Framework to build a bot for desired chat services including LINE, Slack, Gitter, and more.
- go-tg
Generated from official docs Go client library for accessing Telegram Bot API, with batteries for building complex bots included.
- go-twitch-irc
Library to write bots for twitch.tv chat
- micha
Go Library for Telegram bot api.
- 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.
- telebot
Telegram bot framework is written in Go.
- telego
Telegram Bot API library for Golang with full one-to-one API implementation.
- telegram-bot-api
Simple and clean Telegram bot client.
- wayback
A bot for Telegram, Mastodon, Slack, and other messaging platforms archives webpages.
Build Automation
13_ENTRIESLibraries and tools help with build automation.
- 1build
Command line tool to frictionlessly manage project-specific commands.
- air
Air - Live reload for Go apps.
- anko
Simple application watcher for multiple programming languages.
- gaper
Builds and restarts a Go project when it crashes or some watched file changes.
- gilbert
Build system and task runner for Go projects.
- goyek
Create build pipelines in Go.
- mage
Mage is a make/rake-like build tool using Go.
- mmake
Modern Make.
- realize
Go build a system with file watchers and live to reload. Run, build and watch file changes with custom paths.
- Task
simple "Make" alternative.
- taskctl
Concurrent task runner.
- xc
Task runner with README.md defined tasks, executable markdown.
Advanced Console UIs
35_ENTRIESLibraries for building Console Applications and Console User Interfaces.
- asciigraph
Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.
- aurora
ANSI terminal colors that support fmt.Printf/Sprintf.
- box-cli-maker
Make Highly Customized Boxes for your CLI.
- bubble-table
An interactive table component for bubbletea.
- bubbles
TUI components for bubbletea.
- bubbletea
Go framework to build terminal apps, based on The Elm Architecture.
- crab-config-files-templating
Dynamic configuration file templating tool for kubernetes manifest or general configuration files.
- ctc
The non-invasive cross-platform terminal color library does not need to modify the Print method.
- fx
Terminal JSON viewer & processor.
- 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-palette
Go library that provides elegant and convenient style definitions using ANSI colors. Fully compatible & wraps the fmt library for nice terminal layouts.
- go-prompt
Library for building a powerful interactive prompt, inspired by python-prompt-toolkit.
- gocui
Minimalist Go library aimed at creating Console User Interfaces.
- gommon/color
Style terminal text.
- gookit/color
Terminal color rendering tool library, support 16 colors, 256 colors, RGB color rendering output, compatible with Windows.
- lipgloss
Declaratively define styles for color, format and layout in the terminal.
- 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 a terminal with Go.
- spinner
Go package to easily provide a terminal spinner with options.
- tabby
A tiny library for super simple Golang tables.
- table
Small library for terminal color based tables.
- termbox-go
Termbox is a library for creating cross-platform text-based interfaces.
- termenv
Advanced ANSI style & color support for your terminal applications.
- termui
Go terminal dashboard based on termbox-go and inspired by blessed-contrib.
- uilive
Library for updating terminal output in real time.
- 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.
Standard CLI
49_ENTRIESLibraries for building standard or basic Command Line applications.
- 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.
- carapace
Command argument completion generator for spf13/cobra.
- carapace-bin
Multi-shell multi-command argument completer.
- carapace-spec
Define simple completions using a spec file.
- 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
flagpackage 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 as 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.
- console
Closed-loop application library for Cobra commands, with oh-my-posh prompts, and more.
- 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.
- flaggy
A robust and idiomatic flags package with excellent subcommand support.
- flagvar
A collection of flag argument types for Go's standard
flagpackage. - flash-flags
Ultra-fast, zero-dependency, POSIX-compliant flag parsing library that can be used as drop-in stdlib replacement with security hardening.
- getopt
An accurate Go
getopt, validated against the GNU libc implementation. - go-arg
Struct-based argument parsing in Go.
- go-flags
go command line option parser.
- go-getoptions
Go option parser inspired by the flexibility of Perl’s GetOpt::Long.
- go-readline-ny
A customizable line-editing library with Emacs keybindings, Unicode support, completion, and syntax highlighting. Used in NYAGOS shell.
- gocmd
Go library for building command line applications.
- goopt
A declarative, struct-tag based CLI framework for Go, with a broad feature set such as hierarchical commands/flags, i18n, shell completion, and validation.
- hashicorp/cli
Go library for implementing command-line interfaces.
- hiboot cli
cli application framework with auto configuration and dependency injection.
- job
JOB, make your short-term command as a long-term job.
- kingpin
Command line and flag parser supporting sub commands (superseded by
kong; see below). - liner
Go readline-like library for command-line interfaces.
- mcli
A minimal but very powerful cli library for Go.
- mkideal/cli
Feature-rich and easy to use command-line package based on golang struct tags.
- mow.cli
Go library for building CLI applications with sophisticated flag and argument parsing and validation.
- ops
Unikernel Builder/Orchestrator.
- orpheus
CLI framework with security hardening, plugin storage system, and production observability features.
- pflag
Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
- readline
Shell library with modern and easy to use UI features.
- sflags
Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin, and other libraries.
- structcli
Eliminate Cobra boilerplate: build powerful, feature-rich CLIs declaratively from Go structs.
- strumt
Library to create prompt chain.
- subcmd
Another approach to parsing and running subcommands. Works alongside the standard
flagpackage. - teris-io/cli
Simple and complete API for building command line interfaces in Go.
- urfave/cli
Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli).
- version
Collects and displays CLI version information in multiple formats along with upgrade notice.
- wlog
Simple logging interface that supports cross-platform color and concurrency.
- wmenu
Easy to use menu structure for cli applications that prompt users to make choices.
Configuration
58_ENTRIESLibraries for configuration parsing.
- aconfig
Simple, useful and opinionated config loader.
- argus
File watching and configuration management with MPSC ring buffer, adaptive batching strategies, and universal format parsing (JSON, YAML, TOML, INI, HCL, Properties).
- azureappconfiguration
The configuration provider for consuming data in Azure App Configuration from Go applications.
- bcl
BCL is a configuration language similar to HCL.
- cleanenv
Minimalistic configuration reader (from files, ENV, and wherever you want).
- config
Cloud native application configuration. Bind ENV to structs in only two lines.
- config
configure your app using file, environment variables, or flags in two lines of code.
- configuration
Library for initializing configuration structs from env variables, files, flags and 'default' tag.
- configuro
opinionated configuration loading & validation framework from ENV and Files focused towards 12-Factor compliant applications.
- confiq
Structured data format to config struct decoder library for Go - supporting multiple data formats.
- 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.
- enflag
Container-oriented, zero-dependency configuration library that unifies Env variable and Flag parsing. Uses generics for type safety, without reflection or struct tags.
- env
Parse environment variables to Go structs (with defaults).
- env
A lightweight package for loading environment variables into structs.
- env
An environment utility package with support for unmarshaling into structs.
- envconfig
Read your configuration from environment variables.
- envh
Helpers to manage environment variables.
- envyaml
Yaml with environment variables reader. it helps to have secrets as environment variable but load them configs as structured Yaml.
- fig
Tiny library for reading configuration from a file and from environment variables (with validation & defaults).
- genv
Read environment variables easily with dotenv support.
- go-array
A Go package that read or set data from map, slice or json.
- go-aws-ssm
Go package that fetches parameters from AWS System Manager - Parameter Store.
- go-cfg
The library provides a unified way to read configuration data into a structure from various sources, such as env, flags, and configuration files (.json, .yaml, .toml, .env).
- 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-config
Simple and convenient library for working with app configurations.
- 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.
- GoCfg
Config manager with Struct Tags based contracts, custom value providers, parsers, and documentation generation. Customizable yet simple.
- godotenv
Go port of Ruby's dotenv library (Loads environment variables from
.env). - GoLobby/Config
GoLobby Config is a lightweight yet powerful configuration manager for the Go programming language.
- gone/jconf
Modular JSON configuration. Keep your config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
- gonfig
Tag-based configuration parser which loads values from different providers into typesafe struct.
- 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 supporting seeding, env vars and Consul integration.
- hedzr/store
Extensible, high-performance configuration management library, optimized for hierarchical data.
- 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.
- ini
Go package to read and write INI files.
- ini
INI Parser & Write Library, Unmarshal to Struct, Marshal to Json, Write File, watch file.
- 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.
- konf
The simplest API for reading/watching config from file, env, flag and clouds (e.g. AWS, Azure, GCP).
- konfig
Composable, observable and performant config handling for Go for the distributed processing era.
- kong
Command-line parser with support for arbitrarily complex command-line structures and additional sources of configuration such as YAML, JSON, TOML, etc (successor to
kingpin). - nasermirzaei89/env
Simple useful package for read environment variables.
- nfigure
Per-library struct-tag based configuration from command lines (Posix & Go-style); environment, JSON, YAML
- onion
Layer based configuration for Go, Supports JSON, TOML, YAML, properties, etcd, env, and encryption using PGP.
- piper
Viper wrapper with config inheritance and key generation.
- sonic
A blazingly fast JSON serializing & deserializing library.
- 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 and XDG user directories.
- yamagiconf
The "safe subset" of YAML for Go configs.
- zerocfg
Zero-effort, concise configuration management that avoids boilerplate and repetitive code, supports multiple sources with priority overrides.
Continuous Integration
16_ENTRIESTools for help with continuous integration.
- abstruse
Abstruse is a distributed CI platform.
- Bencher
A suite of continuous benchmarking tools designed to catch performance regressions in CI.
- CDS
Enterprise-Grade CI/CD and DevOps Automation Open Source Platform.
- dot
A minimal, local first continuous integration system that uses Docker to run jobs concurrently in stages.
- drone
Drone is a Continuous Integration platform built on Docker, written in Go.
- go-beautiful-html-coverage
A GitHub Action to track code coverage in your pull requests, with a beautiful HTML preview, for free.
- go-fuzz-action
Use Go 1.18's built-in fuzz testing in GitHub Actions.
- go-semver-release
Automate the semantic versioning of Git repositories.
- go-test-coverage
A GitHub Action which reports issues when test coverage is below set threshold.
- gomason
Test, Build, Sign, and Publish your go binaries from a clean workspace.
- gotestfmt
go test output for humans.
- goveralls
Go integration for Coveralls.io continuous code coverage tracking system.
- muffet
Fast website link checker in Go, see alternatives.
- overalls
Multi-Package go project coverprofile for tools like goveralls.
- roveralls
Recursive coverage testing tool.
- woodpecker
Woodpecker is a community fork of the Drone CI system.
CSS Preprocessors
2_ENTRIESLibraries for preprocessing CSS files.
- go-css
A very simple CSS parser, written in Go.
- go-libsass
Go wrapper to the 100% Sass compatible libsass project.
Data Integration Frameworks
3_ENTRIESFrameworks for performing ELT / ETL
- Benthos
A message streaming bridge between a range of protocols.
- CloudQuery
A high-performance ELT data integration framework with pluggable architecture.
- omniparser
A versatile ETL library that parses text input (CSV/txt/JSON/XML/EDI/X12/EDIFACT/etc) in streaming fashion and transforms data into JSON output using data-driven schema.
Bit-packing and Compression
6_ENTRIES- bingo
Fast, zero-allocation, lexicographical-order-preserving packing of native types to bytes.
- binpacker
Binary packer and unpacker helps user build custom binary stream.
- bit
Golang set data structure with bonus bit-twiddling functions.
- crunch
Go package implementing buffers for handling various datatypes easily.
- go-ef
A Go implementation of the Elias-Fano encoding.
- roaring
Go package implementing compressed bitsets.
Bit Sets
2_ENTRIESBloom and Cuckoo Filters
8_ENTRIES- bloom
Go package implementing Bloom filters.
- 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.
- 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 are available.
- cuckoofilter
Cuckoo filter: a good alternative to a counting bloom filter implemented in Go.
- ring
Go implementation of a high performance, thread safe bloom filter.
Data Structure and Algorithm Collections
4_ENTRIES- algorithms
Algorithms and data structures.CLRS study.
- go-datastructures
Collection of useful, performant, and thread-safe data structures.
- gods
Go Data Structures. Containers, Sets, Lists, Stacks, Maps, BidiMaps, Trees, HashSet etc.
- gostl
Data structure and algorithm library for go, designed to provide functions similar to C++ STL.
Iterators
3_ENTRIESMaps
6_ENTRIES- cmap
a thread-safe concurrent map for go, support using
interface{}as key and auto scale up shards. - concurrent-swiss-map
A high-performance, thread-safe generic concurrent hash map implementation with Swiss Map.
- dict
Python-like dictionaries (dict) for Go.
- go-shelve
A persistent, map-like object for the Go programming language. Supports multiple embedded key-value stores.
- goradd/maps
Go 1.18+ generic map interface for maps; safe maps; ordered maps; ordered, safe maps; etc.
- hmap
HMap is a concurrent and secure, generic support Map implementation designed to provide an easy-to-use API.
Miscellaneous Data Structures and Algorithms
17_ENTRIES- concurrent-writer
Highly concurrent drop-in replacement for
bufio.Writer. - count-min-log
Go implementation Count-Min-Log sketch: Approximately counting with approximate counters (Like Count-Min sketch but using less memory).
- fsm
Finite-State Machine package.
- genfuncs
Go 1.18+ generics package inspired by Kotlin's Sequence and Map.
- go-generics
Generic slice, map, set, iterator, and goroutine utilities.
- go-geoindex
In-memory geo index.
- go-rampart
Determine how intervals relate to each other.
- go-rquad
Region quadtrees with efficient point location and neighbour finding.
- go-tuple
Generic tuple implementation for Go 1.18+.
- go18ds
Go Data Structures using Go 1.18 generics.
- gofal
fractional api for Go.
- gogu
A comprehensive, reusable and efficient concurrent-safe generics utility functions and data structures library.
- gota
Implementation of dataframes, series, and data wrangling methods for Go.
- hide
ID type with marshalling to/from hash to prevent sending IDs to clients.
- hyperloglog
HyperLogLog implementation with Sparse, LogLog-Beta bias correction and TailCut space reduction.
- quadtree
Generic, zero-alloc, 100%-test covered quadtree.
- slices
Pure, generic functions for slices.
Nullable Types
3_ENTRIESQueues
8_ENTRIES- deque
A highly optimized double-ended queue.
- deque
Fast ring-buffer deque (double-ended queue).
- dqueue
Simple, in memory, zero dependency and battle tested, thread-safe deferred queue.
- goconcurrentqueue
Concurrent FIFO queue.
- hatchet
Distributed, Fault-tolerant task queue.
- list
A generic, thread-safe doubly linked list with full iterator support and an intrusive singly linked list for embedded use; a feature-rich replacement for container/list.
- memlog
An easy to use, lightweight, thread-safe and append-only in-memory data structure inspired by Apache Kafka.
- queue
Multiple thread-safe, generic queue implementations for Go.
Sets
4_ENTRIES- dsu
Disjoint Set data structure implementation in Go.
- golang-set
Thread-Safe and Non-Thread-Safe high-performance sets for Go.
- goset
A useful Set collection implementation for Go.
- set
Simple set data structure implementation in Go using LinkedHashMap.
Text Analysis
9_ENTRIES- bleve
Modern text indexing library for go.
- go-adaptive-radix-tree
Go implementation of Adaptive Radix Tree.
- go-edlib
Go string comparison and edit distance algorithms library (Levenshtein, LCS, Hamming, Damerau levenshtein, Jaro-Winkler, etc.) compatible with Unicode.
- levenshtein
Levenshtein distance and similarity metrics with customizable edit costs and Winkler-like bonus for common prefix.
- levenshtein
Implementation to calculate levenshtein distance in Go.
- mspm
Multi-String Pattern Matching Algorithm for information retrieval.
- parsefields
Tools for parse JSON-like logs for collecting unique fields and events.
- ptrie
An implementation of prefix tree.
- trie
Trie implementation in Go.
Trees
6_ENTRIES- graphlib
Topological sort lib,Sorting and pruning of DAG graphs.
- hashsplit
Split byte streams into chunks, and arrange chunks into trees, with boundaries determined by content, not position.
- merkle
Space-efficient computation of Merkle root hashes and inclusion proofs.
- skiplist
Very fast Go Skiplist implementation.
- skiplist
Skiplist implementation in Go.
- treemap
Generic key-sorted map using a red-black tree under the hood.
Pipes
4_ENTRIES- ordered-concurrently
Go module that processes work concurrently and returns output in a channel in the order of input.
- parapipe
FIFO Pipeline which parallels execution on each stage while maintaining the order of messages and results.
- pipeline
An implementation of pipelines with fan-in and fan-out.
- pipelines
Generic pipeline functions for concurrent processing.
Caches
31_ENTRIESData stores with expiring records, in-memory distributed data stores, or in-memory subsets of file-based databases.
- 2q
2Q in-memory cache implementation.
- bcache
Eventually consistent distributed in-memory cache Go library.
- BigCache
Efficient key/value cache for gigabytes of data.
- cache2go
In-memory key:value cache which supports automatic invalidation based on timeouts.
- cachego
Golang Cache component for multiple drivers.
- clusteredBigCache
BigCache with clustering support and individual item expiration.
- coherence-go-client
Full implementation of Oracle Coherence cache API for Go applications using gRPC as network transport.
- couchcache
RESTful caching micro-service backed by Couchbase server.
- EchoVault
Embeddable Distributed in-memory data store compatible with Redis clients.
- fastcache
fast thread-safe inmemory cache for big number of entries. Minimizes GC overhead.
- GCache
Cache library with support for expirable Cache, LFU, LRU and ARC.
- gdcache
A pure non-intrusive cache library implemented by golang, you can use it to implement your own distributed cache.
- go-cache
A flexible multi-layer Go caching library to deal with in-memory and shared cache by adopting Cache-Aside pattern.
- go-freelru
A GC-less, fast and generic LRU hashmap library with optional locking, sharding, eviction and expiration.
- go-gcache
The generic version of
GCache, cache support for expirable Cache, LFU, LRU and ARC. - go-mcache
Fast in-memory key:value store/cache library. Pointer caches.
- gocache
A complete Go cache library with multiple stores (memory, memcache, redis, ...), chainable, loadable, metrics cache and more.
- gocache
A data race free Go ache library with high performance and auto pruge functionality
- groupcache
Groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
- icache
A High Performance, Generic, thread-safe, zero-dependency cache package.
- imcache
A generic in-memory cache Go library. It supports expiration, sliding expiration, max entries limit, eviction callbacks and sharding.
- jetcache-go
Unified Go cache library supporting multi-level caching.
- nscache
A Go caching framework that supports multiple data source drivers.
- otter
A high performance lockless cache for Go. Many times faster than Ristretto and friends.
- pocache
Pocache is a minimal cache package which focuses on a preemptive optimistic caching strategy.
- ristretto
A high performance memory-bound Go cache.
- sturdyc
A caching library with advanced concurrency features designed to make I/O heavy applications robust and highly performant.
- theine
High performance, near optimal in-memory cache with proactive TTL expiration and generics.
- timedmap
Map with expiring key-value pairs.
- ttlcache
An in-memory cache with item expiration and generics.
- ttlcache
In-memory key value storage with TTL for each record.
Databases Implemented in Go
45_ENTRIES- badger
Fast key-value store in Go.
- bbolt
An embedded key/value database for Go.
- Bitcask
Bitcask is an embeddable, persistent and fast key-value (KV) database written in pure Go with predictable read/write performance, low latency and high throughput thanks to the bitcask on-disk layout (LSM+WAL).
- buntdb
Fast, embeddable, in-memory key/value database for Go with custom indexing and spatial support.
- clover
A lightweight document-oriented NoSQL database written in pure Golang.
- cockroach
Scalable, Geo-Replicated, Transactional Datastore.
- Coffer
Simple ACID key-value database that supports transactions.
- column
High-performance, columnar, embeddable in-memory store with bitmap indexing and transactions.
- CovenantSQL
CovenantSQL is a SQL database on blockchain.
- Databunker
Personally identifiable information (PII) storage service built to comply with GDPR and CCPA.
- dgraph
Scalable, Distributed, Low Latency, High Throughput Graph Database.
- DiceDB
An open-source, fast, reactive, in-memory database optimized for modern hardware. Higher throughput and lower median latencies, making it ideal for modern workloads.
- diskv
Home-grown disk-backed key-value store.
- dolt
Dolt – It's Git for Data.
- eliasdb
Dependency-free, transactional graph database with REST API, phrase search and SQL-like query language.
- godis
A Golang implemented high-performance Redis server and cluster.
- hare
A simple database management system that stores each table as a text file of line-delimited JSON.
- immudb
immudb is a lightweight, high-speed immutable database for systems and applications written in Go.
- influxdb
Scalable datastore for metrics, events, and real-time analytics.
- ledisdb
Ledisdb is a high performance NoSQL like Redis based on LevelDB.
- levigo
Levigo is a Go wrapper for LevelDB.
- libradb
LibraDB is a simple database with less than 1000 lines of code for learning.
- LinDB
LinDB is a scalable, high performance, high availability distributed time series database.
- lotusdb
Fast k/v database compatible with lsm and b+tree.
- Milvus
Milvus is a vector database for embedding management, analytics and search.
- moss
Moss is a simple LSM key-value storage engine written in 100% Go.
- NoKV
High-performance distributed KV storage based on LSM Tree.
- nutsdb
Nutsdb is a simple, fast, embeddable, persistent key/value store written in pure Go. It supports fully serializable transactions and many data structures such as list, set, sorted set.
- objectbox-go
High-performance embedded Object Database (NoSQL) with Go API.
- pebble
RocksDB/LevelDB inspired key-value database in Go.
- piladb
Lightweight RESTful database engine based on stack data structures.
- pogreb
Embedded key-value store for read-heavy workloads.
- prometheus
Monitoring system and time series database.
- pudge
Fast and simple key/value store written using Go's standard library.
- redka
Redis re-implemented with SQLite.
- rosedb
An embedded k-v database based on LSM+WAL, supports string, list, hash, set, zset.
- rotom
A tiny Redis server built with Golang, compatible with RESP protocols.
- rqlite
The lightweight, distributed, relational database built on SQLite.
- tempdb
Key-value store for temporary items.
- tidb
TiDB is a distributed SQL database. Inspired by the design of Google F1.
- tiedot
Your NoSQL database powered by Golang.
- unitdb
Fast timeseries database for IoT, realtime messaging applications. Access unitdb with pubsub over tcp or websocket using github.com/unit-io/unitd application.
- Vasto
A distributed high-performance key-value store. On Disk. Eventual consistent. HA. Able to grow or shrink without service interruption.
- VictoriaMetrics
fast, resource-effective and scalable open source time series database. May be used as long-term remote storage for Prometheus. Supports PromQL.
Database Schema Migration
22_ENTRIES- atlas
A Database Toolkit. A CLI designed to help companies better work with their data.
- avro
Discover SQL schemas and convert them to AVRO schemas. Query SQL records into AVRO bytes.
- bytebase
Safe database schema change and version control for DevOps teams.
- darwin
Database schema evolution library for Go.
- dbmate
A lightweight, framework-agnostic database migration tool.
- go-fixtures
Django style fixtures for Golang's excellent built-in database/sql library.
- go-pg-migrate
CLI-friendly package for go-pg migrations management.
- go-pg-migrations
A Go package to help write migrations with go-pg/pg.
- goavro
A Go package that encodes and decodes Avro data.
- godfish
Database migration manager, works with native query language. Support for cassandra, mysql, postgres, sqlite3.
- goose
Database migration tool. You can manage your database's evolution by creating incremental SQL or Go scripts.
- gorm-seeder
Simple database seeder for Gorm ORM.
- gormigrate
Database schema migration helper for Gorm ORM.
- libschema
Define your migrations separately in each library. Migrations for open source libraries. MySQL & PostgreSQL.
- migrate
Database migrations. CLI and Golang library.
- migrator
Dead simple Go database migration library.
- migrator
MySQL database migrator designed to run migrations to your features and manage database schema update with intuitive go code.
- schema
Library to embed schema migrations for database/sql-compatible databases inside your Go binaries.
- skeema
Pure-SQL schema management system for MySQL, with support for sharding and external online schema change tools.
- soda
Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
- sql-migrate
Database migration tool. Allows embedding migrations into the application using go-bindata.
- sqlize
Database migration generator. Allows generate sql migration from model and existing sql by differ them.
Database Tools
19_ENTRIES- chproxy
HTTP proxy for ClickHouse database.
- clickhouse-bulk
Collects small inserts and sends big requests to ClickHouse servers.
- database-gateway
Running SQL in production with ACLs, logs, and shared links.
- dbbench
Database benchmarking tool with support for several databases and scripts.
- dg
A fast data generator that produces CSV files from generated relational data.
- gatewayd
Cloud-native database gateway and framework for building data-driven applications. Like API gateways, for databases.
- go-mysql
Go toolset to handle MySQL protocol and replication.
- gorm-multitenancy
Multi-tenancy support for GORM managed databases.
- hasql
Library for accessing multi-host SQL database installations.
- octillery
Go package for sharding databases ( Supports every ORM or raw SQL ).
- onedump
Database backup from different drivers to different destinations with one command and configuration.
- pg_timetable
Advanced scheduling for PostgreSQL.
- pgweb
Web-based PostgreSQL database browser.
- prep
Use prepared SQL statements without changing your code.
- pREST
Simplify and accelerate development, ⚡ instant, realtime, high-performance on any Postgres application, existing or new.
- rdb
Redis RDB file parser for secondary development and memory analysis.
- rwdb
rwdb provides read replica capability for multiple database servers setup.
- vitess
vitess provides servers and tools which facilitate scaling of MySQL databases for large scale web services.
- wescale
WeScale is a database proxy designed to enhance the scalability, performance, security, and resilience of your applications.
SQL Query Builders
26_ENTRIESLibraries for building and using SQL.
- bqb
Lightweight and easy to learn query builder.
- buildsqlx
Go database query builder library for PostgreSQL.
- builq
Easily build SQL queries in Go.
- dbq
Zero boilerplate database operations for Go.
- Dotsql
Go library that helps you keep sql files in one place and use them with ease.
- gendry
Non-invasive SQL builder and powerful data binder.
- godbal
Database Abstraction Layer (dbal) for go. Support SQL builder and get result easily.
- goqu
Idiomatic SQL builder and query library.
- gosql
SQL Query builder with better null values support.
- Hotcoal
Secure your handcrafted SQL against injection.
- igor
Abstraction layer for PostgreSQL that supports advanced functionality and uses gorm-like syntax.
- jet
Framework for writing type-safe SQL queries in Go, with ability to easily convert database query result into desired arbitrary object structure.
- obreron
Fast and cheap SQL builder which does only one thing, SQL building.
- ormlite
Lightweight package containing some ORM-like features and helpers for sqlite databases.
- ozzo-dbx
Powerful data retrieval methods as well as DB-agnostic query building capabilities.
- patcher
Powerful SQL Query builder that automatically generates SQL queries from structs.
- qry
Tool that generates constants from files with raw SQL queries.
- sg
A SQL Gen for generating standard SQLs(supports: CRUD) written in Go.
- sq
Type-safe SQL builder and struct mapper for Go.
- sqlc
Generate type-safe code from SQL.
- sqlf
Fast SQL query builder.
- sqlingo
A lightweight DSL to build SQL in Go.
- sqrl
SQL query builder, fork of Squirrel with improved performance.
- Squalus
Thin layer over the Go SQL package that makes it easier to perform queries.
- Squirrel
Go library that helps you build SQL queries.
- xo
Generate idiomatic Go code for databases based on existing schema definitions or custom queries supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server.
Interfaces to Multiple Backends
5_ENTRIES- cayley
Graph database with support for multiple backends.
- dsc
Datastore connectivity for SQL, NoSQL, structured files.
- dynamo
A simple key-value abstraction to store algebraic and linked-data data types at AWS storage services: AWS DynamoDB and AWS S3.
- go-transaction-manager
Transaction manager with multiple adapters (sql, sqlx, gorm, mongo, ...) controls transaction boundaries.
- 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).
Relational Database Drivers
21_ENTRIES- avatica
Apache Avatica/Phoenix SQL driver for database/sql.
- bgc
Datastore Connectivity for BigQuery for go.
- firebirdsql
Firebird RDBMS SQL driver for Go.
- go-adodb
Microsoft ActiveX Object DataBase driver for go that uses database/sql.
- go-mssqldb
Microsoft MSSQL driver for Go.
- go-oci8
Oracle driver for go that uses database/sql.
- go-rqlite
A Go client for rqlite, providing easy-to-use abstractions for working with the rqlite API.
- go-sql-driver/mysql
MySQL driver for Go.
- go-sqlite3
SQLite3 driver for go that uses database/sql.
- go-sqlite3
This Go module is compatible with the database/sql driver. It allows embedding SQLite into your application, provides direct access to its C API, supports SQLite VFS, and also includes a GORM driver.
- godror
Oracle driver for Go, using the ODPI-C driver.
- KSQL
A Simple and Powerful Golang SQL Library.
- pgx
PostgreSQL driver supporting features beyond those exposed by database/sql.
- pq
Pure Go Postgres driver for database/sql.
- Sqinn-Go
SQLite with pure Go.
- sqlhooks
Attach hooks to any database/sql driver.
- sqlite
Package sqlite is a sql/database driver using a CGo-free port of the C SQLite3 library.
- surrealdb.go
SurrealDB Driver for Go.
- ydb-go-sdk
native and database/sql driver YDB (Yandex Database).
NoSQL Database Drivers
29_ENTRIES- aerospike-client-go
Aerospike client in Go language.
- arangolite
Lightweight golang driver for ArangoDB.
- asc
Datastore Connectivity for Aerospike for go.
- forestdb
Go bindings for ForestDB.
- go-couchbase
Couchbase client in Go.
- go-mongox
A Go Mongo library based on the official driver, featuring streamlined document operations, generic binding of structs to collections, built-in CRUD, aggregation, automated field updates, struct validation, hooks, and plugin-based programming.
- go-pilosa
Go client library for Pilosa.
- go-rejson
Golang client for redislabs' ReJSON module using Redigo golang client. Store and manipulate structs as JSON objects in redis with ease.
- gocb
Official Couchbase Go SDK.
- gocosmos
REST client and standard
database/sqldriver for Azure Cosmos DB. - gocql
Go language driver for Apache Cassandra.
- godis
redis client implement by golang, inspired by jedis.
- godscache
A wrapper for the Google Cloud Platform Go Datastore package that adds caching using memcached.
- gomemcache
memcache client library for the Go programming language.
- gomemcached
A binary Memcached client for Go with support for sharding using consistent hashing, along with SASL.
- gorethink
Go language driver for RethinkDB.
- goriak
Go language driver for Riak KV.
- Kivik
Kivik provides a common Go and GopherJS client library for CouchDB, PouchDB, and similar databases.
- mgm
MongoDB model-based ODM for Go (based on official MongoDB driver).
- mgo
(unmaintained) MongoDB driver for the Go language that implements a rich and well tested selection of features under a very simple API following standard Go idioms.
- mongo-go-driver
Official MongoDB driver for the Go language.
- neo4j
Neo4j Rest API Bindings for Golang.
- neoism
Neo4j client for Golang.
- qmgo
The MongoDB driver for Go. It‘s based on official MongoDB driver but easier to use like Mgo.
- redeo
Redis-protocol compatible TCP servers/services.
- redigo
Redigo is a Go client for the Redis database.
- redis
Redis client for Golang.
- rueidis
Fast Redis RESP3 client with auto pipelining and server-assisted client side caching.
- xredis
Typesafe, customizable, clean & easy to use Redis client.
Search and Analytic Databases
9_ENTRIES- clickhouse-go
ClickHouse SQL client for Go with a
database/sqlcompatibility. - effdsl
Elasticsearch query builder for Go.
- elastic
Elasticsearch client for Go.
- elasticsql
Convert sql to elasticsearch dsl in Go.
- elastigo
Elasticsearch client library.
- go-elasticsearch
Official Elasticsearch client for Go.
- goes
Library to interact with Elasticsearch.
- skizze
probabilistic data-structures service and storage.
- zoekt
Fast trigram based code search.
Date and Time
23_ENTRIESLibraries for working with dates and times.
- approx
A Duration extension supporting parsing/printing durations in days, weeks and years.
- carbon
A simple, semantic and developer-friendly time package for golang.
- carbon
Simple Time extension with a lot of util methods, ported from PHP Carbon library.
- cronrange
Parses Cron-style time range expressions, checks if the given time is within any ranges.
- date
Augments Time for working with dates, date ranges, time spans, periods, and time-of-day.
- dateparse
Parse date's without knowing format in advance.
- durafmt
Time duration formatting library for Go.
- feiertage
Set of functions to calculate public holidays in Germany, incl. specialization on the states of Germany (Bundesländer). Things like Easter, Pentecost, Thanksgiving...
- go-anytime
Parse dates/times like "next dec 22nd at 3pm" and ranges like "from today until next thursday" without knowing the format in advance.
- go-datebin
A simple datetime parse pkg.
- go-faketime
A simple
time.Now()that honors the faketime(1) utility. - go-persian-calendar
The implementation of the Persian (Solar Hijri) Calendar in Go (golang).
- go-str2duration
Convert string to duration. Support time.Duration returned string and more.
- go-sunrise
Calculate the sunrise and sunset times for a given location.
- go-week
An efficient package to work with ISO8601 week dates.
- gostradamus
A Go package for working with dates.
- iso8601
Efficiently parse ISO8601 date-times without regex.
- kair
Date and Time - Golang Formatting Library.
- now
Now is a time toolkit for golang.
- strftime
C99-compatible strftime formatter.
- timespan
For interacting with intervals of time, defined as a start time and a duration.
- timeutil
Useful extensions (Timedelta, Strftime, ...) to the golang's time package.
- tuesday
Ruby-compatible Strftime function.
Distributed Systems
65_ENTRIESPackages that help with building Distributed Systems.
- arpc
More effective network communication, support two-way-calling, notify, broadcast.
- bedrock
Provides a minimal, modular and composable foundation for quickly developing services and more use case specific frameworks in Go.
- capillaries
distributed batch data processing framework.
- celeriac
Library for adding support for interacting and monitoring Celery workers, tasks and events in Go.
- committer
A distributed transactions management system (2PC/3PC implementation).
- consistent
Consistent hashing with bounded loads.
- consistenthash
Consistent hashing with configurable replicas.
- dht
BitTorrent Kademlia DHT implementation.
- digota
grpc ecommerce microservice.
- dot
distributed sync using operational transformation/OT.
- doublejump
A revamped Google's jump consistent hash.
- dragonboat
A feature complete and high performance multi-group Raft library in Go.
- Dragonfly
Provide efficient, stable and secure file distribution and image acceleration based on p2p technology to be the best practice and standard solution in cloud native architectures.
- drmaa
Job submission library for cluster schedulers based on the DRMAA standard.
- dynamolock
DynamoDB-backed distributed locking implementation.
- dynatomic
A library for using DynamoDB as an atomic counter.
- emitter-io
High performance, distributed, secure and low latency publish-subscribe platform built with MQTT, Websockets and love.
- evans
Evans: more expressive universal gRPC client.
- failured
adaptive accrual failure detector for distributed systems.
- flowgraph
flow-based programming package.
- gleam
Fast and scalable distributed map/reduce system written in pure Go and Luajit, combining Go's high concurrency with Luajit's high performance, runs standalone or distributed.
- glow
Easy-to-Use scalable distributed big data processing, Map-Reduce, DAG execution, all in pure Go.
- gmsec
A Go distributed systems development framework.
- go-doudou
A gossip protocol and OpenAPI 3.0 spec based decentralized microservice framework. Built-in go-doudou cli focusing on low-code and rapid dev can power up your productivity.
- go-eagle
A Go framework for the API or Microservice with handy scaffolding tools.
- go-jump
Port of Google's "Jump" Consistent Hash function.
- go-kit
Microservice toolkit with support for service discovery, load balancing, pluggable transports, request tracking, etc.
- go-micro
A distributed systems development framework.
- go-mysql-lock
MySQL based distributed lock.
- go-pdu
A decentralized identity-based social network.
- go-sundheit
A library built to provide support for defining async service health checks for golang services.
- go-zero
A web and rpc framework. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.
- gorpc
Simple, fast and scalable RPC library for high load.
- grpc-go
The Go language implementation of gRPC. HTTP/2 based RPC.
- hprose
Very newbility RPC Library, support 25+ languages now.
- jsonrpc
The jsonrpc package helps implement of JSON-RPC 2.0.
- jsonrpc
JSON-RPC 2.0 HTTP client implementation.
- K8gb
A cloud native Kubernetes Global Balancer.
- Kitex
A high-performance and strong-extensibility Golang RPC framework that helps developers build microservices. If the performance and extensibility are the main concerns when you develop microservices, Kitex can be a good choice.
- Kratos
A modular-designed and easy-to-use microservices framework in Go.
- liftbridge
Lightweight, fault-tolerant message streams for NATS.
- lura
Ultra performant API Gateway framework with middlewares.
- micro
A distributed systems runtime for the cloud and beyond.
- mochi mqtt
Fully spec compliant, embeddable high-performance MQTT v5/v3 broker for IoT, smarthome, and pubsub.
- NATS
NATS is a simple, secure, and performant communications system for digital systems, services, and devices.
- opentelemetry-go-auto-instrumentation
OpenTelemetry Compile-Time Instrumentation for Golang.
- oras
CLI and library for OCI Artifacts in container registries.
- outbox
Lightweight library for the transactional outbox pattern in Go, not tied to any specific relational database or broker.
- outboxer
Outboxer is a go library that implements the outbox pattern.
- pglock
PostgreSQL-backed distributed locking implementation.
- pjrpc
Golang JSON-RPC Server-Client with Protobuf spec.
- raft
Golang implementation of the Raft consensus protocol, by HashiCorp.
- raft
Go implementation of the Raft consensus protocol, by CoreOS.
- rain
BitTorrent client and library.
- redis-lock
Simplified distributed locking implementation using Redis.
- resgate
Realtime API Gateway for building REST, real time, and RPC APIs, where all clients are synchronized seamlessly.
- ringpop-go
Scalable, fault-tolerant application-layer sharding for Go applications.
- rpcx
Distributed pluggable RPC service framework like alibaba Dubbo.
- Semaphore
A straightforward (micro) service orchestrator.
- sponge
A distributed development framework that integrates automatic code generation, gin and grpc frameworks, base development frameworks.
- Tarmac
Framework for writing functions, microservices, or monoliths with WebAssembly
- Temporal
Durable execution system for making code fault-tolerant and simple.
- torrent
BitTorrent client package.
- trpc-go
The Go language implementation of tRPC, which is a pluggable, high-performance RPC framework.
Dynamic DNS
3_ENTRIESTools for updating dynamic DNS records.
- DDNS
Personal DDNS client with Digital Ocean Networking DNS as backend.
- dyndns
Background Go process to regularly and automatically check your IP Address and make updates to (one or many) Dynamic DNS records for Google domains whenever your address changes.
- GoDNS
A dynamic DNS client tool, supports DNSPod & HE.net, written in Go.
Libraries and tools that implement email creation and sending.
- chasquid
SMTP server written in Go.
- douceur
CSS inliner for your HTML emails.
- email
A robust and flexible email library for Go.
- email-verifier
A Go library for email verification without sending any emails.
- go-dkim
DKIM library, to sign & verify email.
- go-email-normalizer
Golang library for providing a canonical representation of email address.
- go-imap
IMAP library for clients and servers.
- go-mail
A simple Go library for sending mails in Go.
- go-message
Streaming library for the Internet Message Format and mail messages.
- go-premailer
Inline styling for HTML mail in Go.
- go-simple-mail
Very simple package to send emails with SMTP Keep Alive and two timeouts: Connect and Send.
- Hectane
Lightweight SMTP client providing an HTTP API.
- hermes
Golang package that generates clean, responsive HTML e-mails.
- Maddy
All-in-one (SMTP, IMAP, DKIM, DMARC, MTA-STS, DANE) email server
- mailchain
Send encrypted emails to blockchain addresses written in Go.
- mailgun-go
Go library for sending mail with the Mailgun API.
- MailHog
Email and SMTP testing with web and API interface.
- Mailpit
Email and SMTP testing tool for developers.
- mailx
Mailx is a library that makes it easier to send email via SMTP. It is an enhancement of the golang standard library
net/smtp. - mox
Modern full-featured secure mail server for low-maintenance, self-hosted email.
- SendGrid
SendGrid's Go library for sending email.
- smtp
SMTP server protocol state machine.
- smtpmock
Lightweight configurable multithreaded fake SMTP server. Mimic any SMTP behaviour for your test environment.
- truemail-go
Configurable Golang email validator/verifier. Verify email via Regex, DNS, SMTP and even more.
Embeddable Scripting Languages
23_ENTRIESEmbedding other languages inside your go code.
- anko
Scriptable interpreter written in Go.
- binder
Go to Lua binding library, based on gopher-lua.
- cel-go
Fast, portable, non-Turing complete expression evaluation with gradual typing.
- ecal
A simple embeddable scripting language which supports concurrent event processing.
- expr
Expression evaluation engine for Go: fast, non-Turing complete, dynamic typing, static typing.
- FrankenPHP
PHP embedded in Go, with a
net/httphandler. - gentee
Embeddable scripting programming language.
- gisp
Simple LISP in Go.
- go-lua
Port of the Lua 5.2 VM to pure Go.
- go-php
PHP bindings for Go.
- goal
An embeddable scripting array language.
- goja
ECMAScript 5.1(+) implementation in Go.
- golua
Go bindings for Lua C API.
- gopher-lua
Lua 5.1 VM and compiler written in Go.
- gval
A highly customizable expression language written in Go.
- metacall
Cross-platform Polyglot Runtime which supports NodeJS, JavaScript, TypeScript, Python, Ruby, C#, WebAssembly, Java, Cobol and more.
- ngaro
Embeddable Ngaro VM implementation enabling scripting in Retro.
- prolog
Embeddable Prolog.
- purl
Perl 5.18.2 embedded in Go.
- starlark-go
Go implementation of Starlark: Python-like language with deterministic evaluation and hermetic execution.
- starlet
Go wrapper for starlark-go that simplifies script execution, offers data conversion, and useful Starlark libraries and extensions.
- tengo
Bytecode compiled script language for Go.
- Wa/凹语言
The Wa Programming Language embedded in Go.
Error Handling
18_ENTRIESLibraries for handling errors.
- emperror
Error handling tools and best practices for Go libraries and applications.
- eris
A better way to handle, trace, and log errors in Go. Compatible with the standard error library and github.com/pkg/errors.
- errlog
Hackable package that determines responsible source code for an error (and some other fast-debugging features). Pluggable to any logger in-place.
- errors
Drop-in replacement for the standard library errors package and github.com/pkg/errors. Provides various error handling primitives.
- errors
Simple golang error handling with classification primitives.
- errors
The most simple error wrapper with awesome performance and minimal memory overhead.
- errors
Providing errors with a stack trace and optional structured details. Compatible with github.com/pkg/errors API but does not use it internally.
- errors
Drop-in replacement for builtin Go errors. This is a minimal error handling package with custom error types, user friendly messages, Unwrap & Is. With very easy to use and straightforward helper functions.
- errors
Go error library with error portability over the network.
- errorx
A feature rich error package with stack traces, composition of errors and more.
- exception
A simple utility package for exception handling with try-catch in Golang.
- Falcon
A Simple Yet Highly Powerful Package For Error Handling.
- Fault
An ergonomic mechanism for wrapping errors in order to facilitate structured metadata and context for error values.
- go-multierror
Go (golang) package for representing a list of errors as a single error.
- metaerr
A library to create your custom error builders producing structured errors with metadata from different sources and optional stacktraces.
- multierr
Package for representing a list of errors as a single error.
- oops
Error handling with context, stack trace and source fragments.
- tracerr
Golang errors with stack trace and source fragments.
File Handling
26_ENTRIESLibraries for handling files and file systems.
- afero
FileSystem Abstraction System for Go.
- afs
Abstract File Storage (mem, scp, zip, tar, cloud: s3, gs) for Go.
- baraka
A library to process http file uploads easily.
- checksum
Compute message digest, like MD5, SHA256, SHA1, CRC or BLAKE2s, for large files.
- copy
Copy directory recursively.
- gdu
Disk usage analyzer with console interface.
- go-csv-tag
Load csv file using tag.
- go-decent-copy
Copy files for humans.
- go-exiftool
Go bindings for ExifTool, the well-known library used to extract as much metadata as possible (EXIF, IPTC, ...) from files (pictures, PDF, office, ...).
- go-gtfs
Load gtfs files in go.
- go-wkhtmltopdf
A package to convert an HTML template to a PDF file.
- gofs
A cross-platform real-time file synchronization tool out of the box.
- gulter
A simple HTTP middleware to automatically handle all your file upload needs
- gut/yos
Simple and reliable package for file operations like copy/move/diff/list on files, directories and symbolic links.
- higgs
A tiny cross-platform Go library to hide/unhide files and directories.
- iso9660
A package for reading and creating ISO9660 disk images
- notify
File system event notification library with simple API, similar to os/signal.
- opc
Load Open Packaging Conventions (OPC) files for Go.
- pathtype
Treat paths as their own type instead of using strings.
- pdfcpu
PDF processor.
- skywalker
Package to allow one to concurrently go through a filesystem with ease.
- todotxt
Go library for Gina Trapani's todo.txt files, supports parsing and manipulating of task lists in the todo.txt format.
- vfs
A pluggable, extensible, and opinionated set of filesystem functionality for Go across a number of filesystem types such as os, S3, and GCS.
Financial
26_ENTRIESPackages for accounting and finance.
- accounting
money and currency formatting for golang.
- ach
A reader, writer, and validator for Automated Clearing House (ACH) files.
- bbgo
A crypto trading bot framework written in Go. Including common crypto exchange API, standard indicators, back-testing and many built-in strategies.
- currency
Handles currency amounts, provides currency information and formatting.
- currency
High performant & accurate currency computation package.
- dec128
High performance 128-bit fixed-point decimal numbers.
- decimal
Arbitrary-precision fixed-point decimal numbers.
- decimal
Immutable decimal numbers with panic-free arithmetic.
- fpdecimal
Fast and precise serialization and arithmetic for small fixed-point decimals
- fpmoney
Fast and simple ISO4217 fixed-point decimal money.
- go-finance
Library of financial functions for time value of money (annuities), cash flow, interest rate conversions, bonds and depreciation calculations.
- go-finance
Module to fetch exchange rates, check VAT numbers via VIES and check IBAN bank account numbers.
- go-money
Implementation of Fowler's Money pattern.
- go-nowpayments
Library for the crypto NOWPayments API.
- gobl
Invoice and billing document framework. JSON Schema based. Automates tax calculations and validation, with tooling to convert into global formats.
- ledger
A programmable financial ledger that provides a foundation for money-moving applications.
- money
Immutable monetary amounts and exchange rates with panic-free arithmetic.
- ofxgo
Query OFX servers and/or parse the responses (with example command-line client).
- orderbook
Matching Engine for Limit Order Book in Golang.
- payme
QR code generator (ASCII & PNG) for SEPA payments.
- swift
Offline validity check of IBAN (International Bank Account Number) and retrieval of BIC (for some countries).
- techan
Technical analysis library with advanced market analysis and trading strategies.
- ticker
Terminal stock watcher and stock position tracker.
- transaction
Embedded transactional database of accounts, running in multithreaded mode.
- udecimal
High performance, high precision, zero allocation fixed-point decimal library for financial applications.
- vat
VAT number validation & EU VAT rates.
Forms
13_ENTRIESLibraries for working with forms.
- bind
Bind form data to any Go values.
- checker
Checker helps validating user input through rules defined in struct tags or directly through functions.
- conform
Keeps user input in check. Trims, sanitizes & scrubs data based on struct tags.
- form
Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.
- formam
decode form's values into a struct.
- forms
Framework-agnostic library for parsing and validating form/JSON data which supports multipart forms and files.
- gbind
Bind data to any Go value. Can use built-in and custom expression binding capabilities; supports data validation
- gorilla/csrf
CSRF protection for Go web applications & services.
- httpin
Decode an HTTP request into a custom struct, including querystring, forms, HTTP headers, etc.
- nosurf
CSRF protection middleware for Go.
- qs
Go module for encoding structs into URL query parameters.
- queryparam
Decode
url.Valuesinto usable struct values of standard or custom types. - roamer
Eliminates boilerplate code for parsing HTTP requests by binding cookies, headers, query params, path params, body to structs and more by using simple tags.
Functional
10_ENTRIESPackages to support functional programming in Go.
- fp-go
Collection of Functional Programming helpers powered by Golang 1.18+ generics.
- fpGo
Monad, Functional Programming features for Golang.
- fuego
Functional Experiment in Go.
- FuncFrog
Functional helpers library providing Map, Filter, Reduce and other stream operations on generic slices Go1.18+ with lazy evaluation and error handling mechanisms.
- go-functional
Functional programming in Go using generics
- go-underscore
Useful collection of helpfully functional Go collection utilities.
- gofp
A lodash like powerful utility library for Golang.
- mo
Monads and popular FP abstractions, based on Go 1.18+ Generics (Option, Result, Either...).
- underscore
Functional programming helpers for Go 1.18 and beyond.
- valor
Generic option and result types that optionally contain a value.
Game Development
22_ENTRIESAwesome game development libraries.
- Ark
Archetype-based Entity Component System (ECS) for Go.
- Ebitengine
dead simple 2D game engine in Go.
- ecs
Build your own Game-Engine based on the Entity Component System concept in Golang.
- engo
Engo is an open-source 2D game engine written in Go. It follows the Entity-Component-System paradigm.
- fantasyname
Fantasy names generator.
- g3n
Go 3D Game Engine.
- go-astar
Go implementation of the A* path finding algorithm.
- go-sdl2
Go bindings for the Simple DirectMedia Layer.
- go3d
Performance oriented 2D/3D math package for Go.
- gonet
Game server skeleton implemented with golang.
- goworld
Scalable game server engine, featuring space-entity framework and hot-swapping.
- grid
Generic 2D grid with ray-casting, shadow-casting and path finding.
- Leaf
Lightweight game server framework.
- nano
Lightweight, facility, high performance golang based game server framework.
- Oak
Pure Go game engine.
- Pi
Game engine for creating retro games for modern computers. Inspired by Pico-8 and powered by Ebitengine.
- Pitaya
Scalable game server framework with clustering support and client libraries for iOS, Android, Unity and others through the C SDK.
- Pixel
Hand-crafted 2D game library in Go.
- prototype
Cross-platform (Windows/Linux/Mac) library for creating desktop games using a minimal API.
- termloop
Terminal-based game engine for Go, built on top of Termbox.
- tile
Data-oriented and cache-friendly 2D Grid library (TileMap), includes pathfinding, observers and import/export.
Generators
13_ENTRIESTools that generate Go code.
- convergen
Feature rich type-to-type copy code generator.
- copygen
Generate any code based on Go types, including type-to-type converters (copy code) without reflection by default.
- generis
Code generation tool providing generics, free-form macros, conditional compilation and HTML templating.
- go-enum
Code generation for enums from code comments.
- go-enum-encoding
Code generation for enum encoding from code comments.
- go-linq
.NET LINQ-like query methods for Go.
- goderive
Derives functions from input types
- goverter
Generate converters by defining an interface.
- GoWrap
Generate decorators for Go interfaces using simple templates.
- interfaces
Command line tool for generating interface definitions.
- jennifer
Generate arbitrary Go code without templates.
- oapi-codegen
This package contains a set of utilities for generating Go boilerplate code for services based on OpenAPI 3.0 API definitions.
- typeregistry
A library to create type dynamically.
Geographic
17_ENTRIESGeographic tools and servers
- borders
Detects image borders and converts to GeoJSON for GIS operations.
- geoos
A library provides spatial data and geometric algorithms.
- geoserver
geoserver Is a Go Package For Manipulating a GeoServer Instance via the GeoServer REST API.
- gismanager
Publish Your GIS Data(Vector Data) to PostGIS and Geoserver.
- godal
Go wrapper for GDAL.
- H3
Go bindings for H3, a hierarchical hexagonal geospatial indexing system.
- H3 GeoJSON
Conversion utilities between H3 indexes and GeoJSON.
- H3GeoDist
Distribution of Uber H3geo cells by virtual nodes.
- mbtileserver
A simple Go-based server for map tiles stored in mbtiles format.
- osm
Library for reading, writing and working with OpenStreetMap data and APIs.
- pbf
OpenStreetMap PBF golang encoder/decoder.
- S2 geojson
Convert geojson to s2 cells & demonstrating some S2 geometry features on map.
- S2 geometry
S2 geometry library in Go.
- simplefeatures
simplesfeatures is a 2D geometry library that provides Go types that model geometries, as well as algorithms that operate on them.
- Tile38
Geolocation DB with spatial index and realtime geofencing.
- Web-Mercator-Projection
A project to easily use and convert LonLat, Point and Tile to display info, markers, etc, in a map using the Web Mercator Projection.
- WGS84
Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM).
Go Compilers
7_ENTRIESTools for compiling Go to other languages and vice-versa.
Goroutines
50_ENTRIESTools for managing and working with Goroutines.
- anchor
Library to manage component lifecycle in microservice architectures.
- ants
A high-performance and low-cost goroutine pool in Go.
- artifex
Simple in-memory job queue for Golang using worker-based dispatching.
- async
An asynchronous task package with async/await style for Go.
- async
An alternative sync library for Go (Future, Promise, Locks).
- async
A safe way to execute functions asynchronously, recovering them in case of panic.
- async-job
AsyncJob is an asynchronous queue job manager with light code, clear and speed.
- breaker
Flexible mechanism to make execution flow interruptible.
- channelify
Transform your function to return channels for easy and powerful parallel processing.
- conc
concis your toolbelt for structured concurrency in go, making common tasks easier and safer. - concurrency-limiter
Concurrency limiter with support for timeouts, dynamic priority and context cancellation of goroutines.
- conexec
A concurrent toolkit to help execute funcs concurrently in an efficient and safe way. It supports specifying the overall timeout to avoid blocking and uses goroutine pool to improve efficiency.
- cyclicbarrier
CyclicBarrier for golang.
- execpool
A pool built around exec.Cmd that spins up a given number of processes in advance and attaches stdin and stdout to them when needed. Very similar to FastCGI or Apache Prefork MPM but works for any command.
- flowmatic
Structured concurrency made easy.
- go-accumulator
Solution for accumulation of events and their subsequent processing.
- go-actor
A tiny library for writing concurrent programs using actor model.
- go-floc
Orchestrate goroutines with ease.
- go-flow
Control goroutines execution order.
- go-tools/multithreading
Manage a pool of goroutines using this lightweight library with a simple API.
- go-trylock
TryLock support on read-write lock for Golang.
- go-waitgroup
Like
sync.WaitGroupwith error handling and concurrency control. - go-workerpool
Inspired from Java Thread Pool, Go WorkerPool aims to control heavy Go Routines.
- goccm
Go Concurrency Manager package limits the number of goroutines that allowed to run concurrently.
- gohive
A highly performant and easy to use Goroutine pool for Go.
- gollback
asynchronous simple function utilities, for managing execution of closures and callbacks.
- gowl
Gowl is a process management and process monitoring tool at once. An infinite worker pool gives you the ability to control the pool and processes and monitor their status.
- goworker
goworker is a Go-based background worker.
- gowp
gowp is concurrency limiting goroutine pool.
- gpool
manages a resizeable pool of context-aware goroutines to bound concurrency.
- grpool
Lightweight Goroutine pool.
- hands
A process controller used to control the execution and return strategies of multiple goroutines.
- Hunch
Hunch provides functions like:
All,First,Retry,Waterfalletc., that makes asynchronous flow control more intuitive. - kyoo
Provides an unlimited job queue and concurrent worker pools.
- neilotoole/errgroup
Drop-in alternative to
sync/errgroup, limited to a pool of N worker goroutines. - nursery
Structured concurrency in Go.
- oversight
Oversight is a complete implementation of the Erlang supervision trees.
- parallel-fn
Run functions in parallel.
- pond
Minimalistic and High-performance goroutine worker pool written in Go.
- pool
Limited consumer goroutine or unlimited goroutine pool for easier goroutine handling and cancellation.
- rill
Go toolkit for clean, composable, channel-based concurrency.
- routine
routineis aThreadLocalfor go library. It encapsulates and provides some easy-to-use, non-competitive, high-performancegoroutinecontext access interfaces, which can help you access coroutine context information more gracefully. - routine
go routine control with context, support: Main, Go, Pool and some useful Executors.
- semaphore
Semaphore pattern implementation with timeout of lock/unlock operations based on channel and context.
- semaphore
Fast resizable semaphore implementation based on CAS (faster than channel-based semaphore implementations).
- stl
Software transactional locks based on Software Transactional Memory (STM) concurrency control mechanism.
- threadpool
Golang threadpool implementation.
- tunny
Goroutine pool for golang.
- worker-pool
goworker is a Go simple async worker pool.
- workerpool
Goroutine pool that limits the concurrency of task execution, not the number of tasks queued.
GUI
28_ENTRIESLibraries for building GUI Applications.
Toolkits
Interaction
- app
Package to create apps with GO, HTML and CSS. Supports: MacOS, Windows in progress.
- cimgui-go
Auto generated Go wrapper for Dear ImGui via cimgui.
- Cogent Core
A framework for building 2D and 3D apps that run on macOS, Windows, Linux, iOS, Android, and the web.
- DarwinKit
Build native macOS applications using Go.
- energy
Cross-platform based on LCL(Native System UI Control Library) and CEF(Chromium Embedded Framework) (Windows/ macOS / Linux)
- fyne
Cross platform native GUIs designed for Go based on Material Design. Supports: Linux, macOS, Windows, BSD, iOS and Android.
- gio
Gio is a library for writing cross-platform immediate mode GUI-s in Go. Gio supports all the major platforms: Linux, macOS, Windows, Android, iOS, FreeBSD, OpenBSD and WebAssembly.
- go-gtk
Go bindings for GTK.
- go-sciter
Go bindings for Sciter: the Embeddable HTML/CSS/script engine for modern desktop UI development. Cross platform.
- Goey
Cross platform UI toolkit aggregator for Windows / Linux / Mac. GTK, Cocoa, Windows API
- goradd/html5tag
Library for outputting HTML5 tags.
- gotk3
Go bindings for GTK3.
- gowd
Rapid and simple desktop UI development with GO, HTML, CSS and NW.js. Cross platform.
- qt
Qt binding for Go (support for Windows / macOS / Linux / Android / iOS / Sailfish OS / Raspberry Pi).
- Spot
Reactive, cross-platform desktop GUI toolkit.
- ui
Platform-native GUI library for Go. Cross platform.
- unison
A unified graphical user experience toolkit for Go desktop applications. macOS, Windows, and Linux are supported.
- Wails
Mac, Windows, Linux desktop apps with HTML UI using built-in OS HTML renderer.
- walk
Windows application library kit for Go.
- webview
Cross-platform webview window with simple two-way JavaScript bindings (Windows / macOS / Linux).
- AppIndicator Go
Go bindings for libappindicator3 C library.
- gosx-notifier
OSX Desktop Notifications library for Go.
- mac-activity-tracker
OSX library to notify about any (pluggable) activity on your machine.
- mac-sleep-notifier
OSX Sleep/Wake notifications in golang.
- robotgo
Go Native cross-platform GUI system automation. Control the mouse, keyboard and other.
- systray
Cross platform Go library to place an icon and menu in the notification area.
- trayhost
Cross-platform Go library to place an icon in the host operating system's taskbar.
- zenity
Cross-platform Go library and CLI to create simple dialogs that interact graphically with the user.
Hardware
8_ENTRIESLibraries, tools, and tutorials for interacting with hardware.
- arduino-cli
Official Arduino CLI and library. Can run standalone, or be incorporated into larger Go projects.
- emgo
Go-like language for programming embedded systems (e.g. STM32 MCU).
- ghw
Golang hardware discovery/inspection library.
- go-osc
Open Sound Control (OSC) bindings for Go.
- go-rpio
GPIO for Go, doesn't require cgo.
- goroslib
Robot Operating System (ROS) library for Go.
- joystick
a polled API to read the state of an attached joystick.
- sysinfo
A pure Go library providing Linux OS / kernel / hardware system information.
Images
43_ENTRIESLibraries for manipulating images.
- bild
Collection of image processing algorithms in pure Go.
- bimg
Small package for fast and efficient image processing using libvips.
- cameron
An avatar generator for Go.
- canvas
Vector graphics to PDF, SVG or rasterized image.
- color-extractor
Dominant color extractor with no external dependencies.
- darkroom
An image proxy with changeable storage backends and image processing engines with focus on speed and resiliency.
- geopattern
Create beautiful generative image patterns from a string.
- gg
2D rendering in pure Go.
- gift
Package of image processing filters.
- gltf
Efficient and robust glTF 2.0 reader, writer and validator.
- go-cairo
Go binding for the cairo graphics library.
- go-gd
Go binding for GD library.
- go-nude
Nudity detection with Go.
- go-qrcode
Generate QR codes with personalized styles, allowing adjustments to color, block size, shape, and icons.
- go-webcolors
Port of webcolors library from Python to Go.
- go-webp
Library for encode and decode webp pictures, using libwebp.
- gocv
Go package for computer vision using OpenCV 3.3+.
- goimagehash
Go Perceptual image hashing package.
- goimghdr
The imghdr module determines the type of image contained in a file for Go.
- govatar
Library and CMD tool for generating funny avatars.
- govips
A lightning fast image processing and resizing library for Go.
- gowitness
Screenshoting webpages using go and headless chrome on command line.
- gridder
A Grid based 2D Graphics library.
- image2ascii
Convert image to ASCII.
- imagick
Go binding to ImageMagick's MagickWand C API.
- imaginary
Fast and simple HTTP microservice for image resizing.
- imaging
Simple Go image processing package.
- imagor
Fast, secure image processing server and Go library, using libvips.
- img
Selection of image manipulation tools.
- ln
3D line art rendering in Go.
- mergi
Tool & Go library for image manipulation (Merge, Crop, Resize, Watermark, Animate).
- mort
Storage and image processing server written in Go.
- mpo
Decoder and conversion tool for MPO 3D Photos.
- nativewebp
Go native WebP encoder with zero external dependencies.
- picfit
An image resizing server written in Go.
- pt
Path tracing engine written in Go.
- scout
Scout is a standalone open source software solution for DIY video security.
- smartcrop
Finds good crops for arbitrary images and crop sizes.
- steganography
Pure Go Library for LSB steganography.
- stegify
Go tool for LSB steganography, capable of hiding any file within an image.
- svgo
Go Language Library for SVG generation.
- transformimgs
Transformimgs resizes and optimises images for Web using next-generation formats.
- webp-server
Simple and minimal image server capable of storing, resizing, converting and caching images.
IoT (Internet of Things)
14_ENTRIESLibraries for programming devices of the IoT.
- connectordb
Open-Source Platform for Quantified Self & IoT.
- devices
Suite of libraries for IoT devices, experimental for x/exp/io.
- ekuiper
Lightweight data stream processing engine for IoT edge.
- eywa
Project Eywa is essentially a connection manager that keeps track of connected devices.
- flogo
Project Flogo is an Open Source Framework for IoT Edge Apps & Integration.
- gatt
Gatt is a Go package for building Bluetooth Low Energy peripherals.
- gobot
Gobot is a framework for robotics, physical computing, and the Internet of Things.
- huego
An extensive Philips Hue client library for Go.
- iot
IoT is a simple framework for implementing a Google IoT Core device.
- periph
Peripherals I/O to interface with low-level board facilities.
- rulego
RuleGo is a lightweight, high-performance, embedded, orchestrable component-based rule engine for IoT edge.
- sensorbee
Lightweight stream processing engine for IoT.
- shifu
Kubernetes native IoT development framework.
- smart-home
Software package for IoT automation.
Job Scheduler
17_ENTRIESLibraries for scheduling jobs.
- cdule
Job scheduler library with database support
- cheek
A simple crontab like scheduler that aims to offer a KISS approach to job scheduling.
- clockwerk
Go package to schedule periodic jobs using a simple, fluent syntax.
- cronticker
A ticker implementation to support cron schedules.
- go-cron
Simple Cron library for go that can execute closures or functions at varying intervals, from once a second to once a year on a specific date and time. Primarily for web applications and long running daemons.
- go-job
A flexible and extensible job scheduling and execution library for Go.
- go-quartz
Simple, zero-dependency scheduling library for Go.
- go-scheduler
Job scheduler supporting standard cron expressions, custom descriptors, intervals, and task dependencies.
- gocron
Easy and fluent Go job scheduling. This is an actively maintained fork of jasonlvhit/gocron.
- goflow
A simple but powerful DAG scheduler and dashboard.
- gron
Define time-based tasks using a simple Go API and Gron’s scheduler will run them accordingly.
- gronx
Cron expression parser, task runner and daemon consuming crontab like task list.
- JobRunner
Smart and featureful cron job scheduler with job queuing and live monitoring built in.
- leprechaun
Job scheduler that supports webhooks, crons and classic scheduling.
- sched
A job scheduler with the ability to fast-forward time.
- scheduler
Cronjobs scheduling made easy.
- tasks
An easy to use in-process scheduler for recurring tasks in Go.
JSON
40_ENTRIESLibraries for working with JSON.
- ajson
Abstract JSON for golang with JSONPath support.
- ask
Easy access to nested values in maps and slices. Works in combination with encoding/json and other packages that "Unmarshal" arbitrary data into Go data-types.
- dynjson
Client-customizable JSON formats for dynamic APIs.
- ej
Write and read JSON from different sources succinctly.
- epoch
Contains primitives for marshaling/unmarshalling Unix timestamp/epoch to/from build-in time.Time type in JSON.
- fastjson
Fast JSON parser and validator for Go. No custom structs, no code generation, no reflection.
- gabs
For parsing, creating and editing unknown or dynamic JSON in Go.
- gjo
Small utility to create JSON objects.
- GJSON
Get a JSON value with one line of code.
- go-jsonerror
Go-JsonError is meant to allow us to easily create json response errors that follow the JsonApi spec.
- go-respond
Go package for handling common HTTP JSON responses.
- gojmapr
Get simple struct from complex json by json path.
- gojq
JSON query in Golang.
- gojson
Automatically generate Go (golang) struct definitions from example JSON.
- htmljson
Rich rendering of JSON as HTML in Go.
- JayDiff
JSON diff utility written in Go.
- jettison
Fast and flexible JSON encoder for Go.
- jscan
High performance zero-allocation JSON iterator.
- JSON-to-Go
Convert JSON to Go struct.
- JSON-to-Proto
Convert JSON to Protobuf online.
- json2go
Advanced JSON to Go struct conversion. Provides package that can parse multiple JSON documents and create struct to fit them all.
- jsonapi-errors
Go bindings based on the JSON API errors reference.
- jsoncolor
Drop-in replacement for
encoding/jsonthat outputs colorized JSON. - jsondiff
JSON diff library for Go based on RFC6902 (JSON Patch).
- jsonf
Console tool for highlighted formatting and struct query fetching JSON.
- jsongo
Fluent API to make it easier to create Json objects.
- jsonhal
Simple Go package to make custom structs marshal into HAL compatible JSON responses.
- jsonhandlers
JSON library to expose simple handlers that lets you easily read and write json from various sources.
- jsonic
Utilities to handle and query JSON without defining structs in a type safe manner.
- jsonvalue
A fast and convenient library for unstructured JSON data, replacing
encoding/json. - jzon
JSON library with standard compatible API/behavior.
- kazaam
API for arbitrary transformation of JSON documents.
- mapslice-json
Go MapSlice for ordered marshal/ unmarshal of maps in JSON.
- marshmallow
Performant JSON unmarshalling for flexible use cases.
- mp
Simple cli email parser. It currently takes stdin and outputs JSON.
- OjG
Optimized JSON for Go is a high performance parser with a variety of additional JSON tools including JSONPath.
- omg.jsonparser
Simple JSON parser with validation by condition via golang struct fields tags.
- SJSON
Set a JSON value with one line of code.
- ujson
Fast and minimal JSON parser and transformer that works on unstructured JSON.
- vjson
Go package for validating JSON objects with declaring a JSON schema with fluent API.
Logging
62_ENTRIESLibraries for generating and working with log files.
- distillog
distilled levelled logging (think of it as stdlib + log levels).
- glg
glg is simple and fast leveled logging library for Go.
- glo
PHP Monolog inspired logging facility with identical severity levels.
- glog
Leveled execution logs for Go.
- go-cronowriter
Simple writer that rotate log files automatically based on current date and time, like cronolog.
- go-log
A logging library with stack traces, object dumping and optional timestamps.
- go-log
Simple and configurable Logging in Go, with level, formatters and writers.
- go-log
Log lib supports level and multi handlers.
- go-log
Log4j implementation in Go.
- go-logger
Simple logger of Go Programs, with level handlers.
- gone/log
Fast, extendable, full-featured, std-lib source compatible log library.
- httpretty
Pretty-prints your regular HTTP requests on your terminal for debugging (similar to http.DumpRequest).
- journald
Go implementation of systemd Journal's native API for logging.
- lazyjournal
A TUI for reading and filtering logs from journalctl, file system, Docker and Podman containers, as well Kubernetes pods.
- log
An O(1) logging system that allows you to connect one log to multiple writers (e.g. stdout, a file and a TCP connection).
- log
Structured logging package for Go.
- log
Simple, configurable and scalable Structured Logging for Go.
- log
Structured log interface for Go cleanly separates logging facade from its implementation.
- log
Simple leveled logging wrapper around standard log package.
- log
A simple logging framework out of the box.
- log15
Simple, powerful logging for Go.
- logdump
Package for multi-level logging.
- logex
Golang log lib, supports tracking and level, wrap by standard log lib.
- logger
Minimalistic logging library for Go.
- logo
Golang logger to different configurable writers.
- logrus
Structured logger for Go.
- logrusiowriter
io.Writerimplementation using logrus logger. - logutils
Utilities for slightly better logging in Go (Golang) extending the standard logger.
- logxi
12-factor app logger that is fast and makes you happy.
- lumberjack
Simple rolling logger, implements io.WriteCloser.
- mlog
Simple logging module for go, with 5 levels, an optional rotating logfile feature and stdout/stderr output.
- noodlog
Parametrized JSON logging library which lets you obfuscate sensitive data and marshal any kind of content. No more printed pointers instead of values, nor escape chars for the JSON strings.
- onelog
Onelog is a dead simple but very efficient JSON logger. It is the fastest JSON logger out there in all scenarios. Also, it is one of the logger with the lowest allocation.
- ozzo-log
High performance logging supporting log severity, categorization, and filtering. Can send filtered log messages to various targets (e.g. console, network, mail).
- phuslu/log
High performance structured logging.
- pp
Colored pretty printer for Go language.
- rollingwriter
RollingWriter is an auto-rotate
io.Writerimplementation with multi policies to provide log file rotation. - seelog
Logging functionality with flexible dispatching, filtering, and formatting.
- sentry-go
Sentry SDK for Go. Helps monitor and track errors with real-time alerts and performance monitoring.
- slf4g
Simple Logging Facade for Golang: Simple structured logging; but powerful, extendable and customizable, with huge amount of learnings from decades of past logging frameworks.
- slog
Lightweight, configurable, extensible logger for Go.
- slog-formatter
Common formatters for slog and helpers to build your own.
- slog-multi
Chain of slog.Handler (pipeline, fanout...).
- slogor
A colorful slog handler.
- spew
Implements a deep pretty printer for Go data structures to aid in debugging.
- sqldb-logger
A logger for Go SQL database driver without modify existing *sql.DB stdlib usage.
- stdlog
Stdlog is an object-oriented library providing leveled logging. It is very useful for cron jobs.
- structy/log
A simple to use log system, minimalist but with features for debugging and differentiation of messages.
- tail
Go package striving to emulate the features of the BSD tail program.
- timberjack
Rolling logger with size-based, time-based, and scheduled clock-based rotation, supporting compression and cleanup.
- tint
A slog.Handler that writes tinted logs.
- xlog
Plugin architecture and flexible log system for Go, with level ctrl, multiple log target and custom log format.
- xlog
Structured logger for
net/contextaware HTTP handlers with flexible dispatching. - xylog
Leveled and structured logging, dynamic fields, high performance, zone management, simple configuration, and readable syntax.
- yell
Yet another minimalistic logging library.
- zap
Fast, structured, leveled logging in Go.
- zax
Integrate Context with Zap logger, which leads to more flexibility in Go logging.
- zerolog
Zero-allocation JSON logger.
- zkits-logger
A powerful zero-dependency JSON logger.
- zl
High Developer Experience, zap based logger. It offers rich functionality but is easy to configure.
Machine Learning
38_ENTRIESLibraries for Machine Learning.
- bayesian
Naive Bayesian Classification for Golang.
- catboost-cgo
Fast, scalable, high performance Gradient Boosting on Decision Trees library. Golang using Cgo for blazing fast inference CatBoost Model.
- CloudForest
Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
- ddt
Dynamic decision tree, create trees defining customizable rules.
- eaopt
An evolutionary optimization library.
- evoli
Genetic Algorithm and Particle Swarm Optimization library.
- fonet
A Deep Neural Network library written in Go.
- go-cluster
Go implementation of the k-modes and k-prototypes clustering algorithms.
- go-deep
A feature-rich neural network library in Go.
- go-fann
Go bindings for Fast Artificial Neural Networks(FANN) library.
- go-galib
Genetic Algorithms library written in Go / golang.
- go-pr
Pattern recognition package in Go lang.
- gobrain
Neural Networks written in go.
- godist
Various probability distributions, and associated methods.
- goga
Genetic algorithm library for Go.
- GoLearn
General Machine Learning library for Go.
- GoMind
A simplistic Neural Network Library in Go.
- goml
On-line Machine Learning in Go.
- GoMLX
An accelerated Machine Learning framework for Go.
- gonet
Neural Network for Go.
- Goptuna
Bayesian optimization framework for black-box functions written in Go. Everything will be optimized.
- goRecommend
Recommendation Algorithms library written in Go.
- gorgonia
graph-based computational library like Theano for Go that provides primitives for building various machine learning and neural network algorithms.
- gorse
An offline recommender system backend based on collaborative filtering written in Go.
- goscore
Go Scoring API for PMML.
- gosseract
Go package for OCR (Optical Character Recognition), by using Tesseract C++ library.
- hugot
Huggingface transformer pipelines for golang with onnxruntime.
- libsvm
libsvm golang version derived work based on LIBSVM 3.14.
- m2cgen
A CLI tool to transpile trained classic ML models into a native Go code with zero dependencies, written in Python with Go language support.
- neural-go
Multilayer perceptron network implemented in Go, with training via backpropagation.
- ocrserver
A simple OCR API server, seriously easy to be deployed by Docker and Heroku.
- onnx-go
Go Interface to Open Neural Network Exchange (ONNX).
- probab
Probability distribution functions. Bayesian inference. Written in pure Go.
- randomforest
Easy to use Random Forest library for Go.
- regommend
Recommendation & collaborative filtering engine.
- shield
Bayesian text classifier with flexible tokenizers and storage backends for Go.
- tfgo
Easy to use Tensorflow bindings: simplifies the usage of the official Tensorflow Go bindings. Define computational graphs in Go, load and execute models trained in Python.
- Varis
Golang Neural Network.
Messaging
58_ENTRIESLibraries that implement messaging systems.
- ami
Go client to reliable queues based on Redis Cluster Streams.
- amqp
Go RabbitMQ Client Library.
- APNs2
HTTP/2 Apple Push Notification provider for Go - Send push notifications to iOS, tvOS, Safari and OSX apps.
- Asynq
A simple, reliable, and efficient distributed task queue for Go built on top of Redis.
- backlite
Type-safe, persistent, embedded task queues and background job runner w/ SQLite.
- Beaver
A real time messaging server to build a scalable in-app notifications, multiplayer games, chat apps in web and mobile apps.
- Bus
Minimalist message bus implementation for internal communication.
- Centrifugo
Real-time messaging (Websockets or SockJS) server in Go.
- Chanify
A push notification server send message to your iOS devices.
- Commander
A high-level event driven consumer/producer supporting various "dialects" such as Apache Kafka.
- Confluent Kafka Golang Client
confluent-kafka-go is Confluent's Golang client for Apache Kafka and the Confluent Platform.
- dbus
Native Go bindings for D-Bus.
- drone-line
Sending Line notifications using a binary, docker or Drone CI.
- emitter
Emits events using Go way, with wildcard, predicates, cancellation possibilities and many other good wins.
- event
Implementation of the pattern observer.
- EventBus
The lightweight event bus with async compatibility.
- gaurun-client
Gaurun Client written in Go.
- Glue
Robust Go and Javascript Socket Library (Alternative to Socket.io).
- go-eventbus
Simple Event Bus package for Go.
- Go-MediatR
A library for handling mediator patterns and simplified CQRS patterns within an event-driven architecture, inspired by csharp MediatR library.
- go-mq
RabbitMQ client with declarative configuration.
- go-notify
Native implementation of the freedesktop notification spec.
- go-nsq
the official Go package for NSQ.
- go-res
Package for building REST/real-time services where clients are synchronized seamlessly, using NATS and Resgate.
- go-vitotrol
Client library to Viessmann Vitotrol web service.
- GoEventBus
A blazing‑fast, in‑memory, lock‑free event bus library
- Gollum
A n:m multiplexer that gathers messages from different sources and broadcasts them to a set of destinations.
- golongpoll
HTTP longpoll server library that makes web pub-sub simple.
- gopush-cluster
gopush-cluster is a go push server cluster.
- gosd
A library for scheduling when to dispatch a message to a channel.
- guble
Messaging server using push notifications (Google Firebase Cloud Messaging, Apple Push Notification services, SMS) as well as websockets, a REST API, featuring distributed operation and message-persistence.
- hare
A user friendly library for sending messages and listening to TCP sockets.
- hub
A Message/Event Hub for Go applications, using publish/subscribe pattern with support for alias like rabbitMQ exchanges.
- hypermatch
A very fast and efficient Go library for matching events to a large set of rules
- jazz
A simple RabbitMQ abstraction layer for queue administration and publishing and consuming of messages.
- machinery
Asynchronous task queue/job queue based on distributed message passing.
- mangos
Pure go implementation of the Nanomsg ("Scalability Protocols") with transport interoperability.
- melody
Minimalist framework for dealing with websocket sessions, includes broadcasting and automatic ping/pong handling.
- Mercure
Server and library to dispatch server-sent updates using the Mercure protocol (built on top of Server-Sent Events).
- messagebus
messagebus is a Go simple async message bus, perfect for using as event bus when doing event sourcing, CQRS, DDD.
- NATS Go Client
Go client for the NATS messaging system.
- nsq-event-bus
A tiny wrapper around NSQ topic and channel.
- oplog
Generic oplog/replication system for REST APIs.
- pubsub
Simple pubsub package for go.
- Quamina
Fast pattern-matching for filtering messages and events.
- rabbitroutine
Lightweight library that handles RabbitMQ auto-reconnect and publishing retries. The library takes into account the need to re-declare entities in RabbitMQ after reconnection.
- rabbus
A tiny wrapper over amqp exchanges and queues.
- rabtap
RabbitMQ swiss army knife cli app.
- RapidMQ
RapidMQ is a lightweight and reliable library for managing of the local messages queue.
- Ratus
Ratus is a RESTful asynchronous task queue server.
- redisqueue
redisqueue provides a producer and consumer of a queue that uses Redis streams.
- rmqconn
RabbitMQ Reconnection. Wrapper over amqp.Connection and amqp.Dial. Allowing to do a reconnection when the connection is broken before forcing the call to the Close () method to be closed.
- sarama
Go library for Apache Kafka.
- Uniqush-Push
Redis backed unified push service for server-side notifications to mobile devices.
- varmq
A storage-agnostic message queue and worker pool for concurrent Go programs.
- Watermill
Working efficiently with message streams. Building event driven applications, enabling event sourcing, RPC over messages, sagas. Can use conventional pub/sub implementations like Kafka or RabbitMQ, but also HTTP or MySQL binlog.
Microsoft Office
1_ENTRIES- unioffice
Pure go library for creating and processing Office Word (.docx), Excel (.xlsx) and Powerpoint (.pptx) documents.
Microsoft Excel
6_ENTRIESLibraries for working with Microsoft Excel.
- cellwalker
Virtually traverse Excel cell by cell's name.
- excelize
Golang library for reading and writing Microsoft Excel™ (XLSX) files.
- exl
Excel binding to struct written in Go.(Only supports Go1.18+)
- go-excel
A simple and light reader to read a relate-db-like excel as a table.
- xlsx
Library to simplify reading the XML format used by recent version of Microsoft Excel in Go programs.
- xlsx
Fast and safe way to read/update your existing Microsoft Excel files in Go programs.
Microsoft Word
1_ENTRIESLibraries for working with Microsoft Word.
- godocx
Library for reading and writing Microsoft Word (Docx) files.
Dependency Injection
25_ENTRIESLibraries for working with dependency injection.
- alice
Additive dependency injection container for Golang.
- autowire
Dependency injection using Generics and reflection.
- boot-go
Component-based development with dependency injection using reflections for Go developers.
- componego
A dependency injection framework based on components, allowing dynamic dependency replacement without duplicating code in tests.
- cosban/di
A code generation based dependency injection wiring tool.
- di
A dependency injection container for go programming language.
- dig
A reflection based dependency injection toolkit for Go.
- dingo
A dependency injection toolkit for Go, based on Guice.
- do
A dependency injection framework based on Generics.
- fx
A dependency injection based application framework for Go (built on top of dig).
- Go-Spring
A high-performance Go framework inspired by Spring Boot, offering DI, auto-configuration, and lifecycle management while maintaining Go's simplicity and efficiency.
- gocontainer
Simple Dependency Injection Container.
- godi
Microsoft-style dependency injection for Go with scoped lifetimes and generics.
- goioc/di
Spring-inspired Dependency Injection Container.
- GoLobby/Container
GoLobby Container is a lightweight yet powerful IoC dependency injection container for the Go programming language.
- gontainer
A dependency injection service container for Go projects.
- gontainer/gontainer
A YAML-based Dependency Injection container for GO. It supports dependencies' scopes, and auto-detection of circular dependencies. Gontainer is concurrent-safe.
- HnH/di
DI container library that is focused on clean API and flexibility.
- kinit
Customizable dependency injection container with the global mode, cascade initialization and panic-safe finalization.
- kod
A generics based dependency injection framework for Go.
- linker
A reflection based dependency injection and inversion of control library with components lifecycle support.
- nject
A type safe, reflective framework for libraries, tests, http endpoints, and service startup.
- ore
Lightweight, generic & simple dependency injection (DI) container.
- parsley
A flexible and modular reflection-based DI library with advanced features like scoped contexts and proxy generation, designed for large-scale Go applications.
- wire
Strict Runtime Dependency Injection for Golang.
Project Layout
19_ENTRIESUnofficial set of patterns for structuring projects.
- ardanlabs/service
A starter kit for building production grade scalable web service applications.
- cookiecutter-golang
A Go application boilerplate template for quick starting projects following production best practices.
- go-blueprint
Allows users to spin up a quick Go project using a popular framework.
- go-module
Template for a typical module written on Go.
- go-sample
A sample layout for Go application projects with the real code.
- go-starter
An opinionated production-ready RESTful JSON backend template, highly integrated with VSCode DevContainers.
- go-todo-backend
Go Todo Backend example using modular project layout for product microservice.
- goapp
An opinionated guideline to structure & develop a Go web application/service.
- gobase
A simple skeleton for golang application with basic setup for real golang application.
- golang-standards/project-layout
Set of common historical and emerging project layout patterns in the Go ecosystem. Note: despite the org-name they do not represent official golang standards, see this issue for more information. Nonetheless, some may find the layout useful.
- golang-templates/seed
Go application GitHub repository template.
- goxygen
Generate a modern Web project with Go and Angular, React, or Vue in seconds.
- insidieux/inizio
Golang project layout generator with plugins.
- kickstart.go
Minimalistic single-file Go HTTP server template without third-party dependencies.
- modern-go-application
Go application boilerplate and example applying modern practices.
- nunu
Nunu is a scaffolding tool for building Go applications.
- pagoda
Rapid, easy full-stack web development starter kit built in Go.
- scaffold
Scaffold generates a starter Go project layout. Lets you focus on business logic implemented.
- wangyoucao577/go-project-layout
Set of practices and discussions on how to structure Go project layout.
Strings
8_ENTRIESLibraries for working with strings.
- bexp
Go implementation of Brace Expansion mechanism to generate arbitrary strings.
- caps
A case conversion library.
- go-formatter
Implements replacement fields surrounded by curly braces
{}format strings. - gobeam/Stringy
String manipulation library to convert string to camel case, snake case, kebab case / slugify etc.
- strcase
Case-insensitive implementation of the standard library's strings/bytes packages.
- strutil
String utilities.
- sttr
cross-platform, cli app to perform various operations on string.
- xstrings
Collection of useful string functions ported from other languages.
Uncategorized
59_ENTRIESThese libraries were placed here because none of the other categories seemed to fit.
- anagent
Minimalistic, pluggable Golang evloop/timer handler with dependency-injection.
- antch
A fast, powerful and extensible web crawling & scraping framework.
- archives
a cross-platform, multi-format Go library for working with archives and compression formats with a unified API and as virtual file systems compatible with io/fs.
- autoflags
Go package to automatically define command line flags from struct fields.
- avgRating
Calculate average score and rating based on Wilson Score Equation.
- banner
Add beautiful banners into your Go applications.
- base64Captcha
Base64captch supports digit, number, alphabet, arithmetic, audio and digit-alphabet captcha.
- basexx
Convert to, from, and between digit strings in various number bases.
- battery
Cross-platform, normalized battery information library.
- bitio
Highly optimized bit-level Reader and Writer for Go.
- browscap_go
GoLang Library for Browser Capabilities Project.
- captcha
Package captcha provides an easy to use, unopinionated API for captcha generation.
- common
A library for server framework.
- conv
Package conv provides fast and intuitive conversions across Go types.
- datacounter
Go counters for readers/writer/http.ResponseWriter.
- fake-useragent
Up-to-date simple useragent faker with real world database in Golang
- faker
Random fake data and struct generator for Go.
- ffmt
Beautify data display for Humans.
- gatus
Automated service health dashboard.
- go-commandbus
A slight and pluggable command-bus for Go.
- go-commons-pool
Generic object pool for Golang.
- go-openapi
Collection of packages to parse and utilize open-api schemas.
- go-resiliency
Resiliency patterns for golang.
- go-unarr
Decompression library for RAR, TAR, ZIP and 7z archives.
- gofakeit
Random data generator written in go.
- gommit
Analyze git commit messages to ensure they follow defined patterns.
- gopsutil
Cross-platform library for retrieving process and system utilization(CPU, Memory, Disks, etc).
- gosh
Provide Go Statistics Handler, Struct, Measure Method.
- gosms
Your own local SMS gateway in Go that can be used to send SMS.
- gotoprom
Type-safe metrics builder wrapper library for the official Prometheus client.
- gountries
Package that exposes country and subdivision data.
- gtree
Provide CLI, Package and Web for tree output and directories creation from Markdown or programmatically.
- health
A simple and flexible health check library for Go.
- health
Easy to use, extensible health check library.
- healthcheck
An opinionated and concurrent health-check HTTP handler for RESTful services.
- hostutils
A golang library for packing and unpacking FQDNs list.
- indigo
Distributed unique ID generator of using Sonyflake and encoded by Base58.
- lk
A simple licensing library for golang.
- llvm
Library for interacting with LLVM IR in pure Go.
- metrics
Library for metrics instrumentation and Prometheus exposition.
- morse
Library to convert to and from morse code.
- numa
NUMA is a utility library, which is written in go. It help us to write some NUMA-AWARED code.
- pdfgen
HTTP service to generate PDF from Json requests.
- persian
Some utilities for Persian language in go.
- purego
A library for calling C functions from Go without Cgo.
- sandid
Every grain of sand on earth has its own ID.
- shellwords
A Golang library to manipulate strings according to the word parsing rules of the UNIX Bourne shell.
- shortid
Distributed generation of super short, unique, non-sequential, URL friendly IDs.
- shoutrrr
Notification library providing easy access to various messaging services like slack, mattermost, gotify and smtp among others.
- sitemap-format
A simple sitemap generator, with a little syntactic sugar.
- stateless
A fluent library for creating state machines.
- stats
Monitors Go MemStats + System stats such as Memory, Swap and CPU and sends via UDP anywhere you want for logging etc...
- turtle
Emojis for Go.
- url-shortener
A modern, powerful, and robust URL shortener microservice with mysql support.
- VarHandler
Generate boilerplate http input and output handling.
- varint
A faster varying length integer encoder/decoder than the one provided in the standard library.
- xdg
FreeDesktop.org (xdg) Specs implemented in Go.
- xkg
X Keyboard Grabber.
- xz
Pure golang package for reading and writing xz-compressed files. ⬆ back to top
Language Detection
5_ENTRIES- detectlanguage
Language Detection API Go Client. Supports batch requests, short phrase or single word language detection.
- getlang
Fast natural language detection package.
- guesslanguage
Functions to determine the natural language of a unicode text.
- lingua-go
An accurate natural language detection library, suitable for long and short text alike. Supports detecting multiple languages in mixed-language text.
- whatlanggo
Natural language detection package for Go. Supports 84 languages and 24 scripts (writing systems e.g. Latin, Cyrillic, etc).
Morphological Analyzers
16_ENTRIES- go-stem
Implementation of the porter stemming algorithm.
- go2vec
Reader and utility functions for word2vec embeddings.
- golibstemmer
Go bindings for the snowball libstemmer library including porter 2.
- gosentiwordnet
Sentiment analyzer using sentiwordnet lexicon in Go.
- govader
Go implementation of VADER Sentiment Analysis.
- govader-backend
Microservice implementation of GoVader.
- kagome
JP morphological analyzer written in pure Go.
- libtextcat
Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2.
- nlp
Go Natural Language Processing library supporting LSA (Latent Semantic Analysis).
- paicehusk
Golang implementation of the Paice/Husk Stemming Algorithm.
- porter
This is a fairly straightforward port of Martin Porter's C implementation of the Porter stemming algorithm.
- porter2
Really fast Porter 2 stemmer.
- RAKE.go
Go port of the Rapid Automatic Keyword Extraction Algorithm (RAKE).
- snowball
Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native.
- spaGO
Self-contained Machine Learning and Natural Language Processing library in Go.
- spelling-corrector
A spelling corrector for the Spanish language or create your own.
Slugifiers
3_ENTRIES- go-slugify
Make pretty slug with multiple languages support.
- slug
URL-friendly slugify with multiple languages support.
- Slugify
Go slugify application that handles string.
Tokenizers
9_ENTRIES- gotokenizer
A tokenizer based on the dictionary and Bigram language models for Golang. (Now only support chinese segmentation)
- gse
Go efficient text segmentation; support english, chinese, japanese and other.
- segment
Go library for performing Unicode Text Segmentation as described in Unicode Standard Annex #29
- sentences
Sentence tokenizer: converts text into a list of sentences.
- shamoji
The shamoji is word filtering package written in Go.
- stemmer
Stemmer packages for Go programming language. Includes English and German stemmers.
- textcat
Go package for n-gram based text categorization, with support for utf-8 and raw text.
Translation
9_ENTRIES- ctxi18n
Context aware i18n with a short and consise API, pluralization, interpolation, and
fs.FSsupport. YAML locale definitions are based on Rails i18n. - go-i18n
Package and an accompanying tool to work with localized text.
- go-mystem
CGo bindings to Yandex.Mystem - russian morphology analyzer.
- go-pinyin
CN Hanzi to Hanyu Pinyin converter.
- go-words
A words table and text resource library for Golang projects.
- gotext
GNU gettext utilities for Go.
- iuliia-go
Transliterate Cyrillic → Latin in every possible way.
- spreak
Flexible translation and humanization library for Go, based on the concepts behind gettext.
Transliteration
4_ENTRIES- go-unidecode
ASCII transliterations of Unicode text.
- gounidecode
Unicode transliterator (also known as unidecode) for Go.
- transliterator
Provides one-way string transliteration with supporting of language-specific transliteration rules.
Networking
78_ENTRIESLibraries for working with various layers of the network.
- arp
Package arp implements the ARP protocol, as described in RFC 826.
- bart
Package bart provides a Balanced-Routing-Table (BART) for very fast IP to CIDR lookups and more.
- buffstreams
Streaming protocolbuffer data over TCP made easy.
- canopus
CoAP Client/Server implementation (RFC 7252).
- cidranger
Fast IP to CIDR lookup for Go.
- cloudflared
Cloudflare Tunnel client (formerly Argo Tunnel).
- dhcp6
Package dhcp6 implements a DHCPv6 server, as described in RFC 3315.
- dns
Go library for working with DNS.
- dnsmonster
Passive DNS Capture/Monitoring Framework.
- easytcp
A light-weight TCP framework written in Go (Golang), built with message router. EasyTCP helps you build a TCP server easily fast and less painful.
- ether
Cross-platform Go package for sending and receiving ethernet frames.
- ethernet
Package ethernet implements marshaling and unmarshalling of IEEE 802.3 Ethernet II frames and IEEE 802.1Q VLAN tags.
- event
Simple I/O event notification library written in Golang.
- fasthttp
Package fasthttp is a fast HTTP implementation for Go, up to 10 times faster than net/http.
- fortio
Load testing library and command line tool, advanced echo server and web UI. Allows to specify a set query-per-second load and record latency histograms and other useful stats and graph them. Tcp, Http, gRPC.
- ftpserverlib
Fully featured FTP server library.
- fullproxy
A fully featured scriptable and daemon configurable proxy and pivoting toolkit with SOCKS5, HTTP, raw ports and reverse proxy protocols.
- fwdctl
A simple and intuitive CLI to manage IPTables forwards in your Linux server.
- gaio
High performance async-io networking for Golang in proactor mode.
- gev
gev is a lightweight, fast non-blocking TCP network library based on Reactor mode.
- gldap
gldap provides an ldap server implementation and you provide handlers for its ldap operations.
- gmqtt
Gmqtt is a flexible, high-performance MQTT broker library that fully implements the MQTT protocol V3.1.1.
- gnet
gnetis a high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go. - gnet
gnetis a high-performance networking framework,especially for game servers. - gNxI
A collection of tools for Network Management that use the gNMI and gNOI protocols.
- go-getter
Go library for downloading files or directories from various sources using a URL.
- go-multiproxy
Library for making HTTP requests through a pool of proxies offering fault tolerance, load balancing, automatic retries, cookie management, and more, via http.Get/Post replacement or http.Client RoundTripper drop-in
- go-pcaplite
Lightweight live packet capture library with HTTPS SNI extraction.
- go-powerdns
PowerDNS API bindings for Golang.
- go-sse
Go client and server implementation of HTML server-sent events.
- go-stun
Go implementation of the STUN client (RFC 3489 and RFC 5389).
- gobgp
BGP implemented in the Go Programming Language.
- gopacket
Go library for packet processing with libpcap bindings.
- gopcap
Go wrapper for libpcap.
- GoProxy
A library to create a customized HTTP/HTTPS proxy server using Go.
- goshark
Package goshark use tshark to decode IP packet and create data struct to analyse packet.
- gosnmp
Native Go library for performing SNMP actions.
- gotcp
Go package for quickly writing tcp applications.
- grab
Go package for managing file downloads.
- graval
Experimental FTP server framework.
- gws
High-Performance WebSocket Server & Client With AsyncIO Supporting
- HTTPLab
HTTPLabs let you inspect HTTP requests and forge responses.
- httpproxy
HTTP proxy handler and dialer.
- jazigo
Jazigo is a tool written in Go for retrieving configuration for multiple network devices.
- kcp-go
KCP - Fast and Reliable ARQ Protocol.
- kcptun
Extremely simple & fast udp tunnel based on KCP protocol.
- lhttp
Powerful websocket framework, build your IM server more easily.
- linkio
Network link speed simulation for Reader/Writer interfaces.
- llb
It's a very simple but quick backend for proxy servers. Can be useful for fast redirection to predefined domain with zero memory allocation and fast response.
- mdns
Simple mDNS (Multicast DNS) client/server library in Golang.
- mqttPaho
The Paho Go Client provides an MQTT client library for connection to MQTT brokers via TCP, TLS or WebSockets.
- natiu-mqtt
A dead-simple, non-allocating, low level implementation of MQTT well suited for embedded systems.
- nbio
Pure Go 1000k+ connections solution, support tls/http1.x/websocket and basically compatible with net/http, with high-performance and low memory cost, non-blocking, event-driven, easy-to-use.
- net
This repository holds supplementary Go networking libraries.
- netpoll
A high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance.
- NFF-Go
Framework for rapid development of performant network functions for cloud and bare-metal (former YANFF).
- nodepass
A secure, efficient TCP/UDP tunneling solution that delivers fast, reliable access across network restrictions using pre-established TCP/QUIC/WebSocket or HTTP/2 connections.
- peerdiscovery
Pure Go library for cross-platform local peer discovery using UDP multicast.
- portproxy
Simple TCP proxy which adds CORS support to API's which don't support it.
- psql-wire
PostgreSQL server wire protocol. Build your own server and start serving connections..
- publicip
Package publicip returns your public facing IPv4 address (internet egress).
- quic-go
An implementation of the QUIC protocol in pure Go.
- sdns
A high-performance, recursive DNS resolver server with DNSSEC support, focused on preserving privacy.
- sftp
Package sftp implements the SSH File Transfer Protocol as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt.
- ssh
Higher-level API for building SSH servers (wraps crypto/ssh).
- sslb
It's a Super Simples Load Balancer, just a little project to achieve some kind of performance.
- stun
Go implementation of RFC 5389 STUN protocol.
- tcpack
tcpack is an application protocol based on TCP to Pack and Unpack bytes stream in go program.
- tspool
A TCP Library use worker pool to improve performance and protect your server.
- utp
Go uTP micro transport protocol implementation.
- vssh
Go library for building network and server automation over SSH protocol.
- water
Simple TUN/TAP library.
- webrtc
A pure Go implementation of the WebRTC API.
- winrm
Go WinRM client to remotely execute commands on Windows machines.
- xtcp
TCP Server Framework with simultaneous full duplex communication, graceful shutdown, and custom protocol.
HTTP Clients
24_ENTRIESLibraries for making HTTP requests.
- axios4go
A Go HTTP client library inspired by Axios, providing a simple and intuitive API for making HTTP requests.
- azuretls-client
An easy-to-use HTTP client 100% in Go to spoof TLS/JA3 and HTTP2 fingerprint.
- fast-shot
Hit your API targets with rapid-fire precision using Go's fastest and simple HTTP Client.
- gentleman
Full-featured plugin-driven HTTP client library.
- go-cleanhttp
Get easily stdlib HTTP client, which does not share any state with other clients.
- go-http-client
Make http calls simply and easily.
- go-ipmux
A library for Multiplexing HTTP requests based on multiple Source IPs.
- go-otelroundtripper
Go http.RoundTripper that emits open telemetry metrics for HTTP requests.
- go-req
Declarative golang HTTP client.
- go-retryablehttp
Retryable HTTP client in Go.
- go-zoox/fetch
A Powerful, Lightweight, Easy Http Client, inspired by Web Fetch API.
- Grequest
Simple and lightweight golang package for http requests. based on powerful net/http
- grequests
A Go "clone" of the great and famous Requests library.
- heimdall
An enhanced http client with retry and hystrix capabilities.
- httpretry
Enriches the default go HTTP client with retry functionality.
- pester
Go HTTP client calls with retries, backoff, and concurrency.
- req
Simple Go HTTP client with Black Magic (Less code and More efficiency).
- request
HTTP client for golang. If you have experience about axios or requests, you will love it. No 3rd dependency.
- requests
HTTP requests for Gophers. Uses context.Context and doesn't hide the underlying net/http.Client, making it compatible with standard Go APIs. Also includes testing tools.
- resty
Simple HTTP and REST client for Go inspired by Ruby rest-client.
- rq
A nicer interface for golang stdlib HTTP client.
- sling
Sling is a Go HTTP client library for creating and sending API requests.
- surf
Advanced HTTP client with HTTP/1.1, HTTP/2, HTTP/3 (QUIC), SOCKS5 proxy support and browser-grade TLS fingerprinting.
- tls-client
net/http.Client like HTTP Client with options to select specific client TLS Fingerprints to use for requests.
OpenGL
6_ENTRIESLibraries for using OpenGL in Go.
- gl
Go bindings for OpenGL (generated via glow).
- glfw
Go bindings for GLFW 3.
- go-glmatrix
Go port of glMatrix library.
- goxjs/gl
Go cross-platform OpenGL bindings (OS X, Linux, Windows, browsers, iOS, Android).
- goxjs/glfw
Go cross-platform glfw library for creating an OpenGL context and receiving events.
- mathgl
Pure Go math package specialized for 3D math, with inspiration from GLM.
ORM
25_ENTRIESLibraries that implement Object-Relational Mapping or datamapping techniques.
- bob
SQL query builder and ORM/Factory generator for Go. Successor of SQLBoiler.
- bun
SQL-first Golang ORM. Successor of go-pg.
- cacheme
Schema based, typed Redis caching/memoize framework for Go.
- CQL
Built on top of GORM, adds compile-time verified queries based on auto-generated code.
- ent
An entity framework for Go. Simple, yet powerful ORM for modeling and querying data.
- go-dbw
A simple package that encapsulates database operations.
- go-firestorm
A simple ORM for Google/Firebase Cloud Firestore.
- go-sql
A easy ORM for mysql.
- go-sqlbuilder
A flexible and powerful SQL string builder library plus a zero-config ORM.
- go-store
Simple and fast Redis backed key-value store library for Go.
- golobby/orm
Simple, fast, type-safe, generic orm for developer happiness.
- GORM
The fantastic ORM library for Golang, aims to be developer friendly.
- gormt
Mysql database to golang gorm struct.
- gorp
Go Relational Persistence, ORM-ish library for Go.
- grimoire
Grimoire is a database access layer and validation for golang. (Support: MySQL, PostgreSQL and SQLite3).
- lore
Simple and lightweight pseudo-ORM/pseudo-struct-mapping environment for Go.
- marlow
Generated ORM from project structs for compile time safety assurances.
- pop/soda
Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite.
- Prisma
Prisma Client Go, Typesafe database access for Go.
- reform
Better ORM for Go, based on non-empty interfaces and code generation.
- rel
Modern Database Access Layer for Golang - Testable, Extendable and Crafted Into a Clean and Elegant API.
- SQLBoiler
ORM generator. Generate a featureful and blazing-fast ORM tailored to your database schema.
- upper.io/db
Single interface for interacting with different data sources through the use of adapters that wrap mature database drivers.
- XORM
Simple and powerful ORM for Go. (Support: MySQL, MyMysql, PostgreSQL, Tidb, SQLite3, MsSql and Oracle).
- Zoom
Blazing-fast datastore and querying engine built on Redis.
Package Management
4_ENTRIESOfficial tooling for dependency and package management
Unofficial libraries for package and dependency management.
- go modules
Modules are the unit of source code interchange and versioning. The go command has direct support for working with modules, including recording and resolving dependencies on other modules.
- gup
Update binaries installed by "go install".
- modup
Terminal UI for Go dependency updates with outdated module detection and selective upgrading.
- syft
A CLI tool and Go library for generating a Software Bill of Materials (SBOM) from container images and filesystems.
Performance
8_ENTRIES- ebpf-go
Provides utilities for loading, compiling, and debugging eBPF programs.
- go-instrument
Automatically add spans to all methods and functions.
- jaeger
A distributed tracing system.
- mm-go
Generic manual memory management for golang.
- pixie
No instrumentation tracing for Golang applications via eBPF.
- profile
Simple profiling support package for Go.
- statsviz
Live visualization of your Go application runtime statistics.
- tracer
Simple, lightweight tracing.
Query Language
17_ENTRIES- api-fu
Comprehensive GraphQL implementation.
- dasel
Query and update data structures using selectors from the command line. Comparable to jq/yq but supports JSON, YAML, TOML and XML with zero runtime dependencies.
- gojsonq
A simple Go package to Query over JSON Data.
- goven
A drop-in query language for any database schema.
- gqlgen
go generate based graphql server library.
- grapher
A GraphQL field builder utilizing Go generics with extra utilities and features.
- graphql
GraphQL server with a focus on ease of use.
- graphql-go
Implementation of GraphQL for Go.
- gws
Apollos' "GraphQL over Websocket" client and server implementation.
- jsonpath
A query library for retrieving part of JSON based on JSONPath syntax.
- jsonql
JSON query expression library in Golang.
- jsonslice
Jsonpath queries with advanced filters.
- mql
Model Query Language (mql) is a query language for your database models.
- play
A TUI playground to experiment with your favorite programs, such as grep, sed, awk, jq and yq.
- rql
Resource Query Language for REST API.
- rqp
Query Parser for REST API. Filtering, validations, both
AND,ORoperations are supported directly in the query. - straf
Easily Convert Golang structs to GraphQL objects.
Reflection
9_ENTRIES- copy
Package for fast copying structs of different types.
- Deepcopier
Simple struct copying for Go.
- go-deepcopy
Fast deep copy library.
- goenum
A common enumeration struct based on generics and reflection that allows you to quickly define enumerations and use a set of useful default methods.
- gotype
Golang source code parsing, usage like reflect package.
- gpath
Library to simplify access struct fields with Go's expression in reflection.
- objwalker
Walk by go objects with reflection.
- reflectpro
Callers, copiers, getters and setters for go.
- reflectutils
Helpers for working with reflection: struct tag parsing; recursive walking; fill value from string.
Resource Embedding
4_ENTRIES- debme
Create an
embed.FSfrom an existingembed.FSsubdirectory. - embed
Package embed provides access to files embedded in the running Go program.
- rebed
Recreate folder structures and files from Go 1.16's
embed.FStype - vfsgen
Generates a vfsdata.go file that statically implements the given virtual filesystem.
Science and Data Analysis
36_ENTRIESLibraries for scientific computing and data analyzing.
- assocentity
Package assocentity returns the average distance from words to a given entity.
- bradleyterry
Provides a Bradley-Terry Model for pairwise comparisons.
- calendarheatmap
Calendar heatmap in plain Go inspired by Github contribution activity.
- chart
Simple Chart Plotting library for Go. Supports many graphs types.
- dataframe-go
Dataframes for machine-learning and statistics (similar to pandas).
- decimal
Package decimal implements arbitrary-precision decimal floating-point arithmetic.
- evaler
Simple floating point arithmetic expression evaluator.
- ewma
Exponentially-weighted moving averages.
- geom
2D geometry for golang.
- go-dsp
Digital Signal Processing for Go.
- go-estimate
State estimation and filtering algorithms in Go.
- go-gt
Graph theory algorithms written in "Go" language.
- go-hep
A set of libraries and tools for performing High Energy Physics analyses with ease.
- godesim
Extended/multivariable ODE solver framework for event-based simulations with simple API.
- goent
GO Implementation of Entropy Measures.
- gograph
A golang generic graph library that provides mathematical graph-theory and algorithms.
- gonum
Gonum is a set of numeric libraries for the Go programming language. It contains libraries for matrices, statistics, optimization, and more.
- gonum/plot
gonum/plot provides an API for building and drawing plots in Go.
- goraph
Pure Go graph theory library(data structure, algorithm visualization).
- gosl
Go scientific library for linear algebra, FFT, geometry, NURBS, numerical methods, probabilities, optimisation, differential equations, and more.
- GoStats
GoStats is an Open Source GoLang library for math statistics mostly used in Machine Learning domains, it covers most of the Statistical measures functions.
- graph
Library of basic graph algorithms.
- jsonl-graph
Tool to manipulate JSONL graphs with graphviz support.
- ode
Ordinary differential equation (ODE) solver which supports extended states and channel-based iteration stop conditions.
- orb
2D geometry types with clipping, GeoJSON and Mapbox Vector Tile support.
- pagerank
Weighted PageRank algorithm implemented in Go.
- piecewiselinear
Tiny linear interpolation library.
- PiHex
Implementation of the "Bailey-Borwein-Plouffe" algorithm for the hexadecimal number Pi.
- Poly
A Go package for engineering organisms.
- rootfinding
root-finding algorithms library for finding roots of quadratic functions.
- sparse
Go Sparse matrix formats for linear algebra supporting scientific and machine learning applications, compatible with gonum matrix libraries.
- stats
Statistics package with common functions missing from the Golang standard library.
- streamtools
general purpose, graphical tool for dealing with streams of data.
- TextRank
TextRank implementation in Golang with extendable features (summarization, weighting, phrase extraction) and multithreading (goroutine) support.
- topk
Sliding-window and regular top-K sketches, based on the HeavyKeeper algorithm.
- triangolatte
2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs.
Security
44_ENTRIESLibraries that are used to help make your application more secure.
- acmetool
ACME (Let's Encrypt) client tool with automatic renewal.
- acopw-go
Small cryptographically secure password generator package for Go.
- acra
Network encryption proxy to protect database-based applications from data leaks: strong selective encryption, SQL injections prevention, intrusion detection system.
- age
A simple, modern and secure encryption tool (and Go library) with small explicit keys, no config options, and UNIX-style composability.
- argon2-hashing
light wrapper around Go's argon2 package that closely mirrors with Go's standard library Bcrypt and simple-scrypt package.
- autocert
Auto provision Let's Encrypt certificates and start a TLS server.
- BadActor
In-memory, application-driven jailer built in the spirit of fail2ban.
- beelzebub
A secure low code honeypot framework, leveraging AI for System Virtualization.
- booster
Fast initramfs generator with full-disk encryption support.
- Cameradar
Tool and library to remotely hack RTSP streams from surveillance cameras.
- certificates
An opinionated tool for generating tls certificates.
- CertMagic
Mature, robust, and powerful ACME client integration for fully-managed TLS certificate issuance and renewal.
- Coraza
Enterprise-ready, modsecurity and OWASP CRS compatible WAF library.
- dongle
A simple, semantic and developer-friendly golang package for encoding&decoding and encryption&decryption.
- encid
Encode and decode encrypted integer IDs.
- entpassgen
Entropy Password Generator with extensive command line arguments to generate random strings securely including digits, passwords, and passwords built using obscure dictionary words mixed with symbols and digits.
- firewalld-rest
A rest application to dynamically update firewalld rules on a linux server.
- go-generate-password
Password generator that can be used on the cli or as a library.
- go-htpasswd
Apache htpasswd Parser for Go.
- go-password-validator
Password validator based on raw cryptographic entropy values.
- go-peer
A software library for creating secure and anonymous decentralized systems.
- goArgonPass
Argon2 password hash and verification designed to be compatible with existing Python and PHP implementations.
- goSecretBoxPassword
A probably paranoid package for securely hashing and encrypting passwords.
- Interpol
Rule-based data generator for fuzzing and penetration testing.
- lego
Pure Go ACME client library and CLI tool (for use with Let's Encrypt).
- luks.go
Pure Golang library to manage LUKS partitions.
- memguard
A pure Go library for handling sensitive values in memory.
- multikey
An n-out-of-N keys encryption/decryption framework based on Shamir's Secret Sharing algorithm.
- nacl
Go implementation of the NaCL set of API's.
- optimus-go
ID hashing and Obfuscation using Knuth's Algorithm.
- passlib
Futureproof password hashing library.
- passwap
Provides a unified implementation between different password hashing algorithms
- qrand
Client for the ANU Quantum Numbers (AQN) API, providing quantum-mechanically secure random data.
- SafeDep/vet
Protect against malicious open source packages.
- secret
Prevent your secrets from leaking into logs, std* etc.
- secure
HTTP middleware for Go that facilitates some quick security wins.
- secureio
An keyexchanging+authenticating+encrypting wrapper and multiplexer for
io.ReadWriteCloserbased on XChaCha20-poly1305, ECDH and ED25519. - simple-scrypt
Scrypt package with a simple, obvious API and automatic cost calibration built-in.
- ssh-vault
encrypt/decrypt using ssh keys.
- sslmgr
SSL certificates made easy with a high level wrapper around acme/autocert.
- teler-waf
teler-waf is a Go HTTP middleware that provide teler IDS functionality to protect against web-based attacks and improve the security of Go-based web applications. It is highly configurable and easy to integrate into existing Go applications.
- 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.
- urusai
Urusai ("noisy" in Japanese) is a Go implementation of a random HTTP/DNS traffic noise generator that helps protect privacy by creating digital smokescreens while browsing.
Serialization
19_ENTRIESLibraries and tools for binary serialization.
- bambam
generator for Cap'n Proto schemas from go.
- bel
Generate TypeScript interfaces from Go structs/interfaces. Useful for JSON RPC.
- binstruct
Golang binary decoder for mapping data into the structure.
- cbor
Small, safe, and easy CBOR encoding and decoding library.
- colfer
Code generation for the Colfer binary format.
- csvutil
High Performance, idiomatic CSV record encoding and decoding to native Go structures.
- elastic
Convert slices, maps or any other unknown value across different types at run-time, no matter what.
- fixedwidth
Fixed-width text formatting (UTF-8 supported).
- fwencoder
Fixed width file parser (encoding and decoding library) for Go.
- go-capnproto
Cap'n Proto library and parser for go.
- go-codec
High Performance, feature-Rich, idiomatic encode, decode and rpc library for msgpack, cbor and json, with runtime-based OR code-generation support.
- go-csvlib
High level and rich functionalities CSV serialization/deserialization library.
- goprotobuf
Go support, in the form of a library and protocol compiler plugin, for Google's protocol buffers.
- gotiny
Efficient Go serialization library, gotiny is almost as fast as serialization libraries that generate code.
- jsoniter
High-performance 100% compatible drop-in replacement of "encoding/json".
- php_session_decoder
GoLang library for working with PHP session format and PHP Serialize/Unserialize functions.
- pletter
A standard way to wrap a proto message for message brokers.
- structomap
Library to easily and dynamically generate maps from static structures.
- unitpacking
Library to pack unit vectors into as fewest bytes as possible.
Server Applications
32_ENTRIES- algernon
HTTP/2 web server with built-in support for Lua, Markdown, GCSS and Amber.
- Caddy
Caddy is an alternative, HTTP/2 web server that's easy to configure and use.
- consul
Consul is a tool for service discovery, monitoring and configuration.
- cortex-tenant
Prometheus remote write proxy that adds add Cortex tenant ID header based on metric labels.
- devd
Local webserver for developers.
- discovery
A registry for resilient mid-tier load balancing and failover.
- dudeldu
A simple SHOUTcast server.
- Easegress
A cloud native high availability/performance traffic orchestration system with observability and extensibility.
- Engity's Bifröst
Highly customizable SSH server with several ways to authorize a user how to execute its session (local or in containers).
- etcd
Highly-available key value store for shared configuration and service discovery.
- Euterpe
Self-hosted music streaming server with built-in web UI and REST API.
- Fider
Fider is an open platform to collect and organize customer feedback.
- Flagr
Flagr is an open-source feature flagging and A/B testing service.
- flipt
A self contained feature flag solution written in Go and Vue.js
- go-feature-flag
A simple, complete and lightweight self-hosted feature flag solution 100% Open Source.
- go-proxy-cache
Simple Reverse Proxy with Caching, written in Go, using Redis.
- gondola
A YAML based golang reverse proxy.
- lets-proxy2
Reverse proxy for handle https with issue certificates in fly from lets-encrypt.
- minio
Minio is a distributed object storage server.
- Moxy
Moxy is a simple mocker and proxy application server, you can create mock endpoints as well as proxy requests in case no mock exists for the endpoint.
- nginx-prometheus
Nginx log parser and exporter to Prometheus.
- nsq
A realtime distributed messaging platform.
- OpenRun
Open-source alternative to Google Cloud Run and AWS App Runner. Easily deploy internal tools across a team.
- pocketbase
PocketBase is a realtime backend in 1 file consisting of embedded database (SQLite) with realtime subscriptions, built-in auth management and much more.
- protoxy
A proxy server that converts JSON request bodies to Protocol Buffers.
- psql-streamer
Stream database events from PostgreSQL to Kafka.
- riemann-relay
Relay to load-balance Riemann events and/or convert them to Carbon.
- RoadRunner
High-performance PHP application server, load-balancer and process manager.
- SFTPGo
Fully featured and highly configurable SFTP server with optional FTP/S and WebDAV support. It can serve local filesystem and Cloud Storage backends such as S3 and Google Cloud Storage.
- Trickster
HTTP reverse proxy cache and time series accelerator.
- wd-41
A (w)eb (d)evelopment server with automatic live-reload on file changes.
- Wish
Make SSH apps, just like that!
Stream Processing
9_ENTRIESLibraries and tools for stream processing and reactive programming.
- go-etl
A lightweight toolkit for data source extraction, transformation, and loading (ETL).
- go-streams
Go stream processing library.
- goio
An implementation of IO, Stream, Fiber for Golang, inspired by awesome Scala libraries cats and fs2.
- gostream
Type-safe stream processing library inspired by the Java Streams API.
- machine
Go library for writing and generating stream workers with built in metrics and traceability.
- nibbler
A lightweight package for micro batch processing.
- ro
Reactive Programming: declarative and composable API for event-driven applications.
- stream
Go Stream, like Java 8 Stream: Filter/Map/FlatMap/Peek/Sorted/ForEach/Reduce...
- StreamSQL
A lightweight streaming SQL engine for real-time data processing.
Template Engines
18_ENTRIESLibraries and tools for templating and lexing.
- ego
Lightweight templating language that lets you write templates in Go. Templates are translated into Go and compiled.
- extemplate
Tiny wrapper around html/template to allow for easy file-based template inheritance.
- fasttemplate
Simple and fast template engine. Substitutes template placeholders up to 10x faster than text/template.
- gomponents
HTML 5 components in pure Go, that look something like this:
func(name string) g.Node { return Div(Class("headline"), g.Textf("Hi %v!", name)) }. - got
A Go code generator inspired by Hero and Fasttemplate. Has include files, custom tag definitions, injected Go code, language translation, and more.
- goview
Goview is a lightweight, minimalist and idiomatic template library based on golang html/template for building Go web application.
- htmgo
build simple and scalable systems with go + htmx
- jet
Jet template engine.
- liquid
Go implementation of Shopify Liquid templates.
- maroto
A maroto way to create PDFs. Maroto is inspired in Bootstrap and uses gofpdf. Fast and simple.
- pongo2
Django-like template-engine for Go.
- quicktemplate
Fast, powerful, yet easy to use template engine. Converts templates into Go code and then compiles it.
- Razor
Razor view engine for Golang.
- Soy
Closure templates (aka Soy templates) for Go, following the official spec.
- sprout
Useful template functions for Go templates.
- tbd
A really simple way to create text templates with placeholders - exposes extra builtin Git repo metadata.
- templ
A HTML templating language that has great developer tooling.
- templator
A type-safe HTML template rendering engine for Go.
Testing Frameworks
66_ENTRIES- apitest
Simple and extensible behavioural testing library for REST based services or HTTP handlers that supports mocking external http calls and rendering of sequence diagrams.
- arch-go
Architecture testing tool for Go projects.
- assert
Basic Assertion Library used along side native go testing, with building blocks for custom assertions.
- baloo
Expressive and versatile end-to-end HTTP API testing made easy.
- be
The minimalist generic test assertion library.
- biff
Bifurcation testing framework, BDD compatible.
- charlatan
Tool to generate fake interface implementations for tests.
- commander
Tool for testing cli applications on windows, linux and osx.
- cupaloy
Simple snapshot testing addon for your test framework.
- dbcleaner
Clean database for testing purpose, inspired by
database_cleanerin Ruby. - dft
Lightweight, zero dependency docker containers for testing (or more).
- dsunit
Datastore testing for SQL, NoSQL, structured files.
- embedded-postgres
Run a real Postgres database locally on Linux, OSX or Windows as part of another Go application or test.
- endly
Declarative end to end functional testing.
- envite
Dev and testing environment management framework.
- fixenv
Fixture manage engine, inspired by pytest fixtures.
- flute
HTTP client testing framework.
- frisby
REST API testing framework.
- gherkingen
BDD boilerplate generator and framework.
- ginkgo
BDD Testing Framework for Go.
- gnomock
integration testing with real dependencies (database, cache, even Kubernetes or AWS) running in Docker, without mocks.
- go-carpet
Tool for viewing test coverage in terminal.
- go-cmp
Package for comparing Go values in tests.
- go-hit
Hit is an http integration test framework written in golang.
- go-httpbin
HTTP testing and debugging tool with various endpoints for client testing.
- go-mutesting
Mutation testing for Go source code.
- go-mysql-test-container
Golang MySQL testcontainer to help with MySQL integration testing.
- go-snaps
Jest-like snapshot testing in Golang.
- go-test-coverage
Tool that reports coverage of files below set threshold.
- go-testdeep
Extremely flexible golang deep comparison, extends the go testing package.
- go-testpredicate
Test predicate style assertions library with extensive diagnostics output.
- go-vcr
Record and replay your HTTP interactions for fast, deterministic and accurate tests.
- goblin
Mocha like testing framework of Go.
- goc
Goc is a comprehensive coverage testing system for The Go Programming Language.
- gocheck
More advanced testing framework alternative to gotest.
- GoConvey
BDD-style framework with web UI and live reload.
- gocrest
Composable hamcrest-like matchers for Go assertions.
- godog
Cucumber BDD framework for Go.
- gofight
API Handler Testing for Golang Router framework.
- gogiven
YATSPEC-like BDD testing framework for Go.
- gomatch
library created for testing JSON against patterns.
- gomega
Rspec like matcher/assertion library.
- Gont
Go network testing toolkit for testing building complex network topologies using Linux namespaces.
- gospecify
This provides a BDD syntax for testing your Go code. It should be familiar to anybody who has used libraries such as rspec.
- gosuite
Brings lightweight test suites with setup/teardown facilities to
testingby leveraging Go1.7's Subtests. - got
An enjoyable golang test framework.
- gotest.tools
A collection of packages to augment the go testing package and support common patterns.
- Hamcrest
fluent framework for declarative Matcher objects that, when applied to input values, produce self-describing results.
- httpexpect
Concise, declarative, and easy to use end-to-end HTTP and REST API testing.
- is
Professional lightweight testing mini-framework for Go.
- jsonassert
Package for verifying that your JSON payloads are serialized correctly.
- keploy
Generate Testcase and Data Mocks from API calls automatically.
- omg.testingtools
The simple library for change a values of private fields for testing.
- restit
Go micro framework to help writing RESTful API integration test.
- schema
Quick and easy expression matching for JSON schemas used in requests and responses.
- stop-and-go
Testing helper for concurrency.
- testcase
Idiomatic testing framework for Behavior Driven Development.
- testcerts
Dynamically generate self-signed certificates and certificate authorities within your test functions.
- testcontainers-go
A Go package that makes it simple to create and clean up container-based dependencies for automated integration/smoke tests. The clean, easy-to-use API enables developers to programmatically define containers that should be run as part of a test and clean up those resources when the test is done.
- testfixtures
A helper for Rails' like test fixtures to test database applications.
- Testify
Sacred extension to the standard go testing package.
- testsql
Generate test data from SQL files before testing and clear it after finished.
- testza
Full-featured test framework with nice colorized output.
- trial
Quick and easy extendable assertions without introducing much boilerplate.
- Tt
Simple and colorful test tools.
- wstest
Websocket client for unit-testing a websocket http.Handler.
Mock
21_ENTRIES- connexions
Combine multiple APIs with meaningful responses, configurable latency and error codes based on OpenAPI 3.0 specifications and files.
- counterfeiter
Tool for generating self-contained mock objects.
- genmock
Go mocking system with code generator for building calls of the interface methods.
- go-localstack
Tool for using localstack in AWS testing.
- go-sqlmock
Mock SQL driver for testing database interactions.
- go-txdb
Single transaction based database driver mainly for testing purposes.
- gock
Versatile HTTP mocking made easy.
- gomock
Mocking framework for the Go programming language.
- govcr
HTTP mock for Golang: record and replay HTTP interactions for offline testing.
- hoverfly
HTTP(S) proxy for recording and simulating REST/SOAP APIs with extensible middleware and easy-to-use CLI.
- httpmock
Easy mocking of HTTP responses from external resources.
- minimock
Mock generator for Go interfaces.
- mockery
Tool to generate Go interfaces.
- mockfs
Mock filesystem for Go testing with error injection and latency simulation, built on
testing/fstest.MapFS. - mockhttp
Mock object for Go http.ResponseWriter.
- mooncake
A simple way to generate mocks for multiple purposes.
- moq
Utility that generates a struct from any interface. The struct can be used in test code as a mock of the interface.
- moxie
Generate mock methods on embedded structs.
- pgxmock
A mock library implementing pgx - PostgreSQL Driver and Toolkit.
- timex
A test-friendly replacement for the native
timepackage. - xgo
A general pureposed function mocking library.
Fuzzing and delta-debugging/reducing/shrinking
2_ENTRIESSelenium and browser control tools
4_ENTRIES- cdp
Type-safe bindings for the Chrome Debugging Protocol that can be used with browsers or other debug targets that implement it.
- chromedp
a way to drive/test Chrome, Safari, Edge, Android Webviews, and other browsers supporting the Chrome Debugging Protocol.
- playwright-go
browser automation library to control Chromium, Firefox and WebKit with a single API.
- rod
A Devtools driver to make web automation and scraping easy.
Fail injection
1_ENTRIES- failpoint
An implementation of failpoints for Golang.
Formatters
8_ENTRIES- address
Handles address representation, validation and formatting.
- align
A general purpose application that aligns text.
- bytes
Formats and parses numeric byte values (10K, 2M, 3G, etc.).
- go-fixedwidth
Fixed-width text formatting (encoder/decoder with reflection).
- go-humanize
Formatters for time, numbers, and memory size to human readable format.
- gotabulate
Easily pretty-print your tabular data with Go.
- sq
Convert data from SQL databases or document formats like CSV or Excel into formats such as JSON, Excel, CSV, HTML, Markdown, XML, and YAML.
- textwrap
Wraps text at end of lines. Implementation of
textwrapmodule from Python.
Markup Languages
13_ENTRIES- bafi
Universal JSON, BSON, YAML, XML translator to ANY format using templates.
- bbConvert
Converts bbCode to HTML that allows you to add support for custom bbCode tags.
- blackfriday
Markdown processor in Go.
- go-output-format
Output go structures into multiple formats (YAML/JSON/etc) in your command line app.
- go-toml
Go library for the TOML format with query support and handy cli tools.
- goldmark
A Markdown parser written in Go. Easy to extend, standard (CommonMark) compliant, well structured.
- goq
Declarative unmarshalling of HTML using struct tags with jQuery syntax (uses GoQuery).
- html-to-markdown
Convert HTML to Markdown. Even works with entire websites and can be extended through rules.
- htmlquery
An XPath query package for HTML, lets you extract data or evaluate from HTML documents by an XPath expression.
- htmlyaml
Rich rendering of YAML as HTML in Go.
- mxj
Encode / decode XML as JSON or map[string]interface{}; extract values with dot-notation paths and wildcards. Replaces x2j and j2x packages.
- toml
TOML configuration format (encoder/decoder with reflection).
Parsers/Encoders/Decoders
25_ENTRIES- allot
Placeholder and wildcard text parsing for CLI tools and bots.
- codetree
Parses indented code (python, pixy, scarlet, etc.) and returns a tree structure.
- commonregex
A collection of common regular expressions for Go.
- did
DID (Decentralized Identifiers) Parser and Stringer in Go.
- doi
Document object identifier (doi) parser in Go.
- editorconfig-core-go
Editorconfig file parser and manipulator for Go.
- encdec
Package provides a generic interface to encoders and decoders.
- go-fasttld
High performance effective top level domains (eTLD) extraction module.
- go-nmea
NMEA parser library for the Go language.
- go-querystring
Go library for encoding structs into URL query parameters.
- go-vcard
Parse and format vCard.
- godump
Pretty print any GO variable with ease, an alternative to Go's
fmt.Printf("%#v"). - godump (goforj)
Pretty-print Go structs with Laravel/Symfony-style dumps, full type info, colorized CLI output, cycle detection, and private field access.
- gofeed
Parse RSS and Atom feeds in Go.
- gographviz
Parses the Graphviz DOT language.
- gonameparts
Parses human names into individual name parts.
- ltsv
High performance LTSV (Labeled Tab Separated Value) reader for Go.
- normalize
Sanitize, normalize and compare fuzzy text.
- parseargs-go
string argument parser that understands quotes and backslashes.
- prattle
Scan and parse LL(1) grammars simply and efficiently.
- sh
Shell parser and formatter.
- tokenizer
Parse any string, slice or infinite buffer to any tokens.
- vdf
A Lexer and Parser for Valves Data Format (known as vdf) written in Go.
- when
Natural EN and RU language date/time parser with pluggable rules.
- xj2go
Convert xml or json to go struct.
Regular Expressions
5_ENTRIES- genex
Count and expand Regular Expressions into all matching Strings.
- go-wildcard
Simple and lightweight wildcard pattern matching.
- goregen
Library for generating random strings from regular expressions.
- regroup
Match regex expression named groups into go struct using struct tags and automatic parsing.
- rex
Regular expressions builder.
Sanitation
2_ENTRIES- bluemonday
HTML Sanitizer.
- gofuckyourself
A sanitization-based swear filter for Go.
Scrapers
9_ENTRIES- colly
Fast and Elegant Scraping Framework for Gophers.
- dataflowkit
Web scraping Framework to turn websites into structured data.
- go-recipe
A package for scraping recipes from websites.
- go-sitemap-parser
Go language library for parsing Sitemaps.
- GoQuery
GoQuery brings a syntax and a set of features similar to jQuery to the Go language.
- pagser
Pagser is a simple, extensible, configurable parse and deserialize html page to struct based on goquery and struct tags for golang crawler.
- Tagify
Produces a set of tags from given source.
- walker
Seamlessly fetch paginated data from any source. Simple and high performance API scraping included.
- xurls
Extract urls from text.
RSS
1_ENTRIES- podcast
iTunes Compliant and RSS 2.0 Podcast Generator in Golang
Utility/Miscellaneous
7_ENTRIES- go-runewidth
Functions to get fixed width of the character or string.
- kace
Common case conversions covering common initialisms.
- lancet
A comprehensive, Lodash-like utility library for Go
- petrovich
Petrovich is the library which inflects Russian names to given grammatical case.
- radix
Fast string sorting algorithm.
- TySug
Alternative suggestions with respect to keyboard layouts.
- w2vgrep
A semantic grep tool using word embeddings to find semantically similar matches. For example, searching for "death" will find "dead", "killing", "murder".
Third-party APIs
102_ENTRIESLibraries for accessing third party APIs.
- airtable
Go client library for the Airtable API.
- anaconda
Go client library for the Twitter 1.1 API.
- appstore-sdk-go
Unofficial Golang SDK for AppStore Connect API.
- aws-encryption-sdk-go
Unofficial Go SDK implementation of the AWS Encryption SDK.
- aws-sdk-go
The official AWS SDK for the Go programming language.
- bqwriter
High Level Go Library to write data into Google BigQuery at a high throughout.
- brewerydb
Go library for accessing the BreweryDB API.
- cachet
Go client library for Cachet (open source status page system).
- circleci
Go client library for interacting with CircleCI's API.
- clarifai
Go client library for interfacing with the Clarifai API.
- codeship-go
Go client library for interacting with Codeship's API v2.
- coinpaprika-go
Go client library for interacting with Coinpaprika's API.
- device-check-go
Go client library for interacting with iOS DeviceCheck API v1.
- discordgo
Go bindings for the Discord Chat API.
- disgo
Go API Wrapper for the Discord API.
- dusupay-sdk-go
Unofficial Dusupay payment gateway API Client for Go
- ethrpc
Go bindings for Ethereum JSON RPC API.
- facebook
Go Library that supports the Facebook Graph API.
- fasapay-sdk-go
Unofficial Fasapay payment gateway XML API Client for Golang.
- fcm
Go library for Firebase Cloud Messaging.
- gads
Google Adwords Unofficial API.
- gcm
Go library for Google Cloud Messaging.
- geo-golang
Go Library to access Google Maps, MapQuest, Nominatim, OpenCage, Bing, Mapbox, and OpenStreetMap geocoding / reverse g…
- github
Go library for accessing the GitHub REST API v3.
- githubql
Go library for accessing the GitHub GraphQL API v4.
- go-atlassian
Go library for accessing the Atlassian Cloud services (Jira, Jira Service Management, Jira Agile, Confluence, Admin Cloud)
- go-aws-news
Go application and library to fetch what's new from AWS.
- go-chronos
Go library for interacting with the Chronos Job Scheduler
- go-gerrit
Go client library for Gerrit Code Review.
- go-hacknews
Tiny Go client for HackerNews API.
- go-here
Go client library around the HERE location based APIs.
- go-hibp
Simple Go binding to the "Have I Been Pwned" APIs.
- go-jira
Go client library for Atlassian JIRA
- go-marathon
Go library for interacting with Mesosphere's Marathon PAAS.
- go-myanimelist
Go client library for accessing the MyAnimeList API.
- go-openai
OpenAI ChatGPT, DALL·E, Whisper API library for Go.
- go-openproject
Go client library for interacting with OpenProject API.
- go-postman-collection
Go module to work with Postman Collections (compatible with Insomnia).
- go-restcountries
Go library for the REST Countries API.
- go-salesforce
Go client library for interacting with the Salesforce REST API.
- go-sophos
Go client library for the Sophos UTM REST API with zero dependencies.
- go-swagger-ui
Go library containing precompiled Swagger UI for serving swagger json.
- go-telegraph
Telegraph publishing platform API client.
- go-trending
Go library for accessing trending repositories and developers at Github.
- go-unsplash
Go client library for the Unsplash.com API.
- go-xkcd
Go client for the xkcd API.
- go-yapla
Go client library for the Yapla v2.0 API.
- goagi
Go library to build Asterisk PBX agi/fastagi applications.
- goami2
AMI v2 library for Asterisk PBX.
- GoFreeDB
Golang library providing common and simple database abstractions on top of Google Sheets.
- gogtrends
Google Trends Unofficial API.
- golang-tmdb
Golang wrapper for The Movie Database API v3.
- golyrics
Golyrics is a Go library to fetch music lyrics data from the Wikia website.
- gomalshare
Go library MalShare API malshare.com
- GoMusicBrainz
Go MusicBrainz WS2 client library.
- google
Auto-generated Google APIs for Go.
- google-analytics
Simple wrapper for easy google analytics reporting.
- google-cloud
Google Cloud APIs Go Client Library.
- gopaapi5
Go Client Library for Amazon Product Advertising API 5.0.
- gopensky
Go client implementation for OpenSKY Network live's API (airspace ADS-B and Mode S data).
- gosip
Client library for SharePoint.
- gostorm
GoStorm is a Go library that implements the communications protocol required to write Storm spouts and Bolts in Go that communicate with the Storm shells.
- hipchat
This project implements a golang client library for the Hipchat API.
- hipchat (xmpp)
A golang package to communicate with HipChat over XMPP.
- igdb
Go client for the Internet Game Database API.
- ip2location-io-go
Go wrapper for the IP2Location.io API IP2Location.io.
- jokeapi-go
Go client for JokeAPI.
- lastpass-go
Go client library for the LastPass API.
- Medium
Golang SDK for Medium's OAuth2 API.
- megos
Client library for accessing an Apache Mesos cluster.
- minio-go
Minio Go Library for Amazon S3 compatible cloud storage.
- mixpanel
Mixpanel is a library for tracking events and sending Mixpanel profile updates to Mixpanel from your go applications.
- newsapi-go
Go client for NewsAPI.
- openaigo
OpenAI GPT3/GPT3.5 ChatGPT API client library for Go.
- patreon-go
Go library for Patreon API.
- paypal
Wrapper for PayPal payment API.
- playlyfe
The Playlyfe Rest API Go SDK.
- pushover
Go wrapper for the Pushover API.
- rawg-sdk-go
Go library for the RAWG Video Games Database API
- shopify
Go Library to make CRUD request to the Shopify API.
- simples3
Simple no frills AWS S3 Library using REST with V4 Signing written in Go.
- slack
Slack API in Go.
- smite
Go package to wraps access to the Smite game API.
- spotify
Go Library to access Spotify WEB API.
- steam
Go Library to interact with Steam game servers.
- stripe
Go client for the Stripe API.
- swag
No comments, simple go wrapper to create swagger 2.0 compatible APIs. Support most routing frameworks, such as built-in, gin, chi, mux, echo, httprouter, fasthttp and more.
- textbelt
Go client for the textbelt.com txt messaging API.
- Trello
Go wrapper for the Trello API.
- TripAdvisor
Go wrapper for the TripAdvisor API.
- tumblr
Go wrapper for the Tumblr v2 API.
- uptimerobot
Go wrapper and command-line client for the Uptime Robot v2 API.
- vl-go
Go client library around the VerifID identity verification layer API.
- webhooks
Webhook receiver for GitHub and Bitbucket.
- wit-go
Go client for wit.ai HTTP API.
- ynab
Go wrapper for the YNAB API.
- zooz
Go client for the Zooz API.
Utilities
183_ENTRIESGeneral utilities and tools to make your life easier.
- abstract
Abstractions and utilities to get rid of boilerplate code in business logic.
- apm
Process manager for Golang applications with an HTTP API.
- backscanner
A scanner similar to bufio.Scanner, but it reads and returns lines in reverse order, starting at a given position and going backward.
- bed
A Vim-like binary editor written in Go.
- blank
Verify or remove blanks and whitespace from strings.
- bleep
Perform any number of actions on any set of OS signals in Go.
- boilr
Blazingly fast CLI tool for creating projects from boilerplate templates.
- boring
Simple command-line SSH tunnel manager.
- changie
Automated changelog tool for preparing releases with lots of customization options.
- chyle
Changelog generator using a git repository with multiple configuration possibilities.
- circuit
An efficient and feature complete Hystrix like Go implementation of the circuit breaker pattern.
- circuitbreaker
Circuit Breakers in Go.
- clipboard
📋 cross-platform clipboard package in Go.
- clockwork
A simple fake clock for golang.
- cmd
Library for executing shell commands on osx, windows and linux.
- config-file-validator
Cross Platform tool to validate configuration files.
- contem
Drop-in context.Context replacement for graceful shutdown Go applications.
- cookie
Cookie struct parsing and helper package.
- copy-pasta
Universal multi-workstation clipboard that uses S3 like backend for the storage.
- countries
Full implementation of ISO-3166-1, ISO-4217, ITU-T E.164, Unicode CLDR and IANA ccTLD standards.
- countries
All you need when you are working with countries in Go.
- create-go-app
A powerful CLI for create a new production-ready project with backend (Golang), frontend (JavaScript, TypeScript) & deploy automation (Ansible, Docker) by running one command.
- cryptgo
Crytpgo is a TUI based application written purely in Go to monitor and observe cryptocurrency prices in real time!
- ctxutil
A collection of utility functions for contexts.
- cvt
Easy and safe convert any value to another type.
- dbt
A framework for running self-updating signed binaries from a central, trusted repository.
- Death
Managing go application shutdown with signals.
- debounce
A zero-allocation debouncer written in Go.
- delve
Go debugger.
- dive
A tool for exploring each layer in a Docker image.
- dlog
Compile-time controlled logger to make your release smaller without removing debug calls.
- EaseProbe
A simple, standalone, and lightWeight tool that can do health/status checking daemon, support HTTP/TCP/SSH/Shell/Client/... probes, and Slack/Discord/Telegram/SMS... notification.
- equalizer
Quota manager and rate limiter collection for Go.
- ergo
The management of multiple local services running over different ports made easy.
- evaluator
Evaluate an expression dynamically based on s-expression. It's simple and easy to extend.
- Failsafe-go
Fault tolerance and resilience patterns for Go.
- filetype
Small package to infer the file type checking the magic numbers signature.
- filler
small utility to fill structs using "fill" tag.
- filter
provide filtering, sanitizing, and conversion of Go data.
- fzf
Command-line fuzzy finder written in Go.
- generate
runs go generate recursively on a specified path or environment variable and can filter by regex.
- ghokin
Parallelized formatter with no external dependencies for gherkin (cucumber, behat...).
- git-time-metric
Simple, seamless, lightweight time tracking for Git.
- git-tools
Tool to help manage git tags.
- gitbatch
manage your git repositories in one place.
- gitcs
Git Commits Visualizer, CLI tool to visualize your Git commits on your local machine.
- go-actuator
Production ready features for Go based web frameworks.
- go-astitodo
Parse TODOs in your GO code.
- go-bind-plugin
go:generate tool for wrapping symbols exported by golang plugins (1.8 only).
- go-bsdiff
Pure Go bsdiff and bspatch libraries and CLI tools.
- go-clip
A minimalistic clipboard manager for Mac.
- go-convert
Package go-convert enables you to convert a value into another type.
- go-countries
Lightweight lookup over ISO-3166 codes.
- go-dry
DRY (don't repeat yourself) package for Go.
- go-events
A go event and event'subscribe package, like wordpress hook functions.
- go-funk
Modern Go utility library which provides helpers (map, find, contains, filter, chunk, reverse, ...).
- go-health
Health package simplifies the way you add health check to your services.
- go-httpheader
Go library for encoding structs into Header fields.
- go-lambda-cleanup
A CLI for removing unused or previous versions of AWS Lambdas.
- go-lock
go-lock is a lock library implementing read-write mutex and read-write trylock without starvation.
- go-pattern-match
A Pattern matching library inspired by ts-pattern.
- go-pkg
A go toolkit.
- go-problemdetails
Go package for working with Problem Details.
- go-qr
A native, high-quality and minimalistic QR code generator.
- go-rate
Timed rate limiter for Go.
- go-sitemap-generator
XML Sitemap generator written in Go.
- go-trigger
Go-lang global event triggerer, Register Events with an id and trigger the event from anywhere from your project.
- go-tripper
Tripper is a circuit breaker package for Go that allows you to circuit and control the status of circuits.
- go-type
Library providing Go types for store/validation and transfer of ISO-4217, ISO-3166, and other types.
- goback
Go simple exponential backoff package.
- goctx
Get your context value with high performance.
- godaemon
Utility to write daemons.
- godropbox
Common libraries for writing Go services/applications from Dropbox.
- gofn
High performance utility functions written using Generics for Go 1.18+.
- golarm
Fire alarms with system events.
- golog
Easy and lightweight CLI tool to time track your tasks.
- gopencils
Small and simple package to easily consume REST APIs.
- goplaceholder
a small golang lib to generate placeholder images.
- goreadability
Webpage summary extractor using Facebook Open Graph and arc90's readability.
- goreleaser
Deliver Go binaries as fast and easily as possible.
- goreporter
Golang tool that does static analysis, unit testing, code review and generate code quality report.
- goseaweedfs
SeaweedFS client library with almost full features.
- gostrutils
Collections of string manipulation and conversion functions.
- gotenv
Load environment variables from
.envor anyio.Readerin Go. - goval
Evaluate arbitrary expressions in Go.
- graterm
Provides primitives to perform ordered (sequential/concurrent) GRAceful TERMination (aka shutdown) in Go application.
- grofer
A system and resource monitoring tool written in Golang!
- gubrak
Golang utility library with syntactic sugar. It's like lodash, but for golang.
- handy
Many utilities and helpers like string handlers/formatters and validators.
- healthcheck
A simple yet powerful readiness test for Kubernetes.
- hostctl
A CLI tool to manage /etc/hosts with easy commands.
- htcat
Parallel and Pipelined HTTP GET Utility.
- hub
wrap git commands with additional functionality to interact with github from the terminal.
- immortal
*nix cross-platform (OS agnostic) supervisor.
- jet
Just Edit Text: a fast and powerful tool for finding and replacing file content and names using regular expressions.
- jsend
JSend's implementation written in Go.
- json-log-viewer
Interactive viewer for JSON logs.
- jump
Jump helps you navigate faster by learning your habits.
- just
Just a collection of useful functions for working with generic data structures.
- koazee
Library inspired in Lazy evaluation and functional programming that takes the hassle out of working with arrays.
- lang
Generic one-liners to work with variables, slices and maps without boilerplate code.
- lets-go
Go module that provides common utilities for Cloud Native REST API development. Also contains AWS Specific utilities.
- limiters
Rate limiters for distributed applications in Golang with configurable back-ends and distributed locks.
- lo
A Lodash like Go library based on Go 1.18+ Generics (map, filter, contains, find...)
- loncha
A high-performance slice Utilities.
- lrserver
LiveReload server for Go.
- mani
CLI tool to help you manage multiple repositories.
- mc
Minio Client provides minimal tools to work with Amazon S3 compatible cloud storage and filesystems.
- mergo
Helper to merge structs and maps in Golang. Useful for configuration default values, avoiding messy if-statements.
- mimemagic
Pure Go ultra performant MIME sniffing library/utility.
- mimetype
Package for MIME type detection based on magic numbers.
- minify
Fast minifiers for HTML, CSS, JS, XML, JSON and SVG file formats.
- minquery
MongoDB / mgo.v2 query that supports efficient pagination (cursors to continue listing documents where we left off).
- moldova
Utility for generating random data based on an input template.
- mole
cli app to easily create ssh tunnels.
- mongo-go-pagination
Mongodb Pagination for official mongodb/mongo-go-driver package which supports both normal queries and Aggregation pipelines.
- mssqlx
Database client library, proxy for any master slave, master master structures. Lightweight and auto balancing in mind.
- multitick
Multiplexor for aligned tickers.
- netbug
Easy remote profiling of your services.
- nfdump
Read nfdump netflow files.
- nostromo
CLI for building powerful aliases.
- okrun
go run error steamroller.
- olaf
Twitter Snowflake implemented in Go.
- onecache
Caching library with support for multiple backend stores (Redis, Memcached, filesystem etc).
- optional
Optional struct fields and vars.
- panicparse
Groups similar goroutines and colorizes stack dump.
- pattern-match
Pattern matching library.
- peco
Simplistic interactive filtering tool.
- pgo
Convenient functions for PHP community.
- pm
Process (i.e. goroutine) manager with an HTTP API.
- pointer
Package pointer contains helper routines for simplifying the creation of optional fields of basic type.
- ptr
Package that provide functions for simplified creation of pointers from constants of basic types.
- rate
High-performance rate limiting library with token bucket and AIMD strategies.
- rclient
Readable, flexible, simple-to-use client for REST APIs.
- release
CLI for Keep-a-changelog formatted changelogs.
- remote-touchpad
Control mouse and keyboard from a smartphone.
- repeat
Go implementation of different backoff strategies useful for retrying operations and heartbeating.
- request
Go HTTP Requests for Humans™.
- rerun
Recompiling and rerunning go apps when source changes.
- rest-go
A package that provide many helpful methods for working with rest api.
- retro
Handy retry-on-error library with extensive flexibility (backoff strategies, caps, etc).
- retry
The most advanced functional mechanism to perform actions repetitively until successful.
- retry
A simple but highly configurable retry package for Go.
- retry
Simple and easy retry mechanism package for Go.
- retry
A pretty simple library to ensure your work to be done.
- retry-go
Simple library for retry mechanism.
- retry-go
Retrying made simple and easy for golang.
- robustly
Runs functions resiliently, catching and restarting panics.
- rospo
Simple and reliable ssh tunnels with embedded ssh server in Golang.
- scan
Scan golang
sql.Rowsdirectly to structs, slices, or primitive types. - scan
Scan sql rows into any type powered by generics.
- scany
Library for scanning data from a database into Go structs and more.
- serve
A static http server anywhere you need.
- sesh
Sesh is a CLI that helps you create and manage tmux sessions quickly and easily using zoxide.
- set
Performant and flexible struct mapping and loose type conversion.
- shutdown
App shutdown hooks for
os.Signalhandling. - silk
Read silk netflow files.
- slice
Type-safe functions for common Go slice operations.
- sliceconv
Slice conversion between primitive types.
- slicer
Makes working with slices easier.
- sorty
Fast Concurrent / Parallel Sorting.
- sqlx
provides a set of extensions on top of the excellent built-in database/sql package.
- sqlz
Extension for the database/sql package, adding named queries, struct scanning, and batch operations.
- sshman
SSH Manager for authorized_keys files on multiple remote servers.
- stacktower
Visualize dependency graphs as physical tower structures, inspired by XKCD #2347.
- statiks
Fast, zero-configuration, static HTTP filer server.
- Storm
Simple and powerful toolkit for BoltDB.
- structs
Implement simple functions to manipulate structs.
- throttle
Throttle is an object that will perform exactly one action per duration.
- tik
Simple and easy timing wheel package for Go.
- tome
Tome was designed to paginate simple RESTful APIs.
- toolbox
Slice, map, multimap, struct, function, data conversion utilities. Service router, macro evaluator, tokenizer.
- UNIS
Common Architecture™ for String Utilities in Go.
- upterm
A tool for developers to share terminal/tmux sessions securely over the web. It’s perfect for remote pair programming, accessing computers behind NATs/firewalls, remote debugging, and more.
- usql
usql is a universal command-line interface for SQL databases.
- util
Collection of useful utility functions. (strings, concurrency, manipulations, ...).
- watchhttp
Run command periodically and expose latest STDOUT or its rich delta as HTTP endpoint.
- wifiqr
Wi-Fi QR Code Generator.
- wuzz
Interactive cli tool for HTTP inspection.
- xferspdy
Xferspdy provides binary diff and patch library in golang.
- xpool
Yet another golang type safe object pool using generics.
- yogo
Check yopmail mails from command line.
UUID
14_ENTRIESLibraries for working with UUIDs.
- fastuuid
Fast generate UUIDv4 as string or bytes.
- goid
Generate and Parse RFC4122 compliant V4 UUIDs.
- gouid
Generate cryptographically secure random string IDs with just one allocation.
- guid
Fast cryptographically safe Guid generator for Go (~10x faster than
uuid). - nanoid
A tiny and efficient Go unique string ID generator.
- sno
Compact, sortable and fast unique IDs with embedded metadata.
- ulid
Go implementation of ULID (Universally Unique Lexicographically Sortable Identifier).
- uniq
No hassle safe, fast unique identifiers with commands.
- uuid
Generate, encode, and decode UUIDs v1 with fast or cryptographic-quality random node identifier.
- uuid
Implementation of Universally Unique Identifier (UUID). Supports both creation and parsing of UUIDs. Actively maintained fork of satori uuid.
- uuid
Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services.
- uuidcheck
A tiny, dependency-free Go library that validates UUIDs against standard RFC 4122 formatting, converts UUIDv7() into UTC timestamps.
- wuid
An extremely fast globally unique number generator.
- xid
Xid is a globally unique id generator library, ready to be safely used directly in your server code.
Validation
15_ENTRIESLibraries for validation.
- checkdigit
Provide check digit algorithms (Luhn, Verhoeff, Damm) and calculators (ISBN, EAN, JAN, UPC, etc.).
- go-validator
Validation library using Generics.
- gody
A lightweight struct validator for Go.
- govalid
Fast, tag-based validation for structs.
- govalidator
Validators and sanitizers for strings, numerics, slices and structs.
- govalidator
Validate Golang request data with simple rules. Highly inspired by Laravel's request validation.
- hvalid
hvalid is a lightweight validation library written in Go language. It provides a custom validator interface and a series of common validation functions to help developers quickly implement data validation.
- ozzo-validation
Supports validation of various data types (structs, strings, maps, slices, etc.) with configurable and extensible validation rules specified in usual code constructs instead of struct tags.
- validate
Go package for data validation and filtering. support validate Map, Struct, Request(Form, JSON, url.Values, Uploaded Files) data and more features.
- validate
This package provides a framework for writing validations for Go applications.
- validator
Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving.
- Validator
A lightweight model validator written in Go.Contains VFs:Min, Max, MinLength, MaxLength, Length, Enum, Regex.
- valix
Go package for validating requests
- Zog
A Zod inspired schema builder for runtime value parsing and validation. ⬆ back to top
Version Control
8_ENTRIESLibraries for version control.
- cli
An open-source GitLab command line tool bringing GitLab's cool features to your command line.
- froggit-go
Froggit-Go is a Go library, allowing to perform actions on VCS providers.
- git2go
Go bindings for libgit2.
- githooks
Per-repo and shared Git hooks with version control and auto update.
- go-git
highly extensible Git implementation in pure Go.
- go-vcs
manipulate and inspect VCS repositories in Go.
- hercules
gaining advanced insights from Git repository history.
- hgo
Hgo is a collection of Go packages providing read-access to local Mercurial repositories.
Video
11_ENTRIESLibraries for manipulating video.
- gmf
Go bindings for FFmpeg av* libraries.
- go-astiav
Better C bindings for ffmpeg in GO.
- go-astisub
Manipulate subtitles in GO (.srt, .stl, .ttml, .webvtt, .ssa/.ass, teletext, .smi, etc.).
- go-astits
Parse and demux MPEG Transport Streams (.ts) natively in GO.
- go-mpd
Parser and generator library for MPEG-DASH manifest files.
- goav
Comprehensive Go bindings for FFmpeg.
- gortsplib
Pure Go RTSP server and client library.
- hls-m3u8
Parser and generator for HLS (M3U8) playlists; kept up to date with the spec.
- libvlc-go
Go bindings for libvlc 2.X/3.X/4.X (used by the VLC media player).
- mp4ff
Library and tools for working with MP4 files containing video, audio, subtitles, or metadata.
- v4l
Video capture library for Linux, written in Go.
Web Frameworks
38_ENTRIESFull stack web frameworks.
- Atreugo
High performance and extensible micro web framework with zero memory allocations in hot paths.
- Barf
Basically, A Remarkable Framework for building JSON-based web APIs. It is entirely unobtrusive and re-invents no wheel. It is crafted such that getting started is easy and quick while being flexible enough for more complex use cases.
- Beego
beego is an open-source, high-performance web framework for the Go programming language.
- 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.
- Don
A highly performant and simple to use API framework.
- Echo
High performance, minimalist Go web framework.
- Fastschema
A flexible Go web framework and Headless CMS.
- Fiber
An Express.js inspired web framework build on Fasthttp.
- Flamingo
Framework for pluggable web projects. Including a concept for modules and offering features for DI, Configareas, i18n, template engines, graphql, observability, security, events, routing & reverse routing etc.
- Flamingo Commerce
Providing e-commerce features using clean architecture like DDD and ports and adapters, that you can use to build flexible e-commerce applications.
- Fuego
The framework for busy Go developers! Web framework generating OpenAPI 3 spec from source code.
- Gin
Gin is a web framework written in Go! It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity.
- Ginrpc
Gin parameter automatic binding tool,gin rpc tools.
- go-api-boot
A gRpc-first micro-service framework. Features include ODM support for Mongo, cloud resource support (AWS/Azure/Google), and a fluent dependency injection which is customized for gRpc. Additionally, grpc-web is supported directly, enabling browser access to all gRpc APIs without a proxy.
- Goa
Goa provides a holistic approach for developing remote APIs and microservices in Go.
- GoFr
Gofr is an opinionated microservice development framework.
- GoFrame
GoFrame is a modular, powerful, high-performance and enterprise-class application development framework of Golang.
- golamb
Golamb makes it easier to write API endpoints for use with AWS Lambda and API Gateway.
- Gone
A lightweight dependency injection and web framework inspired by Spring.
- goravel
A Laravel-inspired web framework with ORM, authentication, queue, task scheduling, and more built-in features.
- Goyave
Feature-complete REST API framework aimed at clean code and fast development, with powerful built-in functionalities.
- Hertz
A high-performance and strong-extensibility Go HTTP framework that helps developers build microservices.
- hiboot
hiboot is a high performance web application framework with auto configuration and dependency injection support.
- Huma
Framework for modern REST/GraphQL APIs with built-in OpenAPI 3, generated documentation, and a CLI.
- iWF
iWF is an all-in-one platform for developing long-running business processes. It offers a convenient abstraction for utilizing databases, ElasticSearch, message queues, durable timers, and more, with a clean, simple, and user-friendly interface.
- Lit
Highly performant declarative web framework for Golang, aiming for simplicity and quality of life.
- Microservice
The framework for the creation of microservices, written in Golang.
- patron
Patron is a microservice framework following best cloud practices with a focus on productivity.
- Pnutmux
Pnutmux is a powerful Go web framework that uses regex for matching and handling HTTP requests. It offers features such as CORS handling, structured logging, URL parameters extraction, middlewares, and concurrency limiting.
- Revel
High-productivity web framework for the Go language.
- rk-boot
A bootstrapper library for building enterprise go microservice with Gin and gRPC quickly and easily.
- Ronykit
Web framework with pluggable architecture and very performant.
- rux
Simple and fast web framework for build golang HTTP applications.
- templui
Modern UI Components for Go & Templ.
- uAdmin
Fully featured web framework for Golang, inspired by Django.
- WebGo
A micro-framework to build web apps with handler chaining, middleware, and context injection. With standard library-compliant HTTP handlers (i.e.,
http.HandlerFunc).. - Xun
Web framework built on Go's built-in html/template and net/http package’s router. It is designed to be lightweight, fast, and easy to use while providing a simple and intuitive API for building web applications with advanced features such as middleware, routing, and template rendering.
- Yokai
Simple, modular, and observable Go framework for backend applications.
Actual middlewares
12_ENTRIES- client-timing
An HTTP client for Server-Timing header.
- CORS
Easily add CORS capabilities to your API.
- echo-middleware
Middleware for Echo framework with logging and metrics.
- formjson
Transparently handle JSON input as a standard form POST.
- go-fault
Fault injection middleware for Go.
- Limiter
Dead simple rate limit middleware for Go.
- ln-paywall
Go middleware for monetizing APIs on a per-request basis with the Lightning Network (Bitcoin).
- mid
Miscellaneous HTTP middleware features: idiomatic error return from handlers; receive/respond with JSON data; request tracing; and more.
- rk-gin
Middleware for Gin framework with logging, metrics, auth, tracing etc.
- rk-grpc
Middleware for gRPC with logging, metrics, auth, tracing etc.
- Tollbooth
Rate limit HTTP request handler.
- XFF
Handle
X-Forwarded-Forheader and friends.
Libraries for creating HTTP middlewares
11_ENTRIES- alice
Painless middleware chaining for Go.
- catena
http.Handler wrapper catenation (same API as "chain").
- chain
Handler wrapper chaining with scoped data (net/context-based "middleware").
- gores
Go package that handles HTML, JSON, XML and etc. responses. Useful for RESTful APIs.
- interpose
Minimalist net/http middleware for golang.
- mediary
add interceptors to
http.Clientto allow dumping/shaping/tracing/... of requests/responses. - muxchain
Lightweight middleware for net/http.
- negroni
Idiomatic HTTP middleware for Golang.
- render
Go package for easily rendering JSON, XML, and HTML template responses.
- renderer
Simple, lightweight and faster response (JSON, JSONP, XML, YAML, HTML, File) rendering package for Go.
- stats
Go middleware that stores various information about your web application.
Routers
27_ENTRIES- alien
Lightweight and fast http router from outer space.
- bellt
A simple Go HTTP router.
- Bone
Lightning Fast HTTP Multiplexer.
- Bxog
Simple and fast HTTP router for Go. It works with routes of varying difficulty, length and nesting. And he knows how to create a URL from the received parameters.
- chi
Small, fast and expressive HTTP router built on net/context.
- fasthttprouter
High performance router forked from
httprouter. The first router fit forfasthttp. - FastRouter
a fast, flexible HTTP router written in Go.
- goblin
A golang http router based on trie tree.
- gocraft/web
Mux and middleware package in Go.
- Goji
Goji is a minimalistic and flexible HTTP request multiplexer with support for
net/context. - GoLobby/Router
GoLobby Router is a lightweight yet powerful HTTP router for the Go programming language.
- goroute
Simple yet powerful HTTP request multiplexer.
- GoRouter
GoRouter is a Server/API micro framework, HTTP request router, multiplexer, mux that provides request router with middleware supporting
net/context. - gowww/router
Lightning fast HTTP router fully compatible with the net/http.Handler interface.
- httprouter
High performance router. Use this and the standard http handlers to form a very high performance web framework.
- httptreemux
High-speed, flexible tree-based HTTP router for Go. Inspiration from httprouter.
- lars
Is a lightweight, fast and extensible zero allocation HTTP router for Go used to create customizable frameworks.
- mux
Powerful URL router and dispatcher for golang.
- nchi
chi-like router built on httprouter with dependency injection based middleware wrappers
- ngamux
Simple HTTP router for Go.
- ozzo-routing
An extremely fast Go (golang) HTTP router that supports regular expression route matching. Comes with full support for building RESTful APIs.
- pure
Is a lightweight HTTP router that sticks to the std "net/http" implementation.
- Siesta
Composable framework to write middleware and handlers.
- vestigo
Performant, stand-alone, HTTP compliant URL Router for go web applications.
- violetear
Go HTTP router.
- xmux
High performance muxer based on
httprouterwithnet/contextsupport. - xujiajun/gorouter
A simple and fast HTTP router for Go.
WebAssembly
7_ENTRIES- dom
DOM library.
- Extism Go SDK
Universal, cross-language WebAssembly framework for building plug-in systems and polyglot apps.
- go-canvas
Library to use HTML5 Canvas, with all drawing within go code.
- tinygo
Go compiler for small places. Microcontrollers, WebAssembly, and command-line tools. Based on LLVM.
- vert
Interop between Go and JS values.
- wasmbrowsertest
Run Go WASM tests in your browser.
- webapi
Bindings for DOM and HTML generated from WebIDL.
Webhooks Server
3_ENTRIES- webhook
Tool which allows user to create HTTP endpoints (hooks) that execute commands on the server.
- webhooked
A webhook receiver on steroids: handle, secure, format and store a Webhook payload has never been easier.
- WebhookX
A webhooks gateway for message receiving, processing, and reliable delivering.
Windows
3_ENTRIESWorkflow Frameworks
5_ENTRIESLibraries for creating Workflows.
- Cadence-client
A framework for authoring workflows and activities running on top of the Cadence orchestration engine made by Uber.
- Dagu
No-code workflow executor. it executes DAGs defined in a simple YAML format.
- go-dag
A framework developed in Go that manages the execution of workflows described by directed acyclic graphs.
- go-taskflow
A taskflow-like General-purpose Task-parallel Programming Framework with integrated visualizer and profiler.
- workflow
A tech stack agnostic Event Driven Workflow framework.
XML
6_ENTRIESLibraries and tools for manipulating XML.
- XML-Comp
Simple command line XML comparer that generates diffs of folders, files and tags.
- xml2map
XML to MAP converter written Golang.
- xmlquery
xmlquery is Golang XPath package for XML query.
- xmlwriter
Procedural XML generation API based on libxml2's xmlwriter module.
- xpath
XPath package for Go.
- zek
Generate a Go struct from XML.
Zero Trust
5_ENTRIESLibraries and tools to implement Zero Trust architectures.
- Cosign
Container Signing, Verification and Storage in an OCI registry.
- in-toto
Go implementation of the in-toto (provides a framework to protect the integrity of the software supply chain) python reference implementation.
- OpenZiti
A full, open source zero trust overlay network. Including numerous SDKs for numerous languages such as golang allowing you to embed zero trust principles directly into your applications. The OpenZiti Test Kitchen has numerous examples to draw inspiration from including a zero trust ssh client - zssh
- Spiffe-Vault
Utilizes Spiffe JWT authentication with Hashicorp Vault for secretless authentication.
- Spire
SPIRE (the SPIFFE Runtime Environment) is a toolchain of APIs for establishing trust between software systems across a wide variety of hosting platforms.
Code Analysis
32_ENTRIESSource code analysis tools, also known as Static Application Security Testing (SAST) Tools.
- apicompat
Checks recent changes to a Go project for backwards incompatible changes.
- asty
Converts golang AST to JSON and JSON to AST.
- blanket
blanket is a tool that helps you catch functions which don't have direct unit tests in your Go packages.
- ChainJacking
Find which of your Go lang direct GitHub dependencies is susceptible to ChainJacking attack.
- Chronos
Detects race conditions statically
- dupl
Tool for code clone detection.
- errcheck
Errcheck is a program for checking for unchecked errors in Go programs.
- fatcontext
Fatcontext detects nested contexts in loops or function literals.
- go-checkstyle
checkstyle is a style check tool like java checkstyle. This tool inspired by java checkstyle, golint. The style referred to some points in Go Code Review Comments.
- go-cleanarch
go-cleanarch was created to validate Clean Architecture rules, like a The Dependency Rule and interaction between packages in your Go projects.
- go-critic
source code linter that brings checks that are currently not implemented in other linters.
- go-mod-outdated
An easy way to find outdated dependencies of your Go projects.
- goast-viewer
Web based Golang AST visualizer.
- goimports
Tool to fix (add, remove) your Go imports automatically.
- golang-ifood-sdk
iFood API SDK.
- golangci-lint
A fast Go linters runner. It runs linters in parallel, uses caching, supports
yamlconfig, has integrations with all major IDE and has dozens of linters included. - golines
Formatter that automatically shortens long lines in Go code.
- GoPlantUML
Library and CLI that generates text plantump class diagram containing information about structures and interfaces with the relationship among them.
- goreturns
Adds zero-value return statements to match the func return types.
- gostatus
Command line tool, shows the status of repositories that contain Go packages.
- lint
Run linters as part of go test.
- php-parser
A Parser for PHP written in Go.
- revive
~6x faster, stricter, configurable, extensible, and beautiful drop-in replacement for
golint. - staticcheck
staticcheck is
go veton steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#. - testifylint
A linter that checks usage of github.com/stretchr/testify.
- tickgit
CLI and go package for surfacing code comment TODOs (in any language) and applying a
git blameto identify the author. - todocheck
Static code analyser which links TODO comments in code with issues in your issue tracker.
- unconvert
Remove unnecessary type conversions from Go source.
- usestdlibvars
A linter that detect the possibility to use variables/constants from the Go standard library.
- vacuum
An ultra-super-fast, lightweight OpenAPI linter and quality checking tool.
- validate
Automatically validates struct fields with tags.
- wrapcheck
A linter to check that errors from external packages are wrapped.
Editor Plugins
13_ENTRIESPlugin for text editors and IDEs.
- coc-go language server extension for Vim/Neovim
This plugin adds gopls features to Vim/Neovim.
- Go Doc
A Visual Studio Code extension for showing definition in output and generating go doc.
- Go plugin for JetBrains IDEs
Go plugin for JetBrains IDEs.
- go-mode
Go mode for GNU/Emacs.
- gocode
Autocompletion daemon for the Go programming language.
- goimports-reviser
Formatting tool for imports.
- goprofiling
This extension adds benchmark profiling support for the Go language to VS Code.
- GoSublime
Golang plugin collection for the text editor SublimeText 3 providing code completion and other IDE-like features.
- gounit-vim
Vim plugin for generating Go tests based on the function's or method's signature.
- vim-compiler-go
Vim plugin to highlight syntax errors on save.
- vim-go
Go development plugin for Vim.
- vscode-go
Extension for Visual Studio Code (VS Code) which provides support for the Go language.
- Watch
Runs a command in an acme win on file changes.
Go Generate Tools
13_ENTRIES- envdoc
generate documentation for environment variables from Go source files.
- generic
flexible data type for Go.
- gocontracts
brings design-by-contract to Go by synchronizing the code with the documentation.
- godal
Generate orm models corresponding to golang by specifying sql ddl file, which can be used by gorm.
- gonerics
Idiomatic Generics in Go.
- gotests
Generate Go tests from your source code.
- gounit
Generate Go tests using your own templates.
- hasgo
Generate Haskell inspired functions for your slices.
- options-gen
Functional options described by Dave Cheney's post "Functional options for friendly APIs".
- re2dfa
Transform regular expressions into finite state machines and output Go source code.
- sqlgen
Generate gorm, xorm, sqlx, bun, sql code from SQL file or DSN.
- TOML-to-Go
Translates TOML into a Go type in the browser instantly.
- xgen
XSD (XML Schema Definition) parser and Go/C/Java/Rust/TypeScript code generator.
Go Tools
21_ENTRIES- decouple
Find “overspecified” function parameters that could be generalized with interface types.
- docs
Automatically generate RESTful API documentation for GO projects - aligned with Open API Specification standard.
- go-callvis
Visualize call graph of your Go program using dot format.
- go-size-analyzer
Analyze and visualize the size of dependencies in compiled Golang binaries, providing insight into their impact on the final build.
- go-swagger
Swagger 2.0 implementation for go. Swagger is a simple yet powerful representation of your RESTful API.
- go-template-playground
An interactive environment to create and test Go templates.
- godbg
Implementation of Rusts
dbg!macro for quick and easy debugging during development. - gomodrun
Go tool that executes and caches binaries included in go.mod files.
- gotemplate.io
Online tool to preview
text/templatetemplates live. - gotestdox
Show Go test results as readable sentences.
- gothanks
GoThanks automatically stars your go.mod github dependencies, sending this way some love to their maintainers.
- gotutor
Online Go Debugger & Visualizer.
- igo
An igo to go transpiler (new language features for Go language!)
- MoniGO
A performance monitoring library for Go applications. It provides real-time insights into application performance! 🚀
- OctoLinker
Navigate through go files efficiently with the OctoLinker browser extension for GitHub.
- richgo
Enrich
go testoutputs with text decorations. - roumon
Monitor current state of all active goroutines via a command line interface.
- rts
RTS: response to struct. Generates Go structs from server responses.
- textra
Extract Go struct field names, types and tags for filtering and exporting.
- typex
Examine Go types and their transitive dependencies, alternatively export results as TypeScript value objects (or types) declaration.
DevOps Tools
97_ENTRIES- abbreviate
abbreviate is a tool turning long strings in to shorter ones with configurable separators, for example to embed branch names in to deployment stack IDs.
- alaz
Effortless, Low-Overhead, eBPF-based Kubernetes Monitoring.
- aptly
aptly is a Debian repository management tool.
- aurora
Cross-platform web-based Beanstalkd queue server console.
- awsenv
Small binary that loads Amazon (AWS) environment variables for a profile.
- Balerter
A self-hosted script-based alerting manager.
- Blast
A simple tool for API load testing and batch jobs.
- bombardier
Fast cross-platform HTTP benchmarking tool.
- cassowary
Modern cross-platform HTTP load-testing tool written in Go.
- chaosmonkey
A resiliency tool that helps applications tolerate random instance failures.
- Ddosify
High-performance load testing tool, written in Golang.
- decompose
tool to generate and process Docker containers connections graphs.
- DepCharge
Helps orchestrating the execution of commands across the many dependencies in larger projects.
- dish
A lightweight, remotely configurable monitoring service.
- Docker
Open platform for distributed applications for developers and sysadmins.
- docker-go-mingw
Docker image for building Go binaries for Windows with MinGW toolchain.
- docker-volume-backup
Backup Docker volumes locally or to any S3, WebDAV, Azure Blob Storage, Dropbox or SSH compatible storage.
- Dockerfile-Generator
A go library and an executable that produces valid Dockerfiles using various input channels.
- dogo
Monitoring changes in the source file and automatically compile and run (restart).
- drone-jenkins
Trigger downstream Jenkins jobs using a binary, docker or Drone CI.
- drone-scp
Copy files and artifacts via SSH using a binary, docker or Drone CI.
- Dropship
Tool for deploying code via cdn.
- easyssh-proxy
Golang package for easy remote execution through SSH and SCP downloading via
ProxyCommand. - fac
Command-line user interface to fix git merge conflicts.
- Flannel
Flannel is a network fabric for containers, designed for Kubernetes.
- Fleet device management
Lightweight, programmable telemetry for servers and workstations.
- gaia
Build powerful pipelines in any programming language.
- ghorg
Quickly clone an entire org/users repositories into one directory - Supports GitHub, GitLab, Gitea, and Bitbucket.
- Gitea
Fork of Gogs, entirely community driven.
- gitea-github-migrator
Migrate all your GitHub repositories, issues, milestones and labels to your Gitea instance.
- go-furnace
Hosting solution written in Go. Deploy your Application with ease on AWS, GCP or DigitalOcean.
- go-rocket-update
A simple way to make self updating Go applications - Supports Github and Gitlab.
- go-selfupdate
Enable your Go applications to self update.
- gobrew
gobrew lets you easily switch between multiple versions of go.
- gobrew
Go version manager. Super simple tool to install and manage Go versions. Install go without root. Gobrew doesn't require shell rehash.
- godbg
Web-based gdb front-end application.
- Gogs
A Self Hosted Git Service in the Go Programming Language.
- goma-gateway
A Lightweight API Gateway and Reverse Proxy with declarative config, robust middleware, and support for REST, GraphQL, TCP, UDP, and gRPC.
- gonative
Tool which creates a build of Go that can cross compile to all platforms while still using the Cgo-enabled versions of the stdlib packages.
- govvv
“go build” wrapper to easily add version information into Go binaries.
- grapes
Lightweight tool designed to distribute commands over ssh with ease.
- GVM
GVM provides an interface to manage Go versions.
- Hey
Hey is a tiny program that sends some load to a web application.
- httpref
httpref is a handy CLI reference for HTTP methods, status codes, headers, and TCP and UDP ports.
- jcli
Jenkins CLI allows you manage your Jenkins as an easy way.
- k0s
Zero Friction Kubernetes distribution.
- k3d
Little helper to run CNCF's k3s in Docker.
- k3s
Lightweight Kubernetes.
- k6
A modern load testing tool, using Go and JavaScript.
- k9s
Kubernetes CLI to manage your clusters in style.
- kala
Simplistic, modern, and performant job scheduler.
- kcli
Command line tool for inspecting kafka topics/partitions/messages.
- kind
Kubernetes IN Docker - local clusters for testing Kubernetes.
- ko
Command line tool for building and deploying Go applications on Kubernetes
- kool
Command line tool for managing Docker environments as an easy way.
- kubeblocks
KubeBlocks is an open-source control plane that runs and manages databases, message queues and other data infrastructure on K8s.
- kubernetes
Container Cluster Manager from Google.
- kubeshark
API traffic analyzer for Kubernetes, inspired by Wireshark, purposely built for Kubernetes.
- KubeVela
Cloud native application delivery.
- KubeVPN
KubeVPN offers a Cloud-Native Dev Environment that seamlessly connects to your Kubernetes cluster network.
- KusionStack
A unified programmable configuration techstack to deliver modern app in 'platform as code' and 'infra as code' approach.
- kwatch
Monitor & detect crashes in your Kubernetes(K8s) cluster instantly.
- lstags
Tool and API to sync Docker images across different registries.
- lwc
A live-updating version of the UNIX wc command.
- manssh
manssh is a command line tool for managing your ssh alias config easily.
- Mantil
Go specific framework for building serverless applications on AWS that enables you to focus on pure Go code while Mantil takes care of the infrastructure.
- minikube
Run Kubernetes locally.
- Moby
Collaborative project for the container ecosystem to assemble container-based systems.
- Mora
REST server for accessing MongoDB documents and meta data.
- ostent
collects and displays system metrics and optionally relays to Graphite and/or InfluxDB.
- Packer
Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
- Pewpew
Flexible HTTP command line stress tester.
- PipeCD
A GitOps-style continuous delivery platform that provides consistent deployment and operations experience for any applications.
- podinfo
Podinfo is a tiny web application made with Go that showcases best practices of running microservices in Kubernetes. Podinfo is used by CNCF projects like Flux and Flagger for end-to-end testing and workshops.
- podman-tui
Terminal UI for Podman management.
- Pomerium
Pomerium is an identity-aware access proxy.
- Rodent
Rodent helps you manage Go versions, projects and track dependencies.
- s3-proxy
S3 Proxy with GET, PUT and DELETE methods and authentication (OpenID Connect and Basic Auth).
- s3gof3r
Small utility/library optimized for high speed transfer of large objects into and out of Amazon S3.
- s5cmd
Blazing fast S3 and local filesystem execution tool.
- Scaleway-cli
Manage BareMetal Servers from Command Line (as easily as with Docker).
- script
Making it easy to write shell-like scripts in Go for DevOps and system administration tasks.
- sg
Benchmarks a set of HTTP endpoints (like ab), with possibility to use the response code and data between each call for specific server stress based on its previous response.
- sigma
OCI-native container image registry, support OCI-native artifact, scan artifact, image build etc.
- skm
SKM is a simple and powerful SSH Keys Manager, it helps you to manage your multiple SSH keys easily!
- StatusOK
Monitor your Website and REST APIs.Get Notified through Slack, E-mail when your server is down or response time is more than expected.
- tau
Easily build Cloud Computing Platforms with features like Serverless WebAssembly Functions, Frontend Hosting, CI/CD, Object Storage, K/V Database, and Pub-Sub Messaging.
- terraform-provider-openapi
Terraform provider plugin that dynamically configures itself at runtime based on an OpenAPI document (formerly known as swagger file) containing the definitions of the APIs exposed.
- tf-profile
Profiler for Terraform runs. Generate global stats, resource-level stats or visualizations.
- tlm
Local cli copilot, powered by CodeLLaMa
- traefik
Reverse proxy and load balancer with support for multiple backends.
- trubka
A CLI tool to manage and troubleshoot Apache Kafka clusters with the ability of generically publishing/consuming protocol buffer and plain text events to/from Kafka.
- uTask
Automation engine that models and executes business processes declared in yaml.
- Vegeta
HTTP load testing tool and library. It's over 9000!
- wait-for
Wait for something to happen (from the command line) before continuing. Easy orchestration of Docker services and other things.
- Wide
Web-based IDE for Teams using Golang.
- winrm-cli
Cli tool to remotely execute commands on Windows machines.
Other Software
72_ENTRIESWhere to discover new Go libraries.
- Better Go Playground
Go playground with syntax highlight, code completion and other features.
- blocky
Fast and lightweight DNS proxy as ad-blocker for local network with many features.
- bluetuith
TUI Bluetooth manager for Linux.
- borg
Terminal based search engine for bash snippets.
- boxed
Dropbox based blog engine.
- Chapar
Chapar is a a cross-platform Postman alternative built with go, aims to help developers to test their api endpoints. it support http and grpc protocols.
- Cherry
Tiny webchat server in Go.
- Circuit
Circuit is a programmable platform-as-a-service (PaaS) and/or Infrastructure-as-a-Service (IaaS), for management, discovery, synchronization and orchestration of services and hosts comprising cloud applications.
- Comcast
Simulate bad network connections.
- confd
Manage local application configuration files using templates and data from etcd or consul.
- crawley
Web scraper/crawler for cli.
- croc
Easily and securely send files or folders from one computer to another.
- Documize
Modern wiki software that integrates data from SaaS tools.
- dp
Through SDK for data exchange with blockchain, developers can get easy access to DAPP development.
- drive
Google Drive client for the commandline.
- Duplicacy
A cross-platform network and cloud backup tool based on the idea of lock-free deduplication.
- fjira
A fuzzy-search based terminal UI application for Attlasian Jira
- Gebug
A tool that makes debugging of Dockerized Go applications super easy by enabling Debugger and Hot-Reload features, seamlessly.
- gfile
Securely transfer files between two computers, without any third party, over WebRTC.
- Go Package Store
App that displays updates for the Go packages in your GOPATH.
- go-peerflix
Video streaming torrent client.
- goblin
Cloud builder for CLI's written in go lang
- GoBoy
Nintendo Game Boy Color emulator written in Go.
- gocc
Gocc is a compiler kit for Go written in Go.
- GoDocTooltip
Chrome extension for Go Doc sites, which shows function description as tooltip at function list.
- Gokapi
Lightweight server to share files, which expire after a set amount of downloads or days. Similar to Firefox Send, but without public upload.
- GoLand
Full featured cross-platform Go IDE.
- GoNB
Interactive Go programming with Jupyter Notebooks (also works in VSCode, Binder and Google's Colab).
- Gor
Http traffic replication tool, for replaying traffic from production to stage/dev environments in real-time.
- Guora
A self-hosted Quora like web application written in Go.
- hoofli
Generate PlantUML diagrams from Chrome or Firefox network inspections.
- hotswap
A complete solution to reload your go code without restarting your server, interrupting or blocking any ongoing procedure.
- hugo
Fast and Modern Static Website Engine.
- ide
Browser accessible IDE. Designed for Go with Go.
- joincap
Command-line utility for merging multiple pcap files together.
- JuiceFS
Distributed POSIX file system built on top of Redis and AWS S3.
- Juju
Cloud-agnostic service deployment and orchestration - supports EC2, Azure, Openstack, MAAS and more.
- Layli
Draw pretty layout diagrams as code.
- Leaps
Pair programming service using Operational Transforms.
- lgo
Interactive Go programming with Jupyter. It supports code completion, code inspection and 100% Go compatibility.
- limetext
Lime Text is a powerful and elegant text editor primarily developed in Go that aims to be a Free and open-source software successor to Sublime Text.
- LiteIDE
LiteIDE is a simple, open source, cross-platform Go IDE.
- mockingjay
Fake HTTP servers and consumer driven contracts from one configuration file. You can also make the server randomly misbehave to help do more realistic performance tests.
- myLG
Command Line Network Diagnostic tool written in Go.
- naclpipe
Simple NaCL EC25519 based crypto pipe tool written in Go.
- Neo-cowsay
🐮 cowsay is reborn. for a New Era.
- nes
Nintendo Entertainment System (NES) emulator written in Go.
- Orbit
A simple tool for running commands and generating files from templates.
- peg
Peg, Parsing Expression Grammar, is an implementation of a Packrat parser generator.
- Plik
Plik is a temporary file upload system (Wetransfer like) in Go.
- portal
Portal is a quick and easy command-line file transfer utility from any computer to another.
- restic
De-duplicating backup program.
- sake
sake is a command runner for local and remote hosts.
- scc
Sloc Cloc and Code, a very fast accurate code counter with complexity calculations and COCOMO estimates.
- Seaweed File System
Fast, Simple and Scalable Distributed File System with O(1) disk seek.
- shell2http
Executing shell commands via http server (for prototyping or remote control).
- Snitch
Simple way to notify your team and many tools when someone has deployed any application via Tsuru.
- sonic
Sonic is a Go Blogging Platform. Simple and Powerful.
- Stack Up
Stack Up, a super simple deployment tool - just Unix - think of it like 'make' for a network of servers.
- stew
An independent package manager for compiled binaries.
- syncthing
Open, decentralized file synchronization tool and protocol.
- tcpdog
eBPF based TCP observability.
- tinycare-tui
Small terminal app that shows git commits from the last 24 hours and week, current weather, some self care advice, a joke, and you current todo list tasks.
- toxiproxy
Proxy to simulate network and system conditions for automated tests.
- tsuru
Extensible and open source Platform as a Service software.
- vaku
CLI & API for folder-based functions in Vault like copy, move, and search.
- vFlow
High-performance, scalable and reliable IPFIX, sFlow and Netflow collector.
- Wave Terminal
Wave is an open-source, AI-native terminal built for seamless developer workflows with inline rendering, a modern UI, and persistent sessions.
- wellington
Sass project management tool, extends the language with sprite functions (like Compass).
- woke
Detect non-inclusive language in your source code.
- yai
AI powered terminal assistant.
- zs
an extremely minimal static site generator.
Benchmarks
15_ENTRIES- autobench
Framework to compare the performance between different Go versions.
- go-benchmark-app
Powerful HTTP-benchmark tool mixed with Аb, Wrk, Siege tools. Gathering statistics and various parameters for benchmarks and comparison results.
- go-benchmarks
Few miscellaneous Go microbenchmarks. Compare some language features to alternative approaches.
- go-http-routing-benchmark
Go HTTP request router benchmark and comparison.
- go-json-benchmark
Go JSON benchmark.
- go-ml-benchmarks
benchmarks for machine learning inference in Go.
- go-web-framework-benchmark
Go web framework benchmark.
- go_serialization_benchmarks
Benchmarks of Go serialization methods.
- gocostmodel
Benchmarks of common basic operations for the Go language.
- golang-benchmarks
a collection of golang benchmarks.
- golang-sql-benchmark
Collection of benchmarks for popular Go database/SQL utilities.
- gospeed
Go micro-benchmarks for calculating the speed of language constructs.
- kvbench
Key/Value database benchmark.
- skynet
Skynet 1M threads microbenchmark.
- speedtest-resize
Compare various Image resize algorithms for the Go language.
Conferences
15_ENTRIES- GoCon
Tokyo, Japan.
- GoDays
Berlin, Germany.
- GoLab
Florence, Italy.
- GopherChina
Shanghai, China.
- GopherCon
Varied Locations Each Year, USA.
- GopherCon Australia
Sydney, Australia.
- GopherCon Brazil
Florianópolis, Brazil.
- GopherCon Europe
Berlin, Germany.
- GopherCon India
Pune, India.
- GopherCon Israel
Tel Aviv, Israel.
- GopherCon Russia
Moscow, Russia.
- GopherCon Singapore
Mapletree Business City, Singapore.
- GopherCon UK
London, UK.
- GopherCon Vietnam
Ho Chi Minh City, Vietnam.
- GoWest Conference
Lehi, USA.
E-books for purchase
15_ENTRIES- Black Hat Go
Go programming for hackers and pentesters.
- Continuous Delivery in Go
This practical guide to continuous delivery shows you how to rapidly establish an automated pipeline that will improve your testing, code quality, and final product.
- Creative DIY Microcontroller Project With TinyGo and WebAssembly
An introduction into the TinyGo compiler with projects involving Arduino and WebAssembly.
- Effective Go: Elegant, efficient, and testable code
Unlock Go’s unique perspective on program design, and start writing simple, maintainable, and testable Go code.
- For the Love of Go
An introductory book for Go beginners.
- Go in Practice, Second Edition
Your practical guide on the ins-and-outs of Go development, covering the standard library and the most important tools from Go’s powerful ecosystem.
- Know Go: Generics
A guide to understanding and using generics in Go.
- Lets-Go
A step-by-step guide to creating fast, secure and maintanable web applications with Go.
- Lets-Go-Further
Advanced patterns for building APIs and web applications in Go.
- The Power of Go: Tests
A guide to testing in Go.
- The Power of Go: Tools
A guide to writing command-line tools in Go.
- Writing An Interpreter In Go
Book that introduces dozens of techniques for writing idiomatic, expressive, and efficient Go code that avoids common pitfalls.
Free e-books
20_ENTRIES- Build a blockchain from scratch in Go with gRPC
The foundational and practical guide for effectively learning and progressively building a blockchain from scratch in Go with gRPC.
- Go 101
A book focusing on Go syntax/semantics and all kinds of details.
- Go AST Book (Chinese)
A book focusing on Go
go/*packages. - Go Faster
This book seeks to shorten your learning curve and help you become a proficient Go programmer, faster.
- Go Succinctly
in Persian.
- Go with the domain
A book showing how to apply DDD, Clean Architecture, and CQRS by practical refactoring.
- GoBooks
A curated list of Go books.
- How To Code in Go eBook
A 600 page introduction to Go aimed at first time developers.
Gophers
11_ENTRIES- Free Gophers Pack
Gopher graphics pack by Maria Letta with illustrations and emotional characters in vector and raster.
- Go-gopher-Vector
Go gopher Vector Data [.ai, .svg].
- gopher-logos
adorable gopher logos.
- gopherize.me
Gopherize yourself.
- gophers
Gopher artworks by Ashley McNamara.
- gophers
Free gophers.
- gophers
random gopher graphics.
- gophers
Gopher amigurumi toy pattern.
- gophers
Gophers by Aurélie Vache.
Meetups
65_ENTRIESAdd the group of your city/country here (send PR)
Style Guides
8_ENTRIESWebsites
34_ENTRIES- Awesome Go @LibHunt
Your go-to Go Toolbox.
- Awesome Golang Workshops
A curated list of awesome golang workshops.
- Awesome Remote Job
Curated list of awesome remote jobs. A lot of them are looking for Go hackers.
- awesome-awesomeness
List of other amazingly awesome lists.
- awesome-go-extra
Parse awesome-go README file and generate a new README file with repo info.
- Code with Mukesh
Software Engineer and Blogs @ codewithmukesh.com.
- Coding Mystery
Solve exciting escape-room-inspired programming challenges using Go.
- CodinGame
Learn Go by solving interactive tasks using small games as practical examples.
- Go Blog
The official Go blog.
- Go Code Club
A group of Gophers read and discuss a different Go project every week.
- Go Community on Hashnode
Community of Gophers on Hashnode.
- Go Forum
Forum to discuss Go.
- Go Projects
List of projects on the Go community wiki.
- Go Proverbs
Go Proverbs by Rob Pike.
- Go Report Card
A report card for your Go package.
- go.dev
A hub for Go developers.
- gocryforhelp
Collection of Go projects that needs help. Good place to start your open-source way in Go.
- Golang Developer Jobs
Developer Jobs exclusively for Golang related Roles.
- Golang News
Links and news about Go programming.
- Golang Nugget
A weekly roundup of the best Go content, delivered to your inbox every Monday.
- Golang Weekly
Each monday projects, tutorials and articles about Go.
- golang-nuts
Go mailing list.
- Google Plus Community
The Google+ community for #golang enthusiasts.
- Gopher Community Chat
Join Our New Slack Community For Gophers (Understand how it came).
- Gophercises
Free coding exercises for budding gophers.
- json2go
Advanced JSON to Go struct conversion - online tool.
- justforfunc
Youtube channel dedicated to Go programming language tips and tricks, hosted by Francesc Campoy @francesc.
- Learn Go Programming
Learn Go concepts with illustrations.
- Libs.tech
Awesome Go libraries and hidden gems
- pkg.go.dev
Documentation for open source Go packages.
- studygolang
The community of studygolang in China.
- Trending Go repositories on GitHub today
Good place to find new Go libraries.
Tutorials
47_ENTRIES- 50 Shades of Go
Traps, Gotchas, and Common Mistakes for New Golang Devs.
- A Comprehensive Guide to Structured Logging in Go
Delve deep into the world of structured logging in Go with a specific focus on recently accepted slog proposal which aims to bring high performance structured logging with levels to the standard library.
- A Guide to Golang E-Commerce
Building a Golang site for e-commerce (demo included).
- A Tour of Go
Interactive tour of Go.
- Build a Database in 1000 lines of code
Build a NoSQL Database From Zero in 1000 Lines of Code.
- Build web application with Golang
Golang ebook intro how to build a web app with golang.
- Building and Testing a REST API in Go with Gorilla Mux and PostgreSQL
We’ll write an API with the help of the powerful Gorilla Mux.
- Building Go Web Applications and Microservices Using Gin
Get familiar with Gin and find out how it can help you reduce boilerplate code and build a request handling pipeline.
- Caching Slow Database Queries
How to cache slow database queries.
- Canceling MySQL
How to cancel MySQL queries.
- CodeCrafters Golang Track
Achieve mastery in advanced Go by building your own Redis, Docker, Git, and SQLite. Featuring goroutines, systems programming, file I/O, and more.
- Design Patterns in Go
Collection of programming design patterns implemented in Go.
- Games With Go
A video series teaching programming and game development.
- Go By Example
Hands-on introduction to Go using annotated example programs.
- Go Cheat Sheet
Go's reference card.
- Go database/sql tutorial
Introduction to database/sql.
- Go in 7 days
Learn everything about Go in 7 days (from a Nodejs developer).
- Go Language Tutorial
Learn Go language Tutorial.
- Go Tutorial
Learn Go programming.
- go-clean-template
Clean Architecture template for Golang services.
- go-patterns
Curated list of Go design patterns, recipes and idioms.
- Golang for Node.js Developers
Examples of Golang compared to Node.js for learning.
- Golang Tutorial Guide
A List of Free Courses to Learn the Go Programming Language.
- golang-examples
Many examples to learn Golang.
- Golangbot
Tutorials to get started with programming in Go.
- GopherCoding
Collection of code snippets and tutorials to help tackle every day issues.
- GopherSnippets
Code snippets with tests and testable examples for the Go programming language.
- Gosamples
Collection of code snippets that let you solve everyday code problems.
- GraphQL with Go
Learn how to create a Go GraphQL server and client with code generation. Also includes creating REST endpoints.
- Hackr.io
Learn Go from the best online golang tutorials submitted & voted by the golang programming community.
- Hex Monscape
Getting started guidelines in writing maintainable code using Hexagonal Architecture.
- How to Benchmark: dbq vs sqlx vs GORM
Learn how to benchmark in Go. As a case-study, we will benchmark dbq, sqlx and GORM.
- How To Deploy a Go Web Application with Docker
Learn how to use Docker for Go development and how to build production Docker images.
- How to Implement Role-Based Access Control (RBAC) Authorization in Golang
A guide to implementing Role-Based Access Control (RBAC) in Golang, including code examples, covering various methods to secure app endpoints with role-based authorization.
- How to Use Godog for Behavior-driven Development in Go
Get started with Godog - a Behavior-driven development framework for building and testing Go applications.
- Learn Go with 1000+ Exercises
Learn Go with thousands of examples, exercises, and quizzes.
- Learn Go with TDD
Learn Go with test-driven development.
- Learning Go by examples
Series of articles in order to learn Golang language by concrete applications as example.
- Microservices with Go
Dive deep into building microservices using Go, including gRPC.
- package main
YouTube channel about Programming in Go.
- Programming with Google Go
Coursera Specialization to learn about Go from scratch.
- Scaling Go Applications
Everything about building, deploying and scaling Go applications in production.
- Understanding Go in a visual way
Learn Go visually
- W3basic Go Tutorials
W3Basic provides an in-depth tutorial and well-organized content to learn Golang programming.
- Your basic Go
Huge collection of tutorials and how to's.
Guided Learning
4_ENTRIES- The Go Developer Roadmap
A visual roadmap that new Go developers can follow through to help them learn Go.
- The Go Interview Practice
A GitHub repository offering coding challenges for Go technical interview preparation.
- The Go Learning Path
A guided learning path containing a mix of free and premium resources.
- The Go Skill Tree
A structured learning path that combines both free and premium resources.