A curated list of awesome Go frameworks, libraries and software
Go to file
Thiago Avelino 3c42f1e9c6 Merge pull request #17 from Soulou/goonvey
Add go convey to testing libraries
2014-07-06 15:24:33 -03:00
LICENSE Initial commit 2014-07-06 10:42:15 -03:00
README.md Merge pull request #17 from Soulou/goonvey 2014-07-06 15:24:33 -03:00

Awesome Go

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

Web Frameworks

Full stack web frameworks.

  • Martini - Martini is a powerful package for quickly writing modular web applications/services in Golang.
  • Gorilla - Gorilla is a web toolkit 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.
  • Goji - Goji is a minimalistic web framework for Golang that's high in antioxidants.
  • web.go - A simple framework to write webapps in Go.
  • 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.
  • Beego - beego is an open-source, high-performance web framework for the Go programming language.
  • traffic - Sinatra inspired regexp/pattern mux and web framework for Go.
  • httprouter - A high performance router. Use this and the standard http handlers to form a very high performance web framework.
  • gocraft/web - A mux and middleware package in Go.
  • mango - Mango is a modular web-application framework for Go, inspired by Rack, and PEP333.

Middlewares

  • negroni - Idiomatic HTTP Middleware for Golang
  • alice - Painless middleware chaining for Go

Template Engine

Libraries and tools for templating and lexing.

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

Authentication and 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 middlewares.

Database

Databases implemented in Go.

  • tiedot - Your NoSQL database powered by Golang.
  • diskv - A home-grown disk-backed key-value store.
  • bolt - A low-level key/value database for Go.
  • go-cache - An in-memory key:value store/cache (similar to Memcached) library for Go, suitable for single-machine applications.

Database Drivers

Libraties for connecting and operating databases.

  • Relational Databases
    • pq - Pure Go Postgres driver for database/sql.
    • 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.
    • go-db - Generic database API for Go.
  • NoSQL Databases
    • 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.
    • redis - A simple, powerful Redis client for Go.
    • redigo - Redigo is a Go client for the Redis database.
    • Neo4j-GO - Neo4j REST Client in golang.
    • gocouch - Couchdb client for Go.
    • gomemcache - memcache client library for the Go programming language.

Email

Libraries that implement email creation and sending

  • email - A robust and flexible email library for Go.

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.

  • img - A selection of image manipulation tools.
  • svgo - Go Language Library for SVG generation.
  • resize - Image resizing for the Go with common interpolation methods.

Text Processing

  • Specific Formats
    • yaml - Implements a YAML 1.2 parser in Go.
    • 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.
    • go-pkg-rss - This package reads RSS and Atom feeds and provides a caching mechanism that adheres to the feed specs.
    • blackfriday - Markdown processor in Go

Testing

Libraries for testing codebases and generating test data.

  • 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.
  • gomock - Mocking framework for the Go programming language.
  • mockhttp.go - Mock object for Go http.ResponseWriter
  • assert - Asserts to Go testing
  • 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.
  • ginkgo - BDD Testing Framework for Go

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.

DevOps Tools

Software and libraries for DevOps.

  • Docker - An open platform for distributed applications for developers and sysadmins.
  • juju - Automate your cloud infrastructure
  • tsuru - An extensible and open source Platform as a Service software.

Resources

Where to discover new Go libraries.

Websites

Tutorials

Twitter

(e)Books

Contributing

Your contributions are always welcome!