awesome-go-plus
A curated list of awesome Go frameworks, libraries and software
https://github.com/jayecc/awesome-go-plus
Last synced: 8 days ago
JSON representation
-
Stream Processing
-
HTTP Clients
- goio - An implementation of IO, Stream, Fiber for Golang, inspired by awesome Scala libraries cats and fs2. 
- machine - Go library for writing and generating stream workers with built in metrics and traceability. 
- stream - Go Stream, like Java 8 Stream: Filter/Map/FlatMap/Peek/Sorted/ForEach/Reduce... 
-
-
Style Guides
-
Free e-books
- bahlo/go-styleguide - 1509-blue)
- CockroachDB - 30733-blue)
- Hyperledger - 16043-blue)
- Magnetico - 3081-blue)
- Thanos
- Trybe - 309-blue)
- Uber - 16400-blue)
-
-
Template Engines
-
HTTP Clients
- 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](https://golang.org/pkg/text/template/). 
- 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. 
- 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. 
- raymond - Complete handlebars implementation in Go. 
- Razor - Razor view engine for Golang. 
- Soy - Closure templates (aka Soy templates) for Go, following the [official spec](https://developers.google.com/closure/templates/). 
- 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. 
- htmgo - build simple and scalable systems with go + htmx
-
-
Testing
-
Fail injection
- failpoint - An implementation of [failpoints](https://www.freebsd.org/cgi/man.cgi?query=fail) for Golang. 
-
Fuzzing and delta-debugging/reducing/shrinking
- go-fuzz - Randomized testing system. 
- gofuzz - Library for populating go objects with random values. 
- Tavor - Generic fuzzing and delta-debugging framework. 
-
Mock
- 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. 
- 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. 
- pgxmock - A mock library implementing [pgx - PostgreSQL Driver and Toolkit](https://github.com/jackc/pgx/). 
- timex - A test-friendly replacement for the native `time` package. 
- xgo - A general pureposed function mocking library. 
-
Selenium and browser control tools
- cdp - Type-safe bindings for the Chrome Debugging Protocol that can be used with browsers or other debug targets that implement it. 
- ggr - a lightweight server that routes and proxies Selenium WebDriver requests to multiple Selenium hubs. 
- rod - A Devtools driver to make web automation and scraping easy. 
- selenoid - alternative Selenium hub server that launches browsers within containers. 
- 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. 
-
Testing Frameworks
- 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_cleaner` in 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. 
- 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-mutesting - Mutation testing for Go source code. 
- go-mysql-test-container - Golang MySQL testcontainer to help with MySQL integration testing. 
- 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.
- 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.
- 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 `testing` by 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. 
- 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. 
- GoConvey - BDD-style framework with web UI and live reload. 
- Gont - Go network testing toolkit for testing building complex network topologies using Linux namespaces. 
- envite - Dev and testing environment management framework. 
- restit - Go micro framework to help writing RESTful API integration test. 
- go-snaps - Jest-like snapshot testing in Golang.
-
-
Text Processing
-
Formatters
- 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 `textwrap` module from Python. 
-
Markup Languages
- 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-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 
- htree - Traverse, navigate, filter, and otherwise process trees of [html.Node](https://pkg.go.dev/golang.org/x/net/html#Node) objects. 
- 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). 
- go-output-format - Output go structures into multiple formats (YAML/JSON/etc) in your command line app. 
-
Parsers/Encoders/Decoders
- 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. 
- 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")`. 
- 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)](http://ltsv.org/) reader for Go. 
- normalize - Sanitize, normalize and compare fuzzy text. 
- parth - URL path segmentation parsing.
- prattle - Scan and parse LL(1) grammars simply and efficiently. 
- sdp - SDP: Session Description Protocol [[RFC 4566](https://tools.ietf.org/html/rfc4566)]. 
- 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. 
- parseargs-go - string argument parser that understands quotes and backslashes. 
- did - DID (Decentralized Identifiers) Parser and Stringer in Go. 
-
Regular Expressions
- 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. 
-
RSS
- podcast - iTunes Compliant and RSS 2.0 Podcast Generator in Golang 
-
Sanitation
- bluemonday - HTML Sanitizer. 
- gofuckyourself - A sanitization-based swear filter for Go. 
-
Scrapers
- dataflowkit - Web scraping Framework to turn websites into structured data. 
- go-recipe - A package for scraping recipes from websites. 
- 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. 
- colly - Fast and Elegant Scraping Framework for Gophers. 
-
Utility/Miscellaneous
- go-runewidth - Functions to get fixed width of the character or string. 
- go-zero-width - Zero-width character detection and removal for Go. 
- kace - Common case conversions covering common initialisms. 
- 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
-
Utility/Miscellaneous
- airtable - Go client library for the [Airtable API](https://airtable.com/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](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/index.html). 
- aws-sdk-go - The official AWS SDK for the Go programming language. 
- bqwriter - High Level Go Library to write data into [Google BigQuery](https://cloud.google.com/bigquery) at a high throughout. 
- brewerydb - Go library for accessing the BreweryDB API. 
- cachet - Go client library for [Cachet (open source status page system)](https://cachethq.io/). 
- circleci - Go client library for interacting with CircleCI's API. 
- codeship-go - Go client library for interacting with Codeship's API v2. 
- coinpaprika-go - Go client library for interacting with Coinpaprika's API. 
-
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