awesome-go
A curated list of awesome Go frameworks, libraries and software
https://github.com/eric-erki/awesome-go
Last synced: 6 days ago
JSON representation
-
Audio and Music
- EasyMIDI - EasyMidi is a simple and reliable library for working with standard midi file (SMF).
- flac - Native Go FLAC encoder/decoder with support for FLAC streams.
- gaad - Native Go AAC bitstream parser.
- go-sox - libsox bindings for go.
- go_mediainfo - libmediainfo bindings for go.
- gosamplerate - libsamplerate bindings for go.
- malgo - Mini audio library.
- minimp3 - Lightweight MP3 decoder library.
- mix - Sequence-based Go-native audio mixer for music apps.
- mp3 - Native Go MP3 decoder.
- music-theory - Music theory models in Go.
- PortAudio - Go bindings for the PortAudio audio I/O library.
- portmidi - Go bindings for PortMidi.
- taglib - Go bindings for taglib.
- vorbis - "Native" Go Vorbis decoder (uses CGO, but has no dependencies).
- waveform - Go package capable of generating waveform images from audio streams.
- id3v2 - Fast and stable ID3 parsing and writing 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 - Golang implementation of Branca Tokens.
- cookiestxt - provides parser of cookies.txt file format.
- go-jose - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs.
- go-oauth2-server - Standalone, specification-compliant, OAuth2 server written in Golang.
- 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.
- httpauth - HTTP Authentication middleware.
- jeff - Simple, flexible, secure and idiomatic web session management with pluggable backends.
- jwt - Clean and easy to use implementation of JSON Web Tokens (JWT).
- jwt - Lightweight JSON Web Token (JWT) library.
- jwt-auth - JWT middleware for Golang http servers with many configuration options.
- jwt-go - Golang implementation of JSON Web Tokens (JWT).
- 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.
- 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.
- rbac - Minimalistic RBAC package for Go applications.
- 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).
- sessiongate-go - Go session management using the SessionGate Redis module.
- sessions - Dead simple, highly performant, highly customizable sessions service for go http servers.
- signedvalue - Signed and timestamped strings compatible with [Tornado's](https://github.com/tornadoweb/tornado) `create_signed_value`, `decode_signed_value`, and therefore `set_secure_cookie` and `get_secure_cookie`.
- 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.
-
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-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.
-
-
Bot Building
- 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 - Libary 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.
- margelet - Framework for building Telegram bots.
- micha - Go Library for Telegram bot api.
- 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.
- Tenyks - Service oriented IRC bot using Redis and JSON for messaging.
- 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.
-
Code Analysis
-
Routers
- GoCover.io - GoCover.io offers the code coverage of any golang package as a service.
- Golint online - Lints online Go source files on GitHub, Bitbucket and Google Project Hosting using the golint package.
- 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.
- 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.
- 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.
- unconvert - Remove unnecessary type conversions from Go source.
- 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.
- cfmt - Contextual fmt inspired by bootstrap color classes.
- chalk - Intuitive package for prettifying terminal/console output.
- colourize - Go library for ANSI colour text in terminals.
- 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.
- mpb - Multi progress bar for terminal applications.
- progressbar - Basic thread-safe progress bar that works in every OS.
- simpletable - Simple tables in terminal with Go.
- tabby - A tiny library for super simple Golang 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).
- 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.
-
Standard CLI
- hiboot cli - cli application framework with auto configuration and dependency injection.
- 1build - Command line tool to frictionlessly manage project-specific commands.
- 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.
- cli-init - The easy way to start building Golang command line applications.
- clîr - A Simple and Clear CLI library. Dependency free.
- cmd - Extends the standard `flag` package to support sub commands and more in idomatic way.
- cmdr - A POSIX/GNU style, getopt-like command-line UI Go library.
- cobra - Commander for modern Go CLI interactions.
- 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 and end-to-end encrypted notebook for developers.
- docopt.go - Command-line arguments parser that will make you smile.
- 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.
- liner - Go readline-like library for command-line interfaces.
- 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.
- readline - Pure golang implementation that provides most features in GNU-Readline under MIT license.
- sand - Simple API for creating interpreters and so much more.
- sflags - Struct based flags generator for flag, urfave/cli, pflag, cobra, kingpin and other libraries.
- strumt - Library to create prompt chain.
- 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.
- climax - Alternative CLI with "human face", in spirit of Go command.
-
-
Conferences
-
Other Software
- Capital Go - Washington, D.C., USA.
- GoDays - Berlin, Germany.
- GopherChina - Shanghai, China.
- GopherCon Australia - Sydney, Australia.
- GopherCon Europe - Berlin, Germany.
- GopherCon India - Pune, India.
- GopherCon Israel - Tel Aviv, Israel.
- GopherCon Vietnam - Ho Chi Minh City, Vietnam.
- GoWayFest - Minsk, Belarus.
- GolangUK - London, UK.
- dotGo - Paris, France.
- GolangUK - London, UK.
- GopherCon Brazil - Florianópolis, BR.
- GoWayFest - Minsk, Belarus.
- GoWayFest - Minsk, Belarus.
- GoWayFest - Minsk, Belarus.
- GoWayFest - Minsk, Belarus.
- GopherCon - Denver, USA.
- GopherCon Russia - Moscow, Russia.
- GolangUK - London, UK.
-
-
Configuration
-
Advanced Console UIs
- gone/jconf - Modular JSON configuration. Keep you config structs along with the code they configure and delegate parsing to submodules without sacrificing full config serialization.
- cleanenv - Minimalistic configuration reader (from files, ENV, and wherever you want).
- config - A lightweight yet powerful config package for Go projects.
- config - Cloud native application configuration. Bind ENV to structs in only two lines.
- config - JSON or YAML configuration wrapper with environment variables and flags parsing.
- configure - Provides configuration through multiple sources, including JSON, flags and environment variables.
- 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).
- envcfg - Un-marshaling environment variables to Go structs.
- envconf - Configuration from environment.
-
Programming Languages
Categories
Utilities
122
Software Packages
103
Database
86
Web Frameworks
82
Third-party APIs
75
Command Line
66
Networking
65
Miscellaneous
64
Testing
62
Meetups
57
Data Structures
56
Text Processing
55
Websites
49
Database Drivers
48
Logging
43
Messaging
42
Distributed Systems
40
Images
36
Natural Language Processing
35
Machine Learning
35
Configuration
35
Goroutines
32
Authentication and OAuth
30
Science and Data Analysis
28
Code Analysis
27
Template Engines
21
Security
20
ORM
20
Conferences
20
Game Development
19
GUI
19
Serialization
18
Server Applications
18
JSON
18
Audio and Music
18
Files
17
Date and Time
17
Embeddable Scripting Languages
17
Bot Building
16
Package Management
15
Email
14
Go Tools
14
Editor Plugins
13
Financial
13
Benchmarks
12
Error Handling
12
Generation and Generics
12
Gophers
11
IoT (Internet of Things)
11
Video
10
Twitter
10
Resource Embedding
10
E-Books
10
Validation
9
Forms
9
Go Generate Tools
8
Query Language
8
Geographic
8
UUID
8
Job Scheduler
8
Continuous Integration
7
XML
6
Microsoft Office
6
Version Control
6
Go Compilers
5
OpenGL
5
Dynamic DNS
3
Performance
3
Windows
3
Functional
3
CSS Preprocessors
2
Hardware
1
Stream Processing
1
Sub Categories
Keywords
golang
648
go
603
golang-library
53
cli
45
database
41
http
36
json
34
testing
31
golang-package
27
sql
26
library
25
middleware
25
api
23
framework
22
redis
22
docker
18
router
18
command-line
17
mysql
17
machine-learning
17
configuration
16
awesome-go
16
concurrency
16
postgresql
15
parser
15
html
15
logging
15
orm
14
distributed-systems
13
xml
13
server
13
log
12
security
12
fast
12
client
12
microservice
12
goroutine
12
sqlite
11
pubsub
11
rpc
11
cache
11
go-library
11
dependency-injection
11
queue
11
microservices
10
validation
10
image
10
devops
10
retry
10
github
10