awesome-go
A curated list of awesome Go frameworks, libraries and software
https://github.com/Cori1109/awesome-go
Last synced: 2 days ago
JSON representation
-
Audio and Music
- flac - Native Go FLAC encoder/decoder with support for FLAC streams.
- gaad - Native Go AAC bitstream parser.
- GoAudio - Native Go Audio Processing Library.
- gosamplerate - libsamplerate bindings for go.
- malgo - Mini audio library.
- minimp3 - Lightweight MP3 decoder library.
- music-theory - Music theory models in Go.
- PortAudio - Go bindings for the PortAudio audio I/O library.
- id3v2 - ID3 decoding and encoding library for Go.
- Oto - A low-level library to play sound on multiple platforms.
-
Authentication and OAuth
- authboss - Modular authentication system for the web. It tries to remove as much boilerplate and "hard things" as possible so that each time you start a new web project in Go, you can plug it in, configure, and start building your app without having to build an authentication system each time.
- branca - branca token [specification implementation](https://github.com/tuupola/branca-spec) for Golang 1.15+.
- cookiestxt - provides parser of cookies.txt file format.
- go-guardian - Go-Guardian is a golang library that provides a simple, clean, and idiomatic way to create powerful modern API and web authentication that supports LDAP, Basic, Bearer token and Certificate based authentication.
- go-jose - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
- gologin - chainable handlers for login with OAuth1 and OAuth2 authentication providers.
- gorbac - provides a lightweight role-based access control (RBAC) implementation in Golang.
- goth - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box.
- 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.
- 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.
- oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support.
- osin - Golang OAuth2 server library.
- otpgo - Time-Based One-Time Password (TOTP) and HMAC-Based One-Time Password (HOTP) library for Go.
- paseto - Golang implementation of Platform-Agnostic Security Tokens (PASETO).
- permissions2 - Library for keeping track of users, login states and permissions. Uses secure cookies and bcrypt.
- 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.
- sjwt - Simple jwt generator and parser.
- casbin - Authorization library that supports access control models like ACL, RBAC, ABAC.
- loginsrv - JWT login microservice with plugable backends such as OAuth2 (Github), htpasswd, osiam.
- scope - Easily Manage OAuth2 Scopes In Go.
- sessionup - Simple, yet effective HTTP session management and identification package.
- otpgen - Library to generate TOTP/HOTP codes.
-
Benchmarks
-
Other Software
- 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.
- 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.
- gocostmodel - Benchmarks of common basic operations for the Go language.
-
-
Blockchain
- cosmos-sdk - A Framework for Building Public Blockchains in the Cosmos Ecosystem.
- go-ethereum - Official Go implementation of the Ethereum protocol.
- gossamer - A Go implementation of the Polkadot Host.
- 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
- echotron - An elegant and concurrent library for Telegram Bots in Go.
- ephemeral-roles - A Discord bot for managing ephemeral roles based upon voice channel member presence.
- go-chat-bot - IRC, Slack & Telegram bot written in Go.
- go-sarah - Framework to build bot for desired chat services including LINE, Slack, Gitter and more.
- go-tgbot - Pure Golang Telegram Bot API wrapper, generated from swagger file, session-based router and middleware.
- go-twitch-irc - Library to write bots for twitch.tv chat
- Golang CryptoTrading Bot - A golang implementation of a console-based trading bot for cryptocurrency exchanges.
- govkbot - Simple Go [VK](https://vk.com) bot library.
- hanu - Framework for writing Slack bots.
- larry - Larry 🐦 is a really simple Twitter bot generator that tweets random repositories from Github built in Go.
- margelet - Framework for building Telegram bots.
- micha - Go Library for Telegram bot api.
- olivia - A chatbot built with an artificial neural network.
- slack-bot - Ready to use Slack Bot for lazy developers: Custom commands, Jenkins, Jira, Bitbucket, Github...
- slacker - Easy to use framework to create Slack bots.
- slackscot - Another framework for building Slack bots.
- tbot - Telegram bot server with API similar to net/http.
- telebot - Telegram bot framework written in Go.
- telego - Telegram Bot API library for Golang with full one-to-one API implementation.
- teleterm - Telegram Bot Exec Terminal Command.
- Tenyks - Service oriented IRC bot using Redis and JSON for messaging.
- wayback - A bot for Telegram, Mastodon, Slack, and other messaging platforms archives webpages.
- Kelp - official trading and market-making bot for the [Stellar](https://www.stellar.org/) DEX. Works out-of-the-box, written in Golang, compatible with centralized exchanges and custom trading strategies.
- telegram-bot-api - Simple and clean Telegram bot client.
- go-joe - A general-purpose bot library inspired by Hubot but written in Go.
-
Build Automation
- 1build - Command line tool to frictionlessly manage project-specific commands.
- anko - Simple application watcher for multiple programming languages.
- gaper - Builds and restarts a Go project when it crashes or some watched file changes.
- goyek - Create build pipelines in Go.
- mage - Mage is a make/rake-like build tool using Go.
- mmake - Modern Make.
- Task - simple "Make" alternative.
- taskctl - Concurrent task runner.
- gilbert - Build system and task runner for Go projects.
- realize - Go build system with file watchers and live reload. Run, build and watch file changes with custom paths.
-
Code Analysis
-
Routers
- GoCover.io - GoCover.io offers the code coverage of any golang package as a service.
- goreturns - Adds zero-value return statements to match the func return types.
- gosimple - gosimple is a linter for Go source code that specialises on simplifying code.
- staticcheck - staticcheck is `go vet` on steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#.
- unused - unused checks Go code for unused constants, variables, functions and types.
- apicompat - Checks recent changes to a Go project for backwards incompatible changes.
- asty - Converts golang AST to JSON and JSON to AST.
- ChainJacking - Find which of your Go lang direct GitHub dependencies is susceptible to ChainJacking attack.
- dupl - Tool for code clone detection.
- errcheck - Errcheck is a program for checking for unchecked errors in Go programs.
- gcvis - Visualise Go program GC trace data in real time.
- 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.
- go-outdated - Console application that displays outdated packages.
- goast-viewer - Web based Golang AST visualizer.
- golang-ifood-sdk - iFood API SDK.
- golines - Formatter that automatically shortens long lines in Go code.
- GoLint - Golint is a linter for Go source code.
- GoPlantUML - Library and CLI that generates text plantump class diagram containing information about structures and interfaces with the relationship among them.
- 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.
- tickgit - CLI and go package for surfacing code comment TODOs (in any language) and applying a `git blame`to 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.
- validate - Automatically validates struct fields with tags.
- tarp - tarp finds functions and methods without direct unit tests in Go source code.
- goimports - Tool to fix (add, remove) your Go imports automatically.
-
-
Command Line
-
Advanced Console UIs
- gommon/color - Style terminal text.
- asciigraph - Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies.
- aurora - ANSI terminal colors that supports fmt.Printf/Sprintf.
- box-cli-maker - Make Highly Customized Boxes for your CLI.
- cfmt - Contextual fmt inspired by bootstrap color classes.
- cfmt - Simple and convenient formatted stylized output fully compatible with fmt library.
- chalk - Intuitive package for prettifying terminal/console output.
- colourize - Go library for ANSI colour text in terminals.
- 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.
- go-ataman - Go library for rendering ANSI colored text templates in terminals.
- go-colorable - Colorable writer for windows.
- go-colortext - Go library for color output in terminals.
- go-isatty - isatty for golang.
- go-prompt - Library for building a powerful interactive prompt, inspired by [python-prompt-toolkit](https://github.com/jonathanslenders/python-prompt-toolkit).
- gocui - Minimalist Go library aimed at creating Console User Interfaces.
- gookit/color - Terminal color rendering tool library, support 16 colors, 256 colors, RGB color rendering output, compatible with Windows.
- marker - Easiest way to match and mark strings for colorful terminal outputs.
- mpb - Multi progress bar for terminal applications.
- progressbar - Basic thread-safe progress bar that works in every OS.
- pterm - A library to beautify console output on every platform with many combinable components.
- simpletable - Simple tables in terminal with Go.
- 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 .
- tabular - Print ASCII tables from command line utilities without the need to pass large sets of data to the API.
- termbox-go - Termbox is a library for creating cross-platform text-based interfaces.
- termdash - Go terminal dashboard based on **termbox-go** and inspired by [termui](https://github.com/gizak/termui).
- termenv - Advanced ANSI style & color support for your terminal applications.
- termui - Go terminal dashboard based on **termbox-go** and inspired by [blessed-contrib](https://github.com/yaronn/blessed-contrib).
- uilive - Library for updating terminal output in realtime.
- uiprogress - Flexible library to render progress bars in terminal applications.
- uitable - Library to improve readability in terminal apps using tabular data.
- yacspin - Yet Another CLi Spinner package, for working with terminal spinners.
-
Standard CLI
- hiboot cli - cli application framework with auto configuration and dependency injection.
- acmd - Simple, useful and opinionated CLI package in Go.
- argparse - Command line argument parser inspired by Python's argparse module.
- argv - Go library to split command line string as arguments array using the bash syntax.
- cli - Feature-rich and easy to use command-line package based on golang struct tags.
- cli - Simple and complete API for building command line interfaces in Go.
- climax - Alternative CLI with "human face", in spirit of Go command.
- clîr - A Simple and Clear CLI library. Dependency free.
- cmd - Extends the standard `flag` package to support sub commands and more in idiomatic way.
- cmdr - A POSIX/GNU style, getopt-like command-line UI Go library.
- cobra - Commander for modern Go CLI interactions.
- command-chain - A go library for configure and run command chains - such like pipelining in unix shells.
- commandeer - Dev-friendly CLI apps: sets up flags, defaults, and usage based on struct fields and tags.
- complete - Write bash completions in Go + Go command bash completion.
- Dnote - A simple command line notebook with multi-device sync.
- elvish - An expressive programming language and a versatile interactive shell.
- env - Tag-based environment configuration for structs.
- flag - Simple but powerful command line option parsing library for Go supporting subcommand.
- flaggy - A robust and idiomatic flags package with excellent subcommand support.
- flagvar - A collection of flag argument types for Go's standard `flag` package.
- go-arg - Struct-based argument parsing in Go.
- go-commander - Go library to simplify CLI workflow.
- go-flags - go command line option parser.
- go-getoptions - Go option parser inspired on the flexibility of Perl’s GetOpt::Long.
- gocmd - Go library for building command line applications.
- job - JOB, make your short-term command as a long-term job.
- kingpin - Command line and flag parser supporting sub commands (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.
- mow.cli - Go library for building CLI applications with sophisticated flag and argument parsing and validation.
- ops - Unikernel Builder/Orchestrator.
- pflag - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.
- sand - Simple API for creating interpreters and so much more.
- strumt - Library to create prompt chain.
- subcmd - Another approach to parsing and running subcommands. Works alongside the standard `flag` package.
- ts - Timestamp convert & compare tool.
- ukautz/clif - Small command line interface framework.
- urfave/cli - Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli).
- wlog - Simple logging interface that supports cross-platform color and concurrency.
- wmenu - Easy to use menu structure for cli applications that prompts users to make choices.
- sflags - Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin and other libraries.
- carapace-bin - Multi-shell multi-command argument completer.
-
Programming Languages
Categories
Utilities
164
Software Packages
138
Database
120
Web Frameworks
102
Third-party APIs
101
Miscellaneous
91
Testing
87
Networking
85
Command Line
79
Data Structures and Algorithms
73
Text Processing
65
Websites
61
Logging
54
Database Drivers
54
Configuration
54
Messaging
53
Distributed Systems
50
Natural Language Processing
47
Goroutines
45
Images
43
Machine Learning
38
Meetups
35
JSON
34
Science and Data Analysis
33
Security
32
Code Analysis
31
Server Applications
30
Authentication and OAuth
28
Bot Building
25
File Handling
25
E-Books
24
ORM
23
Financial
22
Email
21
Serialization
21
GUI
21
Go Tools
20
Date and Time
20
Embeddable Scripting Languages
20
Game Development
18
Template Engines
16
Editor Plugins
16
Conferences
16
Job Scheduler
16
Query Language
15
Package Management
15
Benchmarks
14
Geographic
14
Error Handling
14
Resource Embedding
12
Generators
12
Validation
12
Forms
12
Video
12
Gophers
11
IoT (Internet of Things)
11
UUID
10
Audio and Music
10
Go Generate Tools
10
Build Automation
10
Version Control
9
Style Guides
9
Continuous Integration
9
Functional
8
Hardware
8
Microsoft Office
7
XML
6
Go Compilers
6
OpenGL
6
Social Media
6
WebAssembly
6
Blockchain
5
Performance
5
Zero Trust
4
Stream Processing
4
Dynamic DNS
3
Windows
3
CSS Preprocessors
2
Sub Categories
Search and Analytic Databases
575
Utility/Miscellaneous
363
HTTP Clients
317
Routers
123
Standard CLI
110
Other Software
94
DevOps Tools
74
Transliteration
71
Free e-books
71
Uncategorized
57
Databases Implemented in Go
38
Advanced Console UIs
34
Tutorials
32
Reddit
30
NoSQL Database Drivers
27
Middlewares
26
Parsers/Encoders/Decoders
23
SQL Query Builders
22
Database Schema Migration
22
Database Tools
19
Caches
19
Miscellaneous Data Structures and Algorithms
19
Relational Database Drivers
18
Morphological Analyzers
17
Dependency Injection
15
Project Layout
13
Markup Languages
12
Tokenizers
10
Translation
9
Text Analysis
9
Scrapers
8
Bloom and Cuckoo Filters
8
E-books for purchase
8
Formatters
7
Bit-packing and Compression
6
Microsoft Excel
6
Strings
6
Trees
6
Twitter
5
Regular Expressions
5
Sets
4
Data Structure and Algorithm Collections
4
Queues
4
Language Detection
4
Pipes
3
Nullable Types
3
Slugifiers
3
Interfaces to Multiple Backends
3
Maps
3
Sanitation
2
Bit Sets
2
RSS
2
Iterators
2
Keywords
golang
984
go
882
golang-library
90
cli
79
json
61
database
61
http
56
testing
48
sql
44
golang-package
40
mysql
35
docker
35
library
34
api
32
middleware
31
postgresql
31
framework
30
parser
29
redis
28
configuration
26
orm
24
concurrency
23
machine-learning
23
command-line
23
router
22
kubernetes
22
logging
21
awesome-go
21
sqlite
19
security
19
microservice
19
config
19
server
18
cache
18
rest-api
18
dependency-injection
17
log
17
xml
17
microservices
17
html
17
web
17
distributed-systems
17
goroutine
16
terminal
16
rest
16
validation
16
api-client
16
windows
15
git
15
devops
15