awesome-go
Daily clone of avelino/awesome-go with information from go-search
https://github.com/nouney/awesome-go
Last synced: about 19 hours ago
JSON representation
Audio and Music
- EasyMIDI - EasyMidi is a simple and reliable library for working with standard midi file (SMF).
- flac - No-frills native Go FLAC decoder that decodes FLAC files into byte slices. - ⬇️4 - ⭐52
- flac - Native Go FLAC encoder/decoder with support for FLAC streams. - ⬇️17 - ⭐29
- gaad - Native Go AAC bitstream parser. - ⬇️0 - ⭐11
- go-sox - libsox bindings for go. - ⬇️13 - ⭐37
- go_mediainfo - libmediainfo bindings for go. - ⬇️2 - ⭐9
- gosamplerate - libsamplerate bindings for go. - ⬇️0 - ⭐3
- malgo - Mini audio library. - ⬇️0 - ⭐26
- minimp3 - Lightweight MP3 decoder library. - ⬇️0 - ⭐8
- mix - Sequence-based Go-native audio mixer for music apps. - ⬇️5 - ⭐40
- mp3 - Native Go MP3 decoder. - ⬇️11 - ⭐19
- music-theory - Music theory models in Go. - ⬇️0 - ⭐120
- PortAudio - Go bindings for the PortAudio audio I/O library. - ⬇️93 - ⭐63
- portmidi - Go bindings for PortMidi. - ⬇️55 - ⭐93
- taglib - Go bindings for taglib. - ⬇️22 - ⭐44
- vorbis - "Native" Go Vorbis decoder (uses CGO, but has no dependencies). - ⬇️1 - ⭐9
- waveform - Go package capable of generating waveform images from audio streams. - ⬇️1 - ⭐135
- id3v2 - Fast and stable ID3 parsing and writing library for Go. - ⬇️10 - ⭐8
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. - ⬇️16 - ⭐1426
- branca - Golang implementation of Branca Tokens. - ⬇️0 - ⭐20
- cookiestxt - provides parser of cookies.txt file format. - ⬇️0 - ⭐0
- go-jose - Fairly complete implementation of the JOSE working group's JSON Web Token, JSON Web Signatures, and JSON Web Encryption specs. - ⬇️284 - ⭐536
- go-oauth2-server - Standalone, specification-compliant, OAuth2 server written in Golang. - ⬇️0 - ⭐381
- gologin - chainable handlers for login with OAuth1 and OAuth2 authentication providers. - ⬇️70 - ⭐647
- gorbac - provides a lightweight role-based access control (RBAC) implementation in Golang. - ⬇️10 - ⭐401
- goth - provides a simple, clean, and idiomatic way to use OAuth and OAuth2. Handles multiple providers out of the box. - ⬇️446 - ⭐825
- httpauth - HTTP Authentication middleware. - ⬇️68 - ⭐102
- jwt - Clean and easy to use implementation of JSON Web Tokens (JWT). - ⬇️4 - ⭐0
- jwt - Lightweight JSON Web Token (JWT) library. - ⬇️0 - ⭐1
- jwt-auth - JWT middleware for Golang http servers with many configuration options.
- jwt-go - Golang implementation of JSON Web Tokens (JWT). - ⬇️2878 - ⭐1459
- oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine and App Engine support. - ⬇️60 - ⭐854
- osin - Golang OAuth2 server library.
- paseto - Golang implementation of Platform-Agnostic Security Tokens (PASETO). - ⬇️1 - ⭐116
- permissions2 - Library for keeping track of users, login states and permissions. Uses secure cookies and bcrypt. - ⬇️21 - ⭐176
- rbac - Minimalistic RBAC package for Go applications. - ⬇️0 - ⭐18
- securecookie - Efficient secure cookie encoding/decoding. - ⬇️0 - ⭐17
- session - Go session management for web servers (including support for Google App Engine - GAE). - ⬇️7 - ⭐6
- sessiongate-go - Go session management using the SessionGate Redis module. - ⬇️0 - ⭐4
- sessions - Dead simple, highly performant, highly customizable sessions service for go http servers. - ⬇️0 - ⭐29
-
signedvalue
- Signed and timestamped strings compatible with Tornado's
create_signed_value,decode_signed_value, and thereforeset_secure_cookieandget_secure_cookie. - ⬇️0 - ⭐5 - casbin - Authorization library that supports access control models like ACL, RBAC, ABAC. - ⬇️0 - ⭐2445
- loginsrv - JWT login microservice with plugable backends such as OAuth2 (Github), htpasswd, osiam. - ⬇️0 - ⭐589
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. - ⬇️0 - ⭐13
- go-benchmarks - Few miscellaneous Go microbenchmarks. Compare some language features to alternative approaches. - ⬇️0 - ⭐36
- go-http-routing-benchmark - Go HTTP request router benchmark and comparison. - ⬇️0 - ⭐759
- go-web-framework-benchmark - Go web framework benchmark. - ⬇️0 - ⭐177
- go_serialization_benchmarks - Benchmarks of Go serialization methods. - ⬇️0 - ⭐375
- golang-micro-benchmarks - Tiny collection of Go micro benchmarks. The intent is to compare some language features to others. - ⬇️0 - ⭐5
- 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. - ⬇️0 - ⭐11
- skynet - Skynet 1M threads microbenchmark.
- speedtest-resize - Compare various Image resize algorithms for the Go language. - ⬇️0 - ⭐81
- gocostmodel - Benchmarks of common basic operations for the Go language. - ⬇️0 - ⭐47
Bot Building
- go-chat-bot - IRC, Slack & Telegram bot written in Go. - ⬇️103 - ⭐122
- go-sarah - Framework to build bot for desired chat services including LINE, Slack, Gitter and more. - ⬇️28 - ⭐94
- go-tgbot - Pure Golang Telegram Bot API wrapper, generated from swagger file, session-based router and middleware. - ⬇️1 - ⭐71
- Golang CryptoTrading Bot - A golang implementation of a console-based trading bot for cryptocurrency exchanges. - ⬇️0 - ⭐67
- govkbot - Simple Go VK bot library. - ⬇️0 - ⭐15
- hanu - Framework for writing Slack bots. - ⬇️3 - ⭐5
- margelet - Framework for building Telegram bots. - ⬇️6 - ⭐35
- micha - Go Library for Telegram bot api. - ⬇️1 - ⭐0
- slacker - Easy to use framework to create Slack bots. - ⬇️7 - ⭐181
- tbot - Telegram bot server with API similar to net/http. - ⬇️5 - ⭐2
- telebot - Telegram bot framework written in Go. - ⬇️78 - ⭐229
- Tenyks - Service oriented IRC bot using Redis and JSON for messaging. - ⬇️0 - ⭐160
- telegram-bot-api - Simple and clean Telegram bot client. - ⬇️38 - ⭐304
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 veton 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. - ⬇️0 - ⭐42
- dupl - Tool for code clone detection. - ⬇️0 - ⭐61
- errcheck - Errcheck is a program for checking for unchecked errors in Go programs. - ⬇️0 - ⭐674
- gcvis - Visualise Go program GC trace data in real time. - ⬇️0 - ⭐586
- Go Metalinter - Metalinter is a tool to automatically apply all static analysis tool and report their output in normalized form. - ⬇️0 - ⭐1174
- go-checkstyle - checkstyle is a style check tool like java checkstyle. This tool inspired by java checkstyle, golint. The style refered to some points in Go Code Review Comments. - ⬇️6 - ⭐30
- go-cleanarch - go-cleanarch was created to validate Clean Architecture rules, like a The Dependency Rule and interaction between packages in your Go projects. - ⬇️0 - ⭐210
- go-critic - source code linter that brings checks that are currently not implemented in other linters.
- go-outdated - Console application that displays outdated packages. - ⬇️0 - ⭐28
- goast-viewer - Web based Golang AST visualizer. - ⬇️0 - ⭐143
- GoLint - Golint is a linter for Go source code. - ⬇️128 - ⭐1467
- gostatus - Command line tool, shows the status of repositories that contain Go packages. - ⬇️0 - ⭐173
- lint - Run linters as part of go test. - ⬇️2 - ⭐45
- php-parser - A Parser for PHP written in Go. - ⬇️0 - ⭐390
- unconvert - Remove unnecessary type conversions from Go source. - ⬇️0 - ⭐152
- validate - Automatically validates struct fields with tags. - ⬇️3 - ⭐57
- tarp - tarp finds functions and methods without direct unit tests in Go source code. - ⬇️0 - ⭐8
- 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. - ⬇️2 - ⭐942
- aurora - ANSI terminal colors that supports fmt.Printf/Sprintf. - ⬇️33 - ⭐199
- cfmt - Contextual fmt inspired by bootstrap color classes. - ⬇️1 - ⭐39
- chalk - Intuitive package for prettifying terminal/console output. - ⬇️164 - ⭐169
- color - Versatile package for colored terminal output. - ⬇️2775 - ⭐1081
- colourize - Go library for ANSI colour text in terminals. - ⬇️2 - ⭐8
- ctc - The non-invasive cross-platform terminal color library does not need to modify the Print method. - ⬇️0 - ⭐4
- go-ataman - Go library for rendering ANSI colored text templates in terminals. - ⬇️0 - ⭐5
- go-colorable - Colorable writer for windows. - ⬇️999 - ⭐136
- go-colortext - Go library for color output in terminals. - ⬇️363 - ⭐148
- go-isatty - isatty for golang. - ⬇️696 - ⭐80
- go-prompt - Library for building a powerful interactive prompt, inspired by python-prompt-toolkit. - ⬇️34 - ⭐1560
- gocui - Minimalist Go library aimed at creating Console User Interfaces. - ⬇️182 - ⭐777
- gookit/color - Terminal color rendering tool library, support 16 colors, 256 colors, RGB color rendering output, compatible with Windows. - ⬇️11 - ⭐44
- mpb - Multi progress bar for terminal applications. - ⬇️10 - ⭐219
- progressbar - Basic thread-safe progress bar that works in every OS. - ⬇️7 - ⭐282
- simpletable - Simple tables in terminal with Go. - ⬇️2 - ⭐92
- tabular - Print ASCII tables from command line utilities without the need to pass large sets of data to the API. - ⬇️1 - ⭐11
- termbox-go - Termbox is a library for creating cross-platform text-based interfaces. - ⬇️1163 - ⭐1603
- termdash - Go terminal dashboard based on termbox-go and inspired by termui. - ⬇️4 - ⭐15
- termui - Go terminal dashboard based on termbox-go and inspired by blessed-contrib. - ⬇️299 - ⭐5091
- uilive - Library for updating terminal output in realtime. - ⬇️49 - ⭐465
- uiprogress - Flexible library to render progress bars in terminal applications. - ⬇️82 - ⭐831
- uitable - Library to improve readability in terminal apps using tabular data. - ⬇️124 - ⭐347
- termtables - Go port of the Ruby library terminal-tables for simple ASCII table generation as well as providing markdown and HTML output. - ⬇️33 - ⭐64
Standard CLI
- hiboot cli - cli application framework with auto configuration and dependency injection.
- argparse - Command line argument parser inspired by Python's argparse module. - ⬇️4 - ⭐29
- argv - Go library to split command line string as arguments array using the bash syntax. - ⬇️2 - ⭐8
- cli - Feature-rich and easy to use command-line package based on golang struct tags. - ⬇️82 - ⭐204
- cli - Simple and complete API for building command line interfaces in Go. - ⬇️2 - ⭐28
- cli-init - The easy way to start building Golang command line applications. - ⬇️0 - ⭐559
- cobra - Commander for modern Go CLI interactions. - ⬇️10018 - ⭐2817
- commandeer - Dev-friendly CLI apps: sets up flags, defaults, and usage based on struct fields and tags. - ⬇️2 - ⭐57
- complete - Write bash completions in Go + Go command bash completion. - ⬇️27 - ⭐456
- docopt.go - Command-line arguments parser that will make you smile. - ⬇️64 - ⭐723
- env - Tag-based environment configuration for structs. - ⬇️5 - ⭐18
- flag - Simple but powerful command line option parsing library for Go supporting subcommand. - ⬇️2 - ⭐2
- flaggy - A robust and idiomatic flags package with excellent subcommand support. - ⬇️0 - ⭐8
-
flagvar
- A collection of flag argument types for Go's standard
flagpackage. - ⬇️0 - ⭐23 - go-arg - Struct-based argument parsing in Go. - ⬇️111 - ⭐370
- go-commander - Go library to simplify CLI workflow. - ⬇️0 - ⭐3
- go-flags - go command line option parser. - ⬇️1863 - ⭐623
- go-getoptions - Go option parser inspired on the flexibility of Perl’s GetOpt::Long. - ⬇️11 - ⭐2
- gocmd - Go library for building command line applications. - ⬇️0 - ⭐15
- kingpin - Command line and flag parser supporting sub commands. - ⬇️249 - ⭐732
- liner - Go readline-like library for command-line interfaces. - ⬇️522 - ⭐325
- mitchellh/cli - Go library for implementing command-line interfaces. - ⬇️2589 - ⭐460
- mow.cli - Go library for building CLI applications with sophisticated flag and argument parsing and validation. - ⬇️207 - ⭐367
- pflag - Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags. - ⬇️8473 - ⭐107
- readline - Pure golang implementation that provides most features in GNU-Readline under MIT license. - ⬇️252 - ⭐634
- 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. - ⬇️4 - ⭐52
- strumt - Library to create prompt chain. - ⬇️3 - ⭐19
- ukautz/clif - Small command line interface framework. - ⬇️2 - ⭐69
- urfave/cli - Simple, fast, and fun package for building command line apps in Go (formerly codegangsta/cli). - ⬇️2725 - ⭐4621
- wlog - Simple logging interface that supports cross-platform color and concurrency. - ⬇️5 - ⭐5
- wmenu - Easy to use menu structure for cli applications that prompts users to make choices. - ⬇️2 - ⭐7
- climax - Alternative CLI with "human face", in spirit of Go command. - ⬇️7 - ⭐98
Conferences
Other Software
- Capital Go - Washington, D.C., USA.
- GoDays - Berlin, Germany.
- GopherChina - Shanghai, China.
- GopherCon Europe - Reykjavik, Iceland.
- GopherCon India - Pune, India.
- GopherCon Israel - Tel Aviv, Israel.
- GopherCon Vietnam - Ho Chi Minh City, Vietnam.
- dotGo - Paris, France.
- GopherCon Brazil - Florianópolis, BR.
- GoWayFest - Minsk, Belarus.
- GopherCon - Denver, USA.
- GopherCon Russia - Moscow, Russia.
- GolangUK - London, UK.
- GoLab - Florence, Italy.
- GopherCon Singapore - Mapletree Business City, Singapore.
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.
- config - JSON or YAML configuration wrapper with environment variables and flags parsing. - ⬇️84 - ⭐81
- configure - Provides configuration through multiple sources, including JSON, flags and environment variables. - ⬇️22 - ⭐20
- confita - Load configuration in cascade from multiple backends into a struct. - ⬇️1 - ⭐44
- 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). - ⬇️88 - ⭐162
- envcfg - Un-marshaling environment variables to Go structs. - ⬇️1 - ⭐79
- envconf - Configuration from environment. - ⬇️13 - ⭐3
- envconfig - Read your configuration from environment variables. - ⬇️19 - ⭐93
- envh - Helpers to manage environment variables. - ⬇️6 - ⭐85
- gcfg - read INI-style configuration files into Go structs; supports user-defined types and subsections.
- go-up - A simple configuration library with recursive placeholders resolution and no magic. - ⬇️1 - ⭐13
- goConfig - Parses a struct as input and populates the fields of this struct with parameters from command line, environment variables and configuration file. - ⬇️3 - ⭐70
-
godotenv
- Go port of Ruby's dotenv library (Loads environment variables from
.env). - ⬇️675 - ⭐348 - gofigure - Go application configuration made easy. - ⬇️14 - ⭐36
- gookit/config - application config manage(load,get,set). support JSON, YAML, TOML, INI, HCL. multi file load, data override merge. - ⬇️5 - ⭐25
- hjson - Human JSON, a configuration file format for humans. Relaxed syntax, fewer mistakes, more comments. - ⬇️11 - ⭐51
- ingo - Flags persisted in an ini-like config file. - ⬇️8 - ⭐10
- ini - Go package to read and write INI files. - ⬇️379 - ⭐370
- joshbetz/config - Small configuration library for Go that parses environment variables, JSON files, and reloads automatically on SIGHUP. - ⬇️0 - ⭐192
- kelseyhightower/envconfig - Go library for managing configuration data from environment variables. - ⬇️540 - ⭐479
- mini - Golang package for parsing ini-style configuration files. - ⬇️0 - ⭐8
- sprbox - Build-environment aware toolbox factory and agnostic config parser (YAML, TOML, JSON and Environment vars). - ⬇️1 - ⭐3
- store - Lightweight configuration manager for Go. - ⬇️1 - ⭐202
- viper - Go configuration with fangs. - ⬇️6478 - ⭐1947
- xdg - Cross platform package that follows the XDG Standard. - ⬇️2 - ⭐5
Continuous Integration
Advanced Console UIs
- duci - A simple ci server no needs domain specific languages. - ⬇️0 - ⭐16
- gomason - Test, Build, Sign, and Publish your go binaries from a clean workspace. - ⬇️0 - ⭐4
- goveralls - Go integration for Coveralls.io continuous code coverage tracking system. - ⬇️0 - ⭐285
- overalls - Multi-Package go project coverprofile for tools like goveralls. - ⬇️0 - ⭐27
- roveralls - Recursive coverage testing tool. - ⬇️0 - ⭐0
- drone - Drone is a Continuous Integration platform built on Docker, written in Go.
CSS Preprocessors
Advanced Console UIs
- gcss - Pure Go CSS Preprocessor. - ⬇️20 - ⭐356