awesome-go-plus
A curated list of awesome Go frameworks, libraries and software
https://github.com/jayecc/awesome-go-plus
Last synced: 5 days ago
JSON representation
-
Command Line
-
Standard CLI
- 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. 
- Dnote - A simple command line notebook with multi-device sync. 
- elvish - An expressive programming language and a versatile interactive shell. 
- env - Tag-based environment configuration for structs. 
- flag - Simple but powerful command line option parsing library for Go supporting subcommand. 
- flaggy - A robust and idiomatic flags package with excellent subcommand support. 
- flagvar - A collection of flag argument types for Go's standard `flag` package. 
- go-arg - Struct-based argument parsing in Go. 
- go-commander - Go library to simplify CLI workflow. 
- go-flags - go command line option parser. 
- go-getoptions - Go option parser inspired by the flexibility of Perl’s GetOpt::Long. 
- gocmd - Go library for building command line applications. 
- 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. 
- mitchellh/cli - Go library for implementing command-line interfaces. 
- 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. 
- 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. 
- sand - Simple API for creating interpreters and so much more. 
- strumt - Library to create prompt chain. 
- subcmd - Another approach to parsing and running subcommands. Works alongside the standard `flag` package. 
- teris-io/cli - Simple and complete API for building command line interfaces in Go. 
- ts - Timestamp convert & compare tool. 
- ukautz/clif - Small command line interface framework. 
- urfave/cli - Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli). 
- 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. 
- hashicorp/cli - Go library for implementing command-line interfaces. 
- console - loop application library for Cobra commands, with oh-my-posh prompts, and more. 
- getopt - An accurate Go `getopt`, validated against the GNU libc implementation. 
- sflags - Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin, and other libraries. 
- carapace-bin - Multi-shell multi-command argument completer. 
- carapace-spec - Define simple completions using a spec file. 
- getopt - An accurate Go `getopt`, validated against the GNU libc implementation. 
-
-
Conferences
-
Other Software
- 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 UK - London, UK.
- GopherCon Vietnam - Ho Chi Minh City, Vietnam.
- GoWest Conference - Lehi, USA.
- GopherCon Russia - Moscow, Russia.
-
-
Configuration
-
Standard CLI
- aconfig - Simple, useful and opinionated config loader. 
- 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. 
- configure - Provides configuration through multiple sources, including JSON, flags and environment variables. 
- configuro - opinionated configuration loading & validation framework from ENV and Files focused towards 12-Factor compliant applications. 
- 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. 
- env - Parse environment variables to Go structs (with defaults). 
- env - An environment utility package with support for unmarshaling into structs 
- envconfig - Read your configuration from environment variables. 
- envh - Helpers to manage environment variables. 
- fig - Tiny library for reading configuration from a file and from environment variables (with validation & defaults). 
- 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-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. 
- goConfig - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file.
- godotenv - Go port of Ruby's dotenv library (Loads environment variables from `.env`). 
- gofigure - Go application configuration made easy. 
- 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. 
- 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. 
- hjson - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments. 
- hocon - Configuration library for working with the HOCON(a human-friendly JSON superset) format, supports features like environment variables, referencing other values, comments and multiple files. 
- ingo - Flags persisted in an ini-like config file. 
- ini - Go package to read and write INI files. 
- ini - INI Parser & Write Library, Unmarshal to Struct, Marshal to Json, Write File, watch file. 
- joshbetz/config - Small configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP. 
- kelseyhightower/envconfig - Go library for managing configuration data from environment variables. 
- koanf - Light weight, extensible library for reading config in Go applications. Built in support for JSON, TOML, YAML, env, command line. 
- 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`). 
- mini - Golang package for parsing ini-style configuration files. 
- 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. 
- store - Lightweight configuration manager for Go. 
- swap - Instantiate/configure structs recursively, based on build environment. (YAML, TOML, JSON and env). 
- typenv - Minimalistic, zero dependency, typed environment variables library. 
- uConfig - Lightweight, zero-dependency, and extendable configuration management. 
- viper - Go configuration with fangs. 
- xdg - Go implementation of the [XDG Base Directory Specification](https://specifications.freedesktop.org/basedir-spec/latest/) and [XDG user directories](https://wiki.archlinux.org/index.php/XDG_user_directories). 
- xdg - Cross platform package that follows the [XDG Standard](https://specifications.freedesktop.org/basedir-spec/latest/). 
- yamagiconf - The "safe subset" of YAML for Go configs. 
- envyaml - Yaml with environment variables reader. it helps to have secrets as environment variable but load them configs as structured Yaml. 
- hedzr/store - Extensible, high-performance configuration management library, optimized for hierarchical data. 
- env - A lightweight package for loading environment variables into structs. 
- gonfig - Tag-based configuration parser which loads values from different providers into typesafe struct. 
-
-
Continuous Integration
-
Standard CLI
- 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. 
- 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 - Tool and 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](https://github.com/lycheeverse/lychee#features). 
- 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. 
- drone - Drone is a Continuous Integration platform built on Docker, written in Go. 
-
-
CSS Preprocessors
-
Standard CLI
- gcss - Pure Go CSS Preprocessor. 
- go-libsass - Go wrapper to the 100% Sass compatible libsass project. 
-
-
Database
-
Caches
- 2q - 2Q in-memory cache implementation. 
- bcache - Eventually consistent distributed in-memory cache Go library. 
- BigCache - Efficient key/value cache for gigabytes of data. 
- cache - In-memory key:value store with expiration time, 0 dependencies, <100 LoC, 100% coverage. 
- 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. 
- 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 - less, fast and generic LRU hashmap library with optional locking, sharding, eviction and expiration. 
- 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. 
- 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. 
- EchoVault - Embeddable Distributed in-memory data store compatible with Redis clients. 
-
Database Schema Migration
- 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. 
- 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. 
- soda - Database migration, creation, ORM, etc... for MySQL, PostgreSQL, and SQLite. 
-
Databases Implemented in Go
- 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. 
- dgraph - Scalable, Distributed, Low Latency, High Throughput Graph Database. 
- 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. 
-
Programming Languages
Categories
Utilities
174
Software Packages
155
Database
135
Miscellaneous
107
Third-party APIs
102
Networking
97
Testing
91
Command Line
90
Web Frameworks
87
Data Structures and Algorithms
74
Text Processing
70
Websites
69
Logging
63
Distributed Systems
62
Database Drivers
62
Configuration
61
Messaging
56
Goroutines
49
Natural Language Processing
48
Images
44
Meetups
43
Security
43
Machine Learning
40
JSON
39
Science and Data Analysis
36
Authentication and OAuth
35
Code Analysis
32
Server Applications
31
Bot Building
27
GUI
26
Financial
26
E-Books
25
ORM
25
File Handling
25
Email
24
Embeddable Scripting Languages
24
Date and Time
22
Game Development
22
Serialization
21
Go Tools
20
Error Handling
17
Query Language
17
Template Engines
17
Continuous Integration
16
Geographic
16
IoT (Internet of Things)
15
Benchmarks
15
Validation
15
Conferences
14
Job Scheduler
14
Build Automation
14
Generators
13
Editor Plugins
13
Package Management
13
Forms
12
Video
12
UUID
12
Gophers
11
Go Generate Tools
11
Blockchain
10
Functional
9
Audio and Music
9
Reflection
8
Hardware
8
Microsoft Office
8
Version Control
8
Style Guides
8
WebAssembly
7
Performance
7
XML
6
Go Compilers
6
OpenGL
6
Artificial Intelligence
6
Social Media
5
Zero Trust
5
Workflow Frameworks
5
Stream Processing
5
Actor Model
4
Resource Embedding
4
Windows
3
Data Integration Frameworks
3
Webhooks Server
3
Dynamic DNS
3
CSS Preprocessors
2
Sub Categories
Search and Analytic Databases
645
Utility/Miscellaneous
365
HTTP Clients
254
Routers
132
Standard CLI
132
Other Software
94
DevOps Tools
90
Transliteration
80
Free e-books
79
Testing Frameworks
63
Uncategorized
58
Databases Implemented in Go
40
Advanced Console UIs
40
Tutorials
39
Caches
30
Reddit
28
NoSQL Database Drivers
28
Parsers/Encoders/Decoders
26
SQL Query Builders
25
Middlewares
25
Dependency Injection
23
Database Schema Migration
22
Relational Database Drivers
20
Mock
18
Database Tools
18
Project Layout
18
Miscellaneous Data Structures and Algorithms
17
Morphological Analyzers
17
Markup Languages
13
Tokenizers
10
Text Analysis
9
Translation
9
Strings
8
Scrapers
8
Bloom and Cuckoo Filters
8
E-books for purchase
8
Formatters
8
Bit-packing and Compression
6
Microsoft Excel
6
Selenium and browser control tools
6
Queues
6
Trees
6
Regular Expressions
5
Interfaces to Multiple Backends
5
Language Detection
5
Maps
4
Twitter
4
Sets
4
Data Structure and Algorithm Collections
4
Fuzzing and delta-debugging/reducing/shrinking
3
Nullable Types
3
Guided Learning
3
Pipes
3
Slugifiers
3
Sanitation
2
Iterators
2
Bit Sets
2
Fail injection
1
RSS
1
Microsoft Word
1
Keywords
golang
1,175
go
1,045
golang-library
102
cli
91
database
78
json
73
http
61
testing
57
sql
52
docker
47
golang-package
46
framework
43
mysql
42
library
39
kubernetes
38
postgresql
38
middleware
32
redis
32
api
32
orm
30
logging
30
parser
30
configuration
29
cache
28
distributed-systems
28
concurrency
28
microservice
27
command-line
25
awesome-go
25
machine-learning
24
config
23
security
23
grpc
23
microservices
23
performance
23
log
22
sqlite
22
server
22
router
22
logger
21
validation
21
dependency-injection
21
cloud-native
21
terminal
20
devops
20
generics
20
rest-api
20
xml
20
linux
18
rest
18