Awesome Golang Collection
Go to file
2014-07-08 01:20:10 -03:00
CONTRIBUTING.md New draft of the contribution guidelines 2014-07-07 09:00:13 -06:00
LICENSE Initial commit 2014-07-06 10:42:15 -03:00
README.md Add cli to Utilities 2014-07-07 21:09:37 -07:00

Awesome Go

A curated list of awesome Go frameworks, libraries and software. Inspired by awesome-python.

Contributing

Please take a quick gander at the contribution guidelines first. Thanks to all contributors; you rock!

Contents

Web Frameworks

Full stack web frameworks.

  • Beego - beego is an open-source, high-performance web framework for the Go programming language.
  • Gin - Gin is a web framework written in Go! It features a martini-like API with much better performance, up to 40 times faster. If you need performance and good productivity.
  • gocraft/web - A mux and middleware package in Go.
  • Goji - Goji is a minimalistic web framework for Golang that's high in antioxidants.
  • Gorilla - Gorilla is a web toolkit for the Go programming language.
  • httprouter - A high performance router. Use this and the standard http handlers to form a very high performance web framework.
  • mango - Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.
  • Martini - Martini is a powerful package for quickly writing modular web applications/services in Golang.
  • pat - Sinatra style pattern muxer for Gos net/http library, by the author of Sinatra.
  • Revel - A high-productivity web framework for the Go language.
  • tigertonic - A Go framework for building JSON web services inspired by Dropwizard
  • traffic - Sinatra inspired regexp/pattern mux and web framework for Go.
  • web.go - A simple framework to write webapps in Go.

Middlewares

  • alice - Painless middleware chaining for Go.
  • muxchain - Lightweight middleware for net/http.
  • negroni - Idiomatic HTTP Middleware for Golang.
  • render - Go package for easily rendering JSON, XML, and HTML template responses.

Template Engines

Libraries and tools for templating and lexing.

  • amber - Amber is an elegant templating engine for Go Programming Language It is inspired from HAML and Jade.
  • gold - Gold is a template engine for Go. This simplifies HTML coding in Go web application development. This is influenced by Slim and Jade.
  • kasia.go - Templating system for HTML and other text documents - go implementation.
  • mustache - A Go implementation of the Mustache template language.
  • pongo2 - A Django-like template-engine for Go.
  • Razor - Razor view engine for Golang.
  • Soy - Closure templates (aka Soy templates) for Go, following the official spec

Forms

Libraries for working with forms.

  • binding - Binds form and JSON data from net/http Request to struct.
  • nosurf - A CSRF protection middleware for Go.

Authentication & OAuth

Libraries for implementing authentications schemes.

  • goauth - A Go library for doing header-based OAuth over HTTP or HTTPS. Mostly created for working with Twitter.
  • httpauth - HTTP Authentication middleware.
  • jwt-go - Golang implementation of JSON Web Tokens (JWT).
  • osin - Golang OAuth2 server library.

Database

Databases implemented in Go.

  • bolt - A low-level key/value database for Go.
  • diskv - A home-grown disk-backed key-value store.
  • go-cache - An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.
  • goleveldb - An implementation of the LevelDB key/value database in the Go.
  • groupcache - Groupcache is a caching and cache-filling library, intended as a replacement for memcached in many cases.
  • skydb.io - Sky is an open source database used for flexible, high performance analysis of behavioral data.
  • tiedot - Your NoSQL database powered by Golang.

Database Drivers

Libraties for connecting and operating databases.

  • Relational Databases

    • go-db - Generic database API for Go.
    • go-pgsql - A PostgreSQL client package for the Go Programming Language.
    • go-sql-driver/mysql - MySQL driver for Go.
    • go-sqlite3 - SQLite3 driver for go that using database/sql.
    • pq - Pure Go Postgres driver for database/sql.
  • NoSQL Databases

    • gocouch - Couchdb client for Go.
    • gomemcache - memcache client library for the Go programming language.
    • mgo - MongoDB driver for the Go language that implements a rich and well tested selection of features under a very simple API following standard Go idioms.
    • Neo4j-GO - Neo4j REST Client in golang.
    • redigo - Redigo is a Go client for the Redis database.
    • redis - A simple, powerful Redis client for Go.

Email

Libraries that implement email creation and sending

  • email - A robust and flexible email library for Go.
  • Go-MailHog - Catches mail and serves it through a dream. Inspired by MailCatcher, easier to install.
  • gomail - Gomail provides a very simple API to send emails. It supports attachments, multipart emails and encoding of non-ASCII characters.

Messaging

Libraries that implement messaging systems

  • dbus - Native Go bindings for D-Bus.
  • Uniqush-Push - A redis backed unified push service for server-side notifications to mobile devices.
  • gopush-cluster - gopush-cluster is a go push server cluster.

ORM

