awesome-go-plus
A curated list of awesome Go frameworks, libraries and software
https://github.com/jayecc/awesome-go-plus
Last synced: 6 days ago
JSON representation
-
File Handling
-
Search and Analytic Databases
- 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. 
- flop - File operations library which aims to mirror feature parity with [GNU cp](https://www.gnu.org/software/coreutils/manual/html_node/cp-invocation.html). 
- 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. 
- parquet - Read and write [parquet](https://parquet.apache.org) files. 
- 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_](http://todotxt.org/) files, supports parsing and manipulating of task lists in the [_todo.txt_ format](https://github.com/todotxt/todo.txt). 
- 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
-
Search and Analytic Databases
- 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. 
- 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-finnhub - Client for stock market, forex and crypto data from finnhub.io. Access real-time financial market data from 60+ stock exchanges, 10 forex brokers, and 15+ crypto exchanges. 
- go-money - Implementation of Fowler's Money pattern. 
- go-nowpayments - Library for the crypto NOWPayments API. 
- 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. 
- sleet - One unified interface for multiple Payment Service Providers (PsP) to process online payment. 
- 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
-
Search and Analytic Databases
- 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.Values` into usable struct values of standard or custom types. 
-
-
Functional
-
Search and Analytic Databases
- 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. 
- 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
-
Search and Analytic Databases
- 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](https://www.libsdl.org/). 
- 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. 
- Harfang3D - 3D engine for the Go language, works on Windows and Linux ([Harfang on Go.dev](https://github.com/harfang3d/harfang-go)). 
- Leaf - Lightweight game server framework. 
- nano - Lightweight, facility, high performance golang based game server framework. 
- Oak - Pure Go game engine. 
- 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. 
- raylib-go - Go bindings for [raylib](https://www.raylib.com/), a simple and easy-to-use library to learn videogames programming. 
- 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
-
Search and Analytic Databases
- 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. 
- 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. 
- go-linq - .NET LINQ-like query methods for Go. 
-
-
Geographic
-
Search and Analytic Databases
- 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 - 9-blue)
- WGS84 - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). 
-
-
Go Compilers
-
Search and Analytic Databases
- bunster - Compile shell scripts to Go. 
- c4go - Transpile C code to Go code. 
- esp32 - Transpile Go into Arduino code. 
- f4go - Transpile FORTRAN 77 code to Go code. 
- go2hx - Compiler from Go to Haxe to Javascript/C++/Java/C#. 
- gopherjs - Compiler from Go to JavaScript. 
-
-
Go Generate Tools
-
Routers
- 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.
- xgen - XSD (XML Schema Definition) parser and Go/C/Java/Rust/TypeScript code generator. 
-
-
Gophers
-
Free e-books
- 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. 
- gopher-stickers - 595-blue)
- gophericons - 622-blue)
- 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. 
-
-
Goroutines
-
Search and Analytic Databases
- ants - A high-performance and low-cost goroutine pool in Go. 
- 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 - `conc` is 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. 
- 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.WaitGroup` with error handling and concurrency control. 
- go-workerpool - Inspired from Java Thread Pool, Go WorkerPool aims to control heavy Go Routines. 
- go-workers - Easily and safely run workers for large data processing pipelines. 
- 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. 
- 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`, `Waterfall` etc., 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 - `routine` is a `ThreadLocal` for go library. It encapsulates and provides some easy-to-use, non-competitive, high-performance `goroutine` context 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. 
- artifex - Simple in-memory job queue for Golang using worker-based dispatching. 
- 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. 
-
-
Go Tools
-
Routers
- decouple - Find “overspecified” function parameters that could be generalized with interface types. 
-
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