diff --git a/README.md b/README.md index fd46e957..5595bb94 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ awesome-go - Curated list awesome Go frameworks, libraries and software | Product Hunt + ## Sponsorships > [![Digital Ocean](https://avelino.run/sponsors/do_logo_horizontal_blue-210.png)](https://m.do.co/c/bd3b723c0a36?utm_medium=opensource&utm_source=awesome-go) @@ -119,6 +120,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a - [Websites](#websites) - [Tutorials](#tutorials) +**[⬆ back to top](#contents)** + ## Audio and Music *Libraries for manipulating audio.* @@ -137,7 +140,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [portmidi](https://github.com/rakyll/portmidi) - Go bindings for PortMidi. * [vorbis](https://github.com/mccoyst/vorbis) - "Native" Go Vorbis decoder (uses CGO, but has no dependencies). -## Authentication and OAuth +## + *Libraries for implementing authentications schemes.* @@ -175,7 +179,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [sessionup](https://github.com/swithek/sessionup) - Simple, yet effective HTTP session management and identification package. * [sjwt](https://github.com/brianvoe/sjwt) - Simple jwt generator and parser. -## Blockchain +## + *Tools for building blockchains.* @@ -186,6 +191,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a +**[⬆ back to top](#contents)** + ## Bot Building *Libraries for building and working with bots.* @@ -212,6 +219,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [telegram-bot-api](https://github.com/Syfaro/telegram-bot-api) - Simple and clean Telegram bot client. * [Tenyks](https://github.com/kyleterry/tenyks) - Service oriented IRC bot using Redis and JSON for messaging. +**[⬆ back to top](#contents)** + ## Build Automation *Libraries and tools helping with build automation.* @@ -226,6 +235,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [Task](https://github.com/go-task/task) - simple "Make" alternative. * [taskctl](https://github.com/taskctl/taskctl) - Concurrent task runner. +**[⬆ back to top](#contents)** + ## Command Line ### Standard CLI @@ -273,6 +284,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [wlog](https://github.com/dixonwille/wlog) - Simple logging interface that supports cross-platform color and concurrency. * [wmenu](https://github.com/dixonwille/wmenu) - Easy to use menu structure for cli applications that prompts users to make choices. +**[⬆ back to top](#contents)** + ### Advanced Console UIs *Libraries for building Console Applications and Console User Interfaces.* @@ -310,6 +323,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [uitable](https://github.com/gosuri/uitable) - Library to improve readability in terminal apps using tabular data. * [yacspin](https://github.com/theckman/yacspin) - Yet Another CLi Spinner package, for working with terminal spinners. +**[⬆ back to top](#contents)** + ## Configuration *Libraries for configuration parsing.* @@ -363,6 +378,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [xdg](https://github.com/OpenPeeDeeP/xdg) - Cross platform package that follows the [XDG Standard](https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html). * [ini](https://github.com/wlevene/ini) - INI Parser & Write Library, Unmarshal to Struct,Marshal to Json,Write File,watch file. +**[⬆ back to top](#contents)** + ## Continuous Integration *Tools for help with continuous integration.* @@ -376,6 +393,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [overalls](https://github.com/go-playground/overalls) - Multi-Package go project coverprofile for tools like goveralls. * [roveralls](https://github.com/LawrenceWoodman/roveralls) - Recursive coverage testing tool. +**[⬆ back to top](#contents)** + ## CSS Preprocessors *Libraries for preprocessing CSS files.* @@ -383,6 +402,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [gcss](https://github.com/yosssi/gcss) - Pure Go CSS Preprocessor. * [go-libsass](https://github.com/wellington/go-libsass) - Go wrapper to the 100% Sass compatible libsass project. +**[⬆ back to top](#contents)** + ## Data Structures *Generic datastructures and algorithms in Go.* @@ -455,6 +476,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [typ](https://github.com/gurukami/typ) - Null Types, Safe primitive type conversion and fetching value from complex structures. * [willf/bloom](https://github.com/willf/bloom) - Go package implementing Bloom filters. +**[⬆ back to top](#contents)** + ## Database *Databases implemented in Go.* @@ -570,6 +593,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [Squirrel](https://github.com/Masterminds/squirrel) - Go library that helps you build SQL queries. * [xo](https://github.com/knq/xo) - Generate idiomatic Go code for databases based on existing schema definitions or custom queries supporting PostgreSQL, MySQL, SQLite, Oracle, and Microsoft SQL Server. +**[⬆ back to top](#contents)** + ## Database Drivers *Libraries for connecting and operating databases.* @@ -634,6 +659,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [dsc](https://github.com/viant/dsc) - Datastore connectivity for SQL, NoSQL, structured files. * [gokv](https://github.com/philippgille/gokv) - Simple key-value store abstraction and implementations for Go (Redis, Consul, etcd, bbolt, BadgerDB, LevelDB, Memcached, DynamoDB, S3, PostgreSQL, MongoDB, CockroachDB and many more). +**[⬆ back to top](#contents)** + ## Date and Time *Libraries for working with dates and times.* @@ -659,6 +686,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [timeutil](https://github.com/leekchan/timeutil) - Useful extensions (Timedelta, Strftime, ...) to the golang's time package. * [tuesday](https://github.com/osteele/tuesday) - Ruby-compatible Strftime function. +**[⬆ back to top](#contents)** + ## Distributed Systems *Packages that help with building Distributed Systems.* @@ -712,6 +741,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [sleuth](https://github.com/ursiform/sleuth) - Library for master-less p2p auto-discovery and RPC between HTTP services (using [ZeroMQ](https://github.com/zeromq/libzmq)). * [torrent](https://github.com/anacrolix/torrent) - BitTorrent client package. +**[⬆ back to top](#contents)** + ## Dynamic DNS *Tools for updating dynamic DNS records.* @@ -720,6 +751,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [dyndns](https://gitlab.com/alcastle/dyndns) - Background Go process to regularly and automatically check your IP Address and make updates to (one or many) Dynamic DNS records for Google domains whenever your address changes. * [GoDNS](https://github.com/timothyye/godns) - A dynamic DNS client tool, supports DNSPod & HE.net, written in Go. +**[⬆ back to top](#contents)** + ## Email *Libraries and tools that implement email creation and sending.* @@ -742,6 +775,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [SendGrid](https://github.com/sendgrid/sendgrid-go) - SendGrid's Go library for sending email. * [smtp](https://github.com/mailhog/smtp) - SMTP server protocol state machine. +**[⬆ back to top](#contents)** + ## Embeddable Scripting Languages *Embedding other languages inside your go code.* @@ -765,6 +800,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [purl](https://github.com/ian-kent/purl) - Perl 5.18.2 embedded in Go. * [tengo](https://github.com/d5/tengo) - Bytecode compiled script language for Go. +**[⬆ back to top](#contents)** + ## Error Handling *Libraries for handling errors.* @@ -782,6 +819,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [go-multierror](https://github.com/hashicorp/go-multierror) - Go (golang) package for representing a list of errors as a single error. * [tracerr](https://github.com/ztrue/tracerr) - Golang errors with stack trace and source fragments. +**[⬆ back to top](#contents)** + ## File Handling *Libraries for handling files and file systems.* @@ -811,6 +850,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [todotxt](https://github.com/1set/todotxt) - Go library for Gina Trapani's [*todo.txt*](http://todotxt.org/) files, supports parsing and manipulating of task lists in the [*todo.txt* format](https://github.com/todotxt/todo.txt). * [vfs](https://github.com/C2FO/vfs) - A pluggable, extensible, and opinionated set of filesystem functionality for Go across a number of filesystem types such as os, S3, and GCS. +**[⬆ back to top](#contents)** + ## Financial *Packages for accounting and finance.* @@ -835,6 +876,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [transaction](https://github.com/claygod/transaction) - Embedded transactional database of accounts, running in multithreaded mode. * [vat](https://github.com/dannyvankooten/vat) - VAT number validation & EU VAT rates. +**[⬆ back to top](#contents)** + ## Forms *Libraries for working with forms.* @@ -850,6 +893,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [qs](https://github.com/sonh/qs) - Go module for encoding structs into URL query parameters. * [queryparam](https://github.com/tomwright/queryparam) - Decode `url.Values` into usable struct values of standard or custom types. +**[⬆ back to top](#contents)** + ## Functional *Packages to support functional programming in Go.* @@ -859,6 +904,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [go-underscore](https://github.com/tobyhede/go-underscore) - Useful collection of helpfully functional Go collection utilities. * [gofp](https://github.com/rbrahul/gofp) - A lodash like powerful utility library for Golang. +**[⬆ back to top](#contents)** + ## Game Development *Awesome game development libraries.* @@ -882,6 +929,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [termloop](https://github.com/JoelOtter/termloop) - Terminal-based game engine for Go, built on top of Termbox. * [tile](https://github.com/kelindar/tile) - Data-oriented and cache-friendly 2D Grid library (TileMap), includes pathfinding, observers and import/export. +**[⬆ back to top](#contents)** + ## Generation and Generics *Tools to enhance the language with features like generics via code generation.* @@ -901,6 +950,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [pkgreflect](https://github.com/ungerik/pkgreflect) - Go preprocessor for package scoped reflection. * [typeregistry](https://github.com/xiaoxin01/typeregistry) - A library to create type dynamically. +**[⬆ back to top](#contents)** + ## Geographic *Geographic tools and servers* @@ -916,6 +967,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [Tile38](https://github.com/tidwall/tile38) - Geolocation DB with spatial index and realtime geofencing. * [WGS84](https://github.com/wroge/wgs84) - Library for Coordinate Conversion and Transformation (ETRS89, OSGB36, NAD83, RGF93, Web Mercator, UTM). +**[⬆ back to top](#contents)** + ## Go Compilers *Tools for compiling Go to other languages.* @@ -925,6 +978,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [gopherjs](https://github.com/gopherjs/gopherjs) - Compiler from Go to JavaScript. * [tardisgo](https://github.com/tardisgo/tardisgo) - Golang to Haxe to CPP/CSharp/Java/JavaScript transpiler. +**[⬆ back to top](#contents)** + ## Goroutines *Tools for managing and working with Goroutines.* @@ -972,6 +1027,8 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [worker-pool](https://github.com/vardius/worker-pool) - goworker is a Go simple async worker pool. * [workerpool](https://github.com/gammazero/workerpool) - Goroutine pool that limits the concurrency of task execution, not the number of tasks queued. +**[⬆ back to top](#contents)** + ## GUI *Libraries for building GUI Applications.* @@ -1003,12 +1060,16 @@ Please take a quick gander at the [contribution guidelines](https://github.com/a * [zenity](https://github.com/ncruces/zenity) - Cross-platform Go library and CLI to create simple dialogs that interact graphically with the user. +**[⬆ back to top](#contents)** + ## Hardware *Libraries, tools, and tutorials for interacting with hardware.* See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive list. +**[⬆ back to top](#contents)** + ## Images *Libraries for manipulating images.* @@ -1056,6 +1117,8 @@ See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive lis * [tga](https://github.com/ftrvxmtrx/tga) - Package tga is a TARGA image format decoder/encoder. * [webp-server](https://github.com/mehdipourfar/webp-server) - Simple and minimal image server capable of storing, resizing, converting and caching images. +**[⬆ back to top](#contents)** + ## IoT (Internet of Things) *Libraries for programming devices of the IoT.* @@ -1072,6 +1135,8 @@ See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive lis * [periph](https://periph.io/) - Peripherals I/O to interface with low-level board facilities. * [sensorbee](https://github.com/sensorbee/sensorbee) - Lightweight stream processing engine for IoT. +**[⬆ back to top](#contents)** + ## Job Scheduler *Libraries for scheduling jobs.* @@ -1089,6 +1154,8 @@ See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive lis * [scheduler](https://github.com/carlescere/scheduler) - Cronjobs scheduling made easy. * [tasks](https://github.com/madflojo/tasks) - An easy to use in-process scheduler for recurring tasks in Go. +**[⬆ back to top](#contents)** + ## JSON *Libraries for working with JSON.* @@ -1125,6 +1192,8 @@ See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive lis * [ujson](https://github.com/olvrng/ujson) - Fast and minimal JSON parser and transformer that works on unstructured JSON. * [vjson](https://github.com/miladibra10/vjson) - Go package for validating JSON objects with declaring a JSON schema with fluent API. +**[⬆ back to top](#contents)** + ## Logging *Libraries for generating and working with log files.* @@ -1180,6 +1249,8 @@ See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive lis * [zerolog](https://github.com/rs/zerolog) - Zero-allocation JSON logger. * [zkits-logger](https://github.com/edoger/zkits-logger) - A powerful zero-dependency JSON logger. +**[⬆ back to top](#contents)** + ## Machine Learning *Libraries for Machine Learning.* @@ -1223,6 +1294,8 @@ See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive lis * [tfgo](https://github.com/galeone/tfgo) - Easy to use Tensorflow bindings: simplifies the usage of the official Tensorflow Go bindings. Define computational graphs in Go, load and execute models trained in Python. * [Varis](https://github.com/Xamber/Varis) - Golang Neural Network. +**[⬆ back to top](#contents)** + ## Messaging *Libraries that implement messaging systems.* @@ -1277,6 +1350,8 @@ See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive lis * [Uniqush-Push](https://github.com/uniqush/uniqush-push) - Redis backed unified push service for server-side notifications to mobile devices. * [zmq4](https://github.com/pebbe/zmq4) - Go interface to ZeroMQ version 4. Also available for [version 3](https://github.com/pebbe/zmq3) and [version 2](https://github.com/pebbe/zmq2). +**[⬆ back to top](#contents)** + ## Microsoft Office * [unioffice](https://github.com/unidoc/unioffice) - Pure go library for creating and processing Office Word (.docx), Excel (.xlsx) and Powerpoint (.pptx) documents. @@ -1291,6 +1366,8 @@ See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive lis * [xlsx](https://github.com/tealeg/xlsx) - Library to simplify reading the XML format used by recent version of Microsoft Excel in Go programs. * [xlsx](https://github.com/plandem/xlsx) - Fast and safe way to read/update your existing Microsoft Excel files in Go programs. +**[⬆ back to top](#contents)** + ## Miscellaneous ### Dependency Injection @@ -1310,6 +1387,8 @@ See [go-hardware](https://github.com/rakyll/go-hardware) for a comprehensive lis * [nject/npoint](https://github.com/BlueOwlOpenSource/nject) - A type safe, reflective framework based on types for libraries, tests, and endpoints. * [wire](https://github.com/Fs02/wire) - Strict Runtime Dependency Injection for Golang. +**[⬆ back to top](#contents)** + ### Project Layout _**Unofficial** set of patterns for structuring projects._ @@ -1326,6 +1405,8 @@ _**Unofficial** set of patterns for structuring projects._ * [scaffold](https://github.com/catchplay/scaffold) - Scaffold generates a starter Go project layout. Lets you focus on business logic implemented. * [wangyoucao577/go-project-layout](https://github.com/wangyoucao577/go-project-layout) - Set of practices and discussions on how to structure Go project layout. +**[⬆ back to top](#contents)** + ### Strings *Libraries for working with strings.* @@ -1336,6 +1417,8 @@ _**Unofficial** set of patterns for structuring projects._ * [strutil](https://github.com/ozgio/strutil) - String utilities. * [xstrings](https://github.com/huandu/xstrings) - Collection of useful string functions ported from other languages. +**[⬆ back to top](#contents)** + ### Uncategorized *These libraries were placed here because none of the other categories seemed to fit.* @@ -1391,6 +1474,8 @@ _**Unofficial** set of patterns for structuring projects._ * [xdg](https://github.com/rkoesters/xdg) - FreeDesktop.org (xdg) Specs implemented in Go. * [xkg](https://github.com/go-xkg/xkg) - X Keyboard Grabber. +**[⬆ back to top](#contents)** + ## Natural Language Processing *Libraries for working with human languages.* @@ -1437,6 +1522,8 @@ _**Unofficial** set of patterns for structuring projects._ * [whatlanggo](https://github.com/abadojack/whatlanggo) - Natural language detection package for Go. Supports 84 languages and 24 scripts (writing systems e.g. Latin, Cyrillic, etc). * [when](https://github.com/olebedev/when) - Natural EN and RU language date/time parser with pluggable rules. +**[⬆ back to top](#contents)** + ## Networking *Libraries for working with various layers of the network.* @@ -1505,6 +1592,8 @@ _**Unofficial** set of patterns for structuring projects._ * [winrm](https://github.com/masterzen/winrm) - Go WinRM client to remotely execute commands on Windows machines. * [xtcp](https://github.com/xfxdev/xtcp) - TCP Server Framework with simultaneous full duplex communication, graceful shutdown, and custom protocol. +**[⬆ back to top](#contents)** + ### HTTP Clients *Libraries for making HTTP requests.* @@ -1523,6 +1612,8 @@ _**Unofficial** set of patterns for structuring projects._ * [rq](https://github.com/ddo/rq) - A nicer interface for golang stdlib HTTP client. * [sling](https://github.com/dghubble/sling) - Sling is a Go HTTP client library for creating and sending API requests. +**[⬆ back to top](#contents)** + ## OpenGL *Libraries for using OpenGL in Go.* @@ -1534,6 +1625,8 @@ _**Unofficial** set of patterns for structuring projects._ * [goxjs/glfw](https://github.com/goxjs/glfw) - Go cross-platform glfw library for creating an OpenGL context and receiving events. * [mathgl](https://github.com/go-gl/mathgl) - Pure Go math package specialized for 3D math, with inspiration from GLM. +**[⬆ back to top](#contents)** + ## ORM *Libraries that implement Object-Relational Mapping or datamapping techniques.* @@ -1560,6 +1653,8 @@ _**Unofficial** set of patterns for structuring projects._ * [XORM](https://gitea.com/xorm/xorm) - Simple and powerful ORM for Go. (Support: MySQL, MyMysql, PostgreSQL, Tidb, SQLite3, MsSql and Oracle). * [Zoom](https://github.com/albrow/zoom) - Blazing-fast datastore and querying engine built on Redis. +**[⬆ back to top](#contents)** + ## Package Management *Official tooling for dependency and package management* @@ -1587,6 +1682,8 @@ _**Unofficial** set of patterns for structuring projects._ * [nut](https://github.com/jingweno/nut) - Vendor Go dependencies. * [VenGO](https://github.com/DamnWidget/VenGO) - create and manage exportable isolated go virtual environments. +**[⬆ back to top](#contents)** + ## Performance * [jaeger](https://github.com/jaegertracing/jaeger) - A distributed tracing system. @@ -1595,6 +1692,8 @@ _**Unofficial** set of patterns for structuring projects._ * [statsviz](https://github.com/arl/statsviz) - Live visualization of your Go application runtime statistics. * [tracer](https://github.com/kamilsk/tracer) - Simple, lightweight tracing. +**[⬆ back to top](#contents)** + ## Query Language * [api-fu](https://github.com/ccbrown/api-fu) - Comprehensive GraphQL implementation. @@ -1612,6 +1711,8 @@ _**Unofficial** set of patterns for structuring projects._ * [rqp](https://github.com/timsolov/rest-query-parser) - Query Parser for REST API. Filtering, validations, both `AND`, `OR` operations are supported directly in the query. * [straf](https://github.com/SonicRoshan/straf) - Easily Convert Golang structs to GraphQL objects. +**[⬆ back to top](#contents)** + ## Resource Embedding * [debme](https://github.com/leaanthony/debme) - Create an `embed.FS` from an existing `embed.FS` subdirectory. @@ -1627,6 +1728,8 @@ _**Unofficial** set of patterns for structuring projects._ * [templify](https://github.com/wlbr/templify) - Embed external template files into Go code to create single file binaries. * [vfsgen](https://github.com/shurcooL/vfsgen) - Generates a vfsdata.go file that statically implements the given virtual filesystem. +**[⬆ back to top](#contents)** + ## Science and Data Analysis *Libraries for scientific computing and data analyzing.* @@ -1665,6 +1768,8 @@ _**Unofficial** set of patterns for structuring projects._ * [TextRank](https://github.com/DavidBelicza/TextRank) - TextRank implementation in Golang with extendable features (summarization, weighting, phrase extraction) and multithreading (goroutine) support. * [triangolatte](https://github.com/tchayen/triangolatte) - 2D triangulation library. Allows translating lines and polygons (both based on points) to the language of GPUs. +**[⬆ back to top](#contents)** + ## Security *Libraries that are used to help make your application more secure.* @@ -1698,6 +1803,8 @@ _**Unofficial** set of patterns for structuring projects._ * [themis](https://github.com/cossacklabs/themis) - high-level cryptographic library for solving typical data security tasks (secure data storage, secure messaging, zero-knowledge proof authentication), available for 14 languages, best fit for multi-platform apps. +**[⬆ back to top](#contents)** + ## Serialization *Libraries and tools for binary serialization.* @@ -1724,6 +1831,8 @@ _**Unofficial** set of patterns for structuring projects._ * [structomap](https://github.com/tuvistavie/structomap) - Library to easily and dynamically generate maps from static structures. * [unitpacking](https://github.com/recolude/unitpacking) - Library to pack unit vectors into as fewest bytes as possible. +**[⬆ back to top](#contents)** + ## Server Applications * [algernon](https://github.com/xyproto/algernon) - HTTP/2 web server with built-in support for Lua, Markdown, GCSS and Amber. @@ -1755,6 +1864,8 @@ _**Unofficial** set of patterns for structuring projects._ * [Trickster](https://github.com/tricksterproxy/trickster) - HTTP reverse proxy cache and time series accelerator. +**[⬆ back to top](#contents)** + ## Stream Processing *Libraries and tools for stream processing and reactive programming.* @@ -1763,6 +1874,8 @@ _**Unofficial** set of patterns for structuring projects._ * [machine](https://github.com/whitaker-io/machine) - Go library for writing and generating stream workers with built in metrics and traceability. * [stream](https://github.com/youthlin/stream) - Go Stream, like Java 8 Stream: Filter/Map/FlatMap/Peek/Sorted/ForEach/Reduce... +**[⬆ back to top](#contents)** + ## Template Engines *Libraries and tools for templating and lexing.* @@ -1791,6 +1904,8 @@ _**Unofficial** set of patterns for structuring projects._ * [tbd](https://github.com/lucasepe/tbd) - A really simple way to create text templates with placeholders - exposes extra builtin Git repo metadata * [velvet](https://github.com/gobuffalo/velvet) - Complete handlebars implementation in Go. +**[⬆ back to top](#contents)** + ## Testing *Libraries for testing codebases and generating test data.* @@ -1881,6 +1996,8 @@ _**Unofficial** set of patterns for structuring projects._ * Fail injection * [failpoint](https://github.com/pingcap/failpoint) - An implementation of [failpoints](http://www.freebsd.org/cgi/man.cgi?query=fail) for Golang. +**[⬆ back to top](#contents)** + ## Text Processing *Libraries for parsing and manipulating texts.* @@ -1952,6 +2069,8 @@ _**Unofficial** set of patterns for structuring projects._ * [xj2go](https://github.com/stackerzzq/xj2go) - Convert xml or json to go struct. * [xurls](https://github.com/mvdan/xurls) - Extract urls from text. +**[⬆ back to top](#contents)** + ## Third-party APIs *Libraries for accessing third party APIs.* @@ -2048,6 +2167,8 @@ _**Unofficial** set of patterns for structuring projects._ * [ynab](https://github.com/brunomvsouza/ynab.go) - Go wrapper for the YNAB API. * [zooz](https://github.com/gojuno/go-zooz) - Go client for the Zooz API. +**[⬆ back to top](#contents)** + ## Utilities *General utilities and tools to make your life easier.* @@ -2202,6 +2323,8 @@ _**Unofficial** set of patterns for structuring projects._ * [wuzz](https://github.com/asciimoo/wuzz) - Interactive cli tool for HTTP inspection. * [xferspdy](https://github.com/monmohan/xferspdy) - Xferspdy provides binary diff and patch library in golang. +**[⬆ back to top](#contents)** + ## UUID *Libraries for working with UUIDs.* @@ -2218,6 +2341,8 @@ _**Unofficial** set of patterns for structuring projects._ * [uuid](https://github.com/google/uuid) - Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services. * [wuid](https://github.com/edwingeng/wuid) - An extremely fast unique number generator, 10-135 times faster than UUID. +**[⬆ back to top](#contents)** + ## Validation *Libraries for validation.* @@ -2234,6 +2359,8 @@ _**Unofficial** set of patterns for structuring projects._ * [validate](https://github.com/gobuffalo/validate) - This package provides a framework for writing validations for Go applications. * [validator](https://github.com/go-playground/validator) - Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving. +**[⬆ back to top](#contents)** + ## Version Control *Libraries for version control.* @@ -2246,6 +2373,8 @@ _**Unofficial** set of patterns for structuring projects._ * [hercules](https://github.com/src-d/hercules) - gaining advanced insights from Git repository history. * [hgo](https://github.com/beyang/hgo) - Hgo is a collection of Go packages providing read-access to local Mercurial repositories. +**[⬆ back to top](#contents)** + ## Video *Libraries for manipulating video.* @@ -2263,6 +2392,8 @@ _**Unofficial** set of patterns for structuring projects._ * [m3u8](https://github.com/grafov/m3u8) - Parser and generator library of M3U8 playlists for Apple HLS. * [v4l](https://github.com/korandiz/v4l) - Video capture library for Linux, written in Go. +**[⬆ back to top](#contents)** + ## Web Frameworks *Full stack web frameworks.* @@ -2315,6 +2446,8 @@ _**Unofficial** set of patterns for structuring projects._ * [WebGo](https://github.com/bnkamalesh/webgo) - A micro-framework to build web apps; with handler chaining, middleware and context injection. With standard library compliant HTTP handlers(i.e. http.HandlerFunc). * [YARF](https://github.com/yarf-framework/yarf) - Fast micro-framework designed to build REST APIs and web services in a fast and simple way. +**[⬆ back to top](#contents)** + ### Middlewares #### Actual middlewares @@ -2347,6 +2480,8 @@ _**Unofficial** set of patterns for structuring projects._ * [rye](https://github.com/InVisionApp/rye) - Tiny Go middleware library (with canned Middlewares) that supports JWT, CORS, Statsd, and Go 1.7 context. * [stats](https://github.com/thoas/stats) - Go middleware that stores various information about your web application. +**[⬆ back to top](#contents)** + ### Routers * [alien](https://github.com/gernest/alien) - Lightweight and fast http router from outer space. @@ -2373,6 +2508,8 @@ _**Unofficial** set of patterns for structuring projects._ * [xmux](https://github.com/rs/xmux) - High performance muxer based on `httprouter` with `net/context` support. * [xujiajun/gorouter](https://github.com/xujiajun/gorouter) - A simple and fast HTTP router for Go. +**[⬆ back to top](#contents)** + ## WebAssembly * [dom](https://github.com/dennwc/dom) - DOM library. @@ -2382,12 +2519,16 @@ _**Unofficial** set of patterns for structuring projects._ * [wasmbrowsertest](https://github.com/agnivade/wasmbrowsertest) - Run Go WASM tests in your browser. * [webapi](https://github.com/gowebapi/webapi) - Bindings for DOM and HTML generated from WebIDL. +**[⬆ back to top](#contents)** + ## Windows * [d3d9](https://github.com/gonutz/d3d9) - Go bindings for Direct3D9. * [go-ole](https://github.com/go-ole/go-ole) - Win32 OLE implementation for golang. * [gosddl](https://github.com/MonaxGT/gosddl) - Converter from SDDL-string to user-friendly JSON. SDDL consist of four part: Owner, Primary Group, DACL, SACL. +**[⬆ back to top](#contents)** + ## XML *Libraries and tools for manipulating XML.* @@ -2403,6 +2544,8 @@ _**Unofficial** set of patterns for structuring projects._ *Go software and plugins.* +**[⬆ back to top](#contents)** + ## Code Analysis * [apicompat](https://github.com/bradleyfalzon/apicompat) - Checks recent changes to a Go project for backwards incompatible changes. @@ -2434,6 +2577,8 @@ _**Unofficial** set of patterns for structuring projects._ * [unused](https://github.com/dominikh/go-tools/tree/master/cmd/unused) - unused checks Go code for unused constants, variables, functions and types. * [validate](https://github.com/mccoyst/validate) - Automatically validates struct fields with tags. +**[⬆ back to top](#contents)** + ## Editor Plugins * [Go plugin for JetBrains IDEs](https://plugins.jetbrains.com/plugin/9568-go) - Go plugin for JetBrains IDEs. @@ -2451,6 +2596,8 @@ _**Unofficial** set of patterns for structuring projects._ * [vscode-go](https://github.com/golang/vscode-go) - Extension for Visual Studio Code (VS Code) which provides support for the Go language. * [Watch](https://github.com/eaburns/Watch) - Runs a command in an acme win on file changes. +**[⬆ back to top](#contents)** + ## Go Generate Tools * [generic](https://github.com/usk81/generic) - flexible data type for Go. @@ -2464,6 +2611,8 @@ _**Unofficial** set of patterns for structuring projects._ * [TOML-to-Go](https://xuri.me/toml-to-go) - Translates TOML into a Go type in the browser instantly. * [xgen](https://github.com/xuri/xgen) - XSD (XML Schema Definition) parser and Go/C/Java/Rust/TypeScript code generator. +**[⬆ back to top](#contents)** + ## Go Tools * [colorgo](https://github.com/songgao/colorgo) - Wrapper around `go` command for colorized `go build` output. @@ -2484,10 +2633,14 @@ _**Unofficial** set of patterns for structuring projects._ * [rts](https://github.com/galeone/rts) - RTS: response to struct. Generates Go structs from server responses. * [typex](https://github.com/dtgorski/typex) - Examine Go types and their transitive dependencies, alternatively export results as TypeScript value objects (or types) declaration. +**[⬆ back to top](#contents)** + ## Software Packages *Software written in Go.* +**[⬆ back to top](#contents)** + ### DevOps Tools * [abbreviate](https://github.com/dnnrly/abbreviate) - abbreviate is a tool turning long strings in to shorter ones with configurable seperaters, for example to embed branch names in to deployment stack IDs. @@ -2556,6 +2709,8 @@ _**Unofficial** set of patterns for structuring projects._ * [Wide](https://wide.b3log.org/login) - Web-based IDE for Teams using Golang. * [winrm-cli](https://github.com/masterzen/winrm-cli) - Cli tool to remotely execute commands on Windows machines. +**[⬆ back to top](#contents)** + ### Other Software * [Better Go Playground](https://goplay.tools) - Go playground with syntax highlight, code completion and other features. @@ -2616,10 +2771,14 @@ _**Unofficial** set of patterns for structuring projects._ * [wellington](https://github.com/wellington/wellington) - Sass project management tool, extends the language with sprite functions (like Compass). * [woke](https://github.com/get-woke/woke) - Detect non-inclusive language in your source code. +**[⬆ back to top](#contents)** + # Resources *Where to discover new Go libraries.* +**[⬆ back to top](#contents)** + ## Benchmarks * [autobench](https://github.com/davecheney/autobench) - Framework to compare the performance between different Go versions. @@ -2637,6 +2796,8 @@ _**Unofficial** set of patterns for structuring projects._ * [skynet](https://github.com/atemerev/skynet) - Skynet 1M threads microbenchmark. * [speedtest-resize](https://github.com/fawick/speedtest-resize) - Compare various Image resize algorithms for the Go language. +**[⬆ back to top](#contents)** + ## Conferences * [Capital Go](http://www.capitalgolang.com) - Washington, D.C., USA. @@ -2658,6 +2819,8 @@ _**Unofficial** set of patterns for structuring projects._ * [GothamGo](http://gothamgo.com/) - New York City, USA. * [GoWayFest](https://goway.io/) - Minsk, Belarus. +**[⬆ back to top](#contents)** + ## E-Books * [A Go Developer's Notebook](https://leanpub.com/GoNotebook/read) @@ -2680,6 +2843,8 @@ _**Unofficial** set of patterns for structuring projects._ * [Writing A Compiler In Go](https://compilerbook.com) * [Writing An Interpreter In Go](https://interpreterbook.com) +**[⬆ back to top](#contents)** + ## Gophers * [Free Gophers Pack](https://github.com/MariaLetta/free-gophers-pack) - Gopher graphics pack by Maria Letta with illustrations and emotional characters in vector and raster. @@ -2695,6 +2860,8 @@ _**Unofficial** set of patterns for structuring projects._ * [gophers](https://github.com/sillecelik/go-gopher) - Gopher amigurumi toy pattern. * [gophers](https://github.com/scraly/gophers) - Gophers by Aurélie Vache. +**[⬆ back to top](#contents)** + ## Meetups * [Basel Go Meetup](https://www.meetup.com/Basel-Go-Meetup/) @@ -2760,6 +2927,8 @@ _**Unofficial** set of patterns for structuring projects._ *Add the group of your city/country here (send **PR**)* +**[⬆ back to top](#contents)** + ## Style Guides * [bahlo/go-styleguide](https://github.com/bahlo/go-styleguide) @@ -2771,6 +2940,8 @@ _**Unofficial** set of patterns for structuring projects._ * [Thanos](https://thanos.io/tip/contributing/coding-style-guide.md/) * [Uber](https://github.com/uber-go/guide/blob/master/style.md) +**[⬆ back to top](#contents)** + ## Social Media ### Twitter @@ -2780,9 +2951,13 @@ _**Unofficial** set of patterns for structuring projects._ * [@golangflow](https://twitter.com/golangflow) * [@golangweekly](https://twitter.com/golangweekly) +**[⬆ back to top](#contents)** + ### Reddit * [r/golang](https://www.reddit.com/r/golang/) +**[⬆ back to top](#contents)** + ## Websites * [Awesome Go @LibHunt](https://go.libhunt.com) - Your go-to Go Toolbox. @@ -2821,6 +2996,8 @@ _**Unofficial** set of patterns for structuring projects._ * [Trending Go repositories on GitHub today](https://github.com/trending?l=go) - Good place to find new Go libraries. * [TutorialEdge - Golang](https://tutorialedge.net/course/golang/) +**[⬆ back to top](#contents)** + ### Tutorials * [50 Shades of Go](http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/) - Traps, Gotchas, and Common Mistakes for New Golang Devs. @@ -2861,3 +3038,5 @@ _**Unofficial** set of patterns for structuring projects._ * [Working with Go](https://github.com/mkaz/working-with-go) - Intro to go for experienced programmers. * [Your basic Go](http://yourbasic.org/golang) - Huge collection of tutorials and how to's. * [Learning Go by examples](https://dev.to/aurelievache/learning-go-by-examples-introduction-448n) - Serie of article in order to learn Golang language by concrete applications as example + +**[⬆ back to top](#contents)** \ No newline at end of file