Libraries that implement Object-Relational Mapping or datamapping techniques.

  • BeeDB - go ORM,support database/sql interfacepq/mysql/sqlite.
  • GORM - The fantastic ORM library for Golang, aims to be developer friendly.
  • gorp - Go Relational Persistence, ORM-ish library for Go.
  • hood - Database agnostic ORM for Go.
  • QBS - Stands for Query By Struct. A Go ORM.
  • Xorm - Simple and powerful ORM for Go.
  • upper.io/db - Single interface for interacting with different data sources through the use of adapters that wrap mature database drivers.

Imagery

Libraries for manipulating images.

  • go-nude - Nudity detection with Go.
  • go-webcolors - Port of webcolors library from Python to Go.
  • img - A selection of image manipulation tools.
  • imagick - Go binding to ImageMagick's MagickWand C API.
  • imaging - Simple Go image processing package.
  • resize - Image resizing for the Go with common interpolation methods.
  • rez - Image resizing, functionality similar to resize
  • svgo - Go Language Library for SVG generation.

Text Processing

  • Specific Formats
    • blackfriday - Markdown processor in Go
    • bluemonday - HTML Sanitizer
    • go-pkg-rss - This package reads RSS and Atom feeds and provides a caching mechanism that adheres to the feed specs.
    • go-pkg-xmlx - Extension to the standard Go XML package. Maintains a node tree that allows forward/backwards browsing and exposes some simple single/multi-node search functions.
    • toml - TOML configuration format (encoder/decoder with reflection).
    • yaml - Implements a YAML 1.2 parser in Go.
  • Utility
    • go-humanize - Formatters for time, numbers, and memory size to human readable format.

Natural Language Processing

Libraries for working with human languages.

  • go-eco - Similarity, dissimilarity and distance matrices; diversity, equitability and inequality measures; species richness estimators; coenocline models.
  • go-nlp - Utilities for working with discrete probability distributions and other tools useful for doing NLP work.
  • go-porterstemmer - A native Go clean room implementation of the Porter Stemming algorithm.
  • go-stem - Implementation of the porter stemming algorithm.
  • golibstemmer - Go bindings for the snowball libstemmer library including porter 2
  • gounidecode - Unicode transliterator (also known as unidecode) for Go
  • icu - Cgo binding for icu4c C library detection and conversion functions. Guaranteed compatibility with version 50.1.
  • libtextcat - Cgo binding for libtextcat C library. Guaranteed compatibility with version 2.2.
  • MMSEGO - This is a GO implementation of MMSEG which a Chinese word splitting algorithm.
  • paicehusk - Golang implementation of the Paice/Husk Stemming Algorithm
  • porter - This is a fairly straighforward port of Martin Porter's C implementation of the Porter stemming algorithm.
  • snowball - Snowball stemmer port (cgo wrapper) for Go. Provides word stem extraction functionality Snowball native.
  • stemmer - Stemmer packages for Go programming language. Includes English and German stemmers.
  • textcat - A Go package for n-gram based text categorization, with support for utf-8 and raw text

Science and Data Analysis

Libraries for scientific computing and data analyzing.

  • go.matrix - linear algebra for go
  • gocomplex - A complex number library for the Go programming language.
  • mudlark-go - A collection of packages providing (hopefully) useful code for use in software using Google's Go programming language.
  • gostat - A statistics library for the go language
  • gofrac - A (goinstallable) fractions library for go with support for basic arithmetic.
  • geom - 2D geometry for golang
  • blas - Implementation of BLAS (Basic Linear Algebra Subprograms)
  • go-fn - Mathematical functions written in Go language, that are not covered by math pkg
  • go-gt - Graph theory algorithms written in "Go" language
  • vectormath - Vectormath for Go, an adaptation of the scalar C functions from Sony's Vector Math library, as found in the Bullet-2.79 source code.

Machine Learning

Libraries for Machine Learning.

  • CloudForest - Fast, flexible, multi-threaded ensembles of decision trees for machine learning in pure Go.
  • mlgo - This project aims to provide minimalistic machine learning algorithms in Go.
  • go-fann - Go bindings for Fast Artificial Neural Networks(FANN) library.
  • neural-go - A multilayer perceptron network implemented in Go, with training via backpropagation.
  • bayesian - Naive Bayesian Classification for Golang.
  • shield - Bayesian text classifier with flexible tokenizers and storage backends for Go
  • probab - Probability distribution functions. Bayesian inference. Written in pure Go.
  • libsvm - libsvm golang version derived work based on LIBSVM 3.14.
  • golinear - liblinear bindings for Go
  • go-pr - Pattern recognition package in Go lang.
  • go-galib - Genetic Algorithms library written in Go / golang

Testing

Libraries for testing codebases and generating test data.

  • Testing Frameworks

    • assert - Asserts to Go testing
    • ginkgo - BDD Testing Framework for Go
    • gocheck - A more advanced testing framework alternative to gotest.
    • GoConvey - BDD-ish, rspec inspirated testing framework, automatic testing, coverage report and web UI
    • GoSpec - BDD-style testing framework for the Go programming language.
    • gospecify - This provides a BDD syntax for testing your Go code. It should be familiar to anybody who has used libraries such as rspec.
    • Hamcrest - fluent framework for declarative Matcher objects that, when applied to input values, produce self-describing results.
    • restit - A Go micro framework to help writing RESTful API integration test.
    • Testify - A sacred extension to the standard go testing package.
  • Mock

    • gomock - Mocking framework for the Go programming language.
    • mockhttp.go - Mock object for Go http.ResponseWriter

Audio

Libraries for manipulating audio.

  • PortAudio - Go bindings for the PortAudio audio I/O library.
  • gosndfile - Go bindings for libsndfile.
  • go-sox - libsox bindings for go.

Video

Libraries for manipulating video.

  • gmf - Go bindings for FFmpeg av* libraries.
  • gst - Go bindings for GStreamer.
  • aac/h264 - Golang aac/h264 encoder and decoder.

Date & Time

Libraries for working with dates and times.

  • now - Now is a time toolkit for golang.

Game Development

Awesome game development libraries.

  • GarageEngine - 2d game engine written in Go working on OpenGL.
  • fungo - Fun Unified Game library for te gO Programming language.
  • go-rpg - Go package for creating role playing games
  • terrago - Fractal terrain generator in Go.
  • glop - Glop (Game Library Of Power) is a fairly simple cross-platform game library.

Editor Plugins

Awesome plugins for editors.

  • vim-go - Go development plugin for Vim.
  • GoSublime - A Golang plugin collection for the text editor SublimeText 2 providing code completion and other IDE-like features.

GUI

Libraries for building GUI Applications

  • ui - Platform-native GUI library for Go.
  • go-gtk - Go bindings for GTK
  • go-qml - QML support for the Go language
  • gotk3 - Go bindings for GTK3.

OpenGL

Libraries for using OpenGL in Go.

  • glfw3 - Go bindings for GLFW 3.
  • gl - Go bindings for OpenGL. Requires an external dependency GLEW.
  • glow - Go binding generator and bindings for OpenGL.
  • mathgl - Pure Go math package specialized for 3D math, with inspiration from GLM.

Third-party APIs

Libraries for accessing third party APIs.

  • github - Go library for accessing the GitHub API
  • hipchat - This project implements a golang client library for the Hipchat API.
  • hipchat (xmpp) - A golang package to communicate with HipChat over XMPP

Package Management

Libraries for package and dependency management.

  • godep - dependency tool for go, godep helps build packages reproducibly by fixing their dependencies.

DevOps Tools

Software and libraries for DevOps.

  • Circuit - Circuit is a programmable platform-as-a-service (PaaS) and/or Infrastructure-as-a-Service (IaaS), for management, discovery, synchronization and orchestration of services and hosts comprising cloud applications.
  • Docker - An open platform for distributed applications for developers and sysadmins.
  • Go-AWS-Auth - AWS (Amazon Web Services) request signing library
  • Gogs - A Self Hosted Git Service in the Go Programming Language.
  • confd - Manage local application configuration files using templates and data from etcd or consul.
  • etcd - A highly-available key value store for shared configuration and service discovery.
  • fleet - A Distributed init System.
  • gaudi - Gaudi automates the setup of isolated and decoupled dev environments.
  • [hk] (https://github.com/heroku/hk) - Heroku command-line interface in Go
  • juju - Automate your cloud infrastructure
  • tsuru - An extensible and open source Platform as a Service software.

Utilities

General utilities and tools to make your life easier.

  • Boom - Boom is a tiny program that sends some load to a web application.
  • cli - A small package for building command line apps in Go
  • go-selfupdate - Enable your Go applications to self update
  • godbg - Web-based gdb front-end application
  • gox - A dead simple, no frills Go cross compile tool.
  • goxc - build tool for Go, with a focus on cross-compiling and packaging.
  • GVM - GVM provides an interface to manage Go versions.
  • Mora - REST server for accessing MongoDB documents and meta data
  • mp - A simple cli email parser. It currently takes stdin and outputs JSON.
  • Postman - Command-line utility for batch-sending email.

Logging

Libraries for generating and working with log files.

  • glog - Leveled execution logs for Go.
  • go-log - Log lib supports level and multi handlers.
  • logrus - Structured, pluggable logging for Go.
  • seelog - logging functionality with flexible dispatching, filtering, and formatting.
  • stdlog - Stdlog is an object-oriented library providing leveled logging. It is very useful for cron jobs.

Code Analysis and Linter

Libraries and tools for analysing, parsing and manipulation codebases.

  • GoLint - Golint is a linter for Go source code.

Code generation & generics

Tools for brining generics-like functionality to Go via code generation

  • gen - Code generation tool for generics-like functionality.
  • go-linq - .NET LINQ-like query methods for Go.
  • go generate - A proposed code generation syntax from Rob Pike.

Embeddable Scripting Languages

Embedding other languages inside your go code

  • anko - Scriptable interpreter written in Go
  • golua - Go bindings for Lua C API
  • go-python - naive go bindings to the CPython C-API
  • otto - A JavaScript interpreter written in Go
  • v8-go - V8 JavaScript engine bindings for Go

Resources

Where to discover new Go libraries.

Websites

Tutorials

Twitter

(e)Books