awesome-go
A curated list of awesome Go frameworks, libraries and software + implementation of algorithms and utility programs in Go
https://github.com/pacifiquem/awesome-go
Last synced: 6 days ago
JSON representation
Artificial Intelligence
- langchaingo - LangChainGo is a framework for developing applications powered by language models.
- LocalAI - Open Source OpenAI alternative, self-host AI models.
- Ollama - Run large language models locally.
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.
- 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 it, and start building your app without having to build an authentication system each time.
- branca - branca token specification implementation for Golang 1.15+.
- cookiestxt - provides a 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.
- casbin - Authorization library that supports access control models like ACL, RBAC, and ABAC.
- 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.
- jwt-go - A full featured implementation of JSON Web Tokens (JWT). This library supports the parsing and verification as well as the generation and signing of JWTs.
- 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.
- loginsrv - JWT login microservice with pluggable backends such as OAuth2 (Github), htpasswd, osiam.
- oauth2 - Successor of goauth2. Generic OAuth 2.0 package that comes with JWT, Google APIs, Compute Engine, and App Engine support.
- oidc - Easy to use OpenID Connect client and server library written for Go and certified by the OpenID Foundation
- osin - Golang OAuth2 server library.
- otpgen - Library to generate TOTP/HOTP codes.
- 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.
- scope - Easily Manage OAuth2 Scopes In Go.
- 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.
- sessionup - Simple, yet effective HTTP session management and identification package.
- sjwt - Simple jwt generator and parser.
- gosession - This is quick session for net/http in GoLang. This package is perhaps the best implementation of the session mechanism, or at least it tries to become one.
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
- cometbft - A distributed, Byzantine fault-tolerant, deterministic state machine replication engine. It is a fork of Tendermint Core and implements the Tendermint consensus algorithm.
- 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.
- kubo - A blockchain framework implemented in Go. It provides content-addressable storage which can be used for decentralized storage in DApps. It is based on the IPFS protocol.
- 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
- bot - Zero-dependencies Telegram Bot library with additional UI components
- 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 a 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 bot library.
- hanu - Framework for writing Slack bots.
- Kelp - official trading and market-making bot for the Stellar DEX. Works out-of-the-box, written in Golang, compatible with centralized exchanges and custom trading strategies.
- 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 is written in Go.
- telego - Telegram Bot API library for Golang with full one-to-one API implementation.
- telegram-bot-api - Simple and clean Telegram bot client.
- 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.
- 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.
- gilbert - Build system and task runner for Go projects.
- goyek - Create build pipelines in Go.
- mage - Mage is a make/rake-like build tool using Go.
- mmake - Modern Make.
- realize - Go build a system with file watchers and live to reload. Run, build and watch file changes with custom paths.
- Task - simple "Make" alternative.
- taskctl - Concurrent task runner.
- xc - Task runner with README.md defined tasks, executable markdown.
Code Analysis
Routers
- goreturns - Adds zero-value return statements to match the func return types.
-
staticcheck
- staticcheck is
go veton steroids, applying a ton of static analysis checks you might be used to from tools like ReSharper for C#. - apicompat - Checks recent changes to a Go project for backwards incompatible changes.
- asty - Converts golang AST to JSON and JSON to AST.
- blanket - blanket is a tool that helps you catch functions which don't have direct unit tests in your Go packages.
- ChainJacking - Find which of your Go lang direct GitHub dependencies is susceptible to ChainJacking attack.
- Chronos - Detects race conditions statically
- 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.
- golangci-lint
- golines - Formatter that automatically shortens long lines in Go 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.
-
revive
- in replacement for
golint. - testifylint
-
tickgit
- CLI and go package for surfacing code comment TODOs (in any language) and applying a
git blameto 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.
- vacuum - An ultra-super-fast, lightweight OpenAPI linter and quality checking tool.
- validate - Automatically validates struct fields with tags.
- 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 support fmt.Printf/Sprintf.
- box-cli-maker - Make Highly Customized Boxes for your CLI.
- bubble-table - An interactive table component for bubbletea.
- bubbles - TUI components for bubbletea.
- bubbletea - Go framework to build terminal apps, based on The Elm Architecture.
- 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-palette - Go library that provides elegant and convenient style definitions using ANSI colors. Fully compatible & wraps the fmt library for nice terminal layouts.
- go-prompt - Library for building a powerful interactive prompt, inspired by 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.
- lipgloss - Declaratively define styles for color, format and layout in the terminal.
- 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 a 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.
- termenv - Advanced ANSI style & color support for your terminal applications.
- termui - Go terminal dashboard based on termbox-go and inspired by blessed-contrib.
- uilive - Library for updating terminal output in real time.
- 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.
- carapace-bin - Multi-shell multi-command argument completer.
- carapace-spec - Define simple completions using a spec file.
- 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
flagpackage 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 as 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
flagpackage. - go-andotp - A CLI program to encrypt/decrypt andOTP files. Can be used as a library as well.
- 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 by the flexibility of Perl’s GetOpt::Long.
- gocmd - Go library for building command line applications.