Best Software Tools and Projects Written in Go Language
Hugo π
Hugo is one of the most popular open source static site generators out there. Rinse and repeat in plain English, HUGO is a framework for building websites quickly. Over 29k live websites are built with HUGO and Wappalyzer reports that Hugo serves almost 50% of the static sites. It is hugely popular with public sector web developers and notable US government sites include vote.gov and digital.gov . Oh and guess what, Kubernetesβ own site is built using HUGO !
syncthing π
Open Source Continuous File Synchronization tool.
docker π
Define and run multi-container applications with Docker .
Kubernetes π
Kubernetes (K8s) - Google’s most recent container-management system is an open-source system for automating deployment, scaling, and management of containerized applications.
CoreDNS π
Is a DNS server written in Go. Apart from being written in Go, it differs from other DNS servers because it is very flexible, and is designed so that most of its functionality is outsourced into plugins. The CoreDNS project graduated as an official Cloud Native Computing Foundation project in 2017.
Zinc Search Engine π
ZincSearch. A lightweight alternative to elasticsearch that requires minimal resources, written in Go.
Zinc is a search engine that does full text indexing. It is a lightweight alternative to Elasticsearch and runs using a fraction of the resources. It uses bluge as the underlying indexing library.
It is very simple and easy to operate as opposed to Elasticsearch which requires a couple dozen knobs to understand and tune which you can get up and running in 2 minutes
It is a drop-in replacement for Elasticsearch if you are just ingesting data using APIs and searching using kibana (Kibana is not supported with zinc. Zinc provides its own UI).
AdGuardHome π
Network-wide ads & trackers blocking DNS server. See its source code on github .
rqlite π
The lightweight, distributed relational database built on SQLite.
rqlite is an easy-to-use, lightweight, distributed relational database, which uses SQLite as its storage engine. rqlite is simple to deploy, operating it is very straightforward, and its clustering capabilities provide you with fault-tolerance and high-availability. rqlite is available for Linux, macOS, and Microsoft Windows.
frp - fast reverse proxy π
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
CockroachDB π
Whatβs in a name? Rather than striking fear in the hearts of most & sending people running for cover, hereβs a lovely project that has spawned a next generation database designed for cloud native applications. Like its namesake, CockroachDB is built to be resilient and almost indestructible.
sqlc - Generate type-safe code from SQL π
sqlc: A SQL Compiler. sqlc generates type-safe code from SQL. Here’s how it works:
- You write queries in SQL.
- You run sqlc to generate code with type-safe interfaces to those queries.
- You write application code that calls the generated code.
rclone π
Rclone (“rsync for cloud storage”) is a command-line program to sync files and directories to and from different cloud storage providers.
“rsync for cloud storage” - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files.
Monzo - online banking app π
Monzo is a banking app written in Go programming language. Most companies introduce Go lang together with the microservices architecture. This was similar to the case of Monzo, an app-based online bank. When they first started architecting the application in February 2015, they were focused on the single responsibility principle. It states that every module should be responsible for a single functionality. This approach makes the app more stable β and hereβs where Go makes a great fit. Monzo is a classic example of an app built on Go language from the very start.
Allegro - e-commerce app π
Most of Allegroβs microservices are written in Java, yet the team was open to explore new things. Theyβve worked with on an open-source Go project before and were happy to see how Golang will handle larger volumes of traffic.
The final results were astonishing. Go helped Allegro speed up the application from 2.5 seconds to less than 250 milliseconds, and thatβs for the longest request! The Allegro team swears by Golang and is happy to share their insights during Go-related conferences .
SoundCloud - music app π
Although the app is largely based on Ruby on Rails, SoundCloud identifies as a polyglot company, with many languages adding up to their backend . They appreciate Golang as a WYSIWYG (what you see is what you get) language. This makes it easier for the entire team to understand the software and make the maintenance process more efficient.
Whatβs more, SoundCloud appreciates Golangβs fast compilation and static typing. In laymanβs terms, this means that developing, testing, and deploying the application is as fast as possible. The team claims that these swift processes mean that some simple ideas can get from whiteboard to production in just one hour. Impressive, isnβt it?
Badoo - dating app π
Bitmap indexes can be hard to implement in many popular database management systems, such as MySQL. The solution? You guessed it: Golang. Bitmap indexes are commonly used in Pilosa, a database management system written in Go. Without going too much into technical details, the Go language allows for smooth implementation of bitmap indexes, which is why the Badoo team decided to use it for their high-maintenance product.
Uber - ridesharing app π
Although Node.js was Uberβs first language of choice, they decided to start using Go for this service. The company needed something fast, as theyβre dealing with hundreds of thousands of geofence lookup requests every second! Golang turned out to be the perfect pick, as it can work on multiple CPU cores at the same time, while Node.js is single-threaded. In other words, the Go language can do multiple things at once.
The choice proved to be largely successful and the Uber team is happy using Golang. Not only is it faster, but it also makes software developers more productive. When theyβre already familiar with Java, C++, or Node.js, they will be able to learn Go in just a couple of days.
When it comes to the appβs performance, the results are truly impressive. On New Yearβs Eve 2015, Uberβs data center has successfully handled a peak load at just 35% CPU usage. To top it all off, the company can boast a whopping 99.99% uptime, with downtime caused only by third-party libraries and not Golang itself.
Encouraged by the geofence success, Uber started implementing Golang in more of its microservices. For example, theyβre using this language to match riders to the right drivers too. It has become their most popular language for creating new services within the product. Itβs safe to say that Uber is one of the top Golang apps when it comes to popularity.
Dropbox π
Dropbox owes a large share of its success to Python, a language that enabled company to iterate and develop quickly. However, with a growing user base, they started exploring ways to scale systems in a more efficient manner. That has lead to migrating performance-critical backends from Python to Go to leverage better concurrency support and faster execution speed.
This was a massive effortβaround 200,000 lines of Go codeβundertaken by a small team of engineers. They have successfully moved major parts of our infrastructure to Go. Zviad Metreveli presetned details of those effots in Go at Dropbox - Gopherfest - November 18, 2015 .
SendGrid π
SendGrid is a cloud-based email service to reliably deliver high volume emails on behalf of some of the biggest companies in the world which includes uber, Airbnb, Spotify and more. SendGridβs customizable, reliable, and scalable APIs have been developed using Golang . Such email applications can deliver the most relevant content to the right user at the right time.
Dailymotion π
It is a video-sharing website hosted in France. The website resembles YouTube; it streams videos, including original content created by Dailymotion studios. Dailymotion uses Golang for automation of APIs and End to End test cases.
They conduct hundreds of automation tests every month using Golang. They chose Golang for huge loads of automation testing as it is fast and powerful. They have developed most of their backend projects in Golang because of its performance, static type checking, and simplicity.
Twitch π
It is a live streaming video platform that focuses on video game live streaming, but also streams music broadcasts, creative content, eSports competitions and more.
Twitch use Go for many of our busiest systems. Its simplicity, safety, performance, and readability make it a good tool for the problems we encounter with serving live video and chat to our millions of users. Go is an important part of how Twitch scales, especially combined with AWS Lambda.
In 2018 Twitch relesed RPC framework they use for communication between backend servers written in Go - Twirp: a sweet new RPC framework for Go .
gogs - painless self-hosted Git service π
The Gogs /gΙgz/
project aims to build a simple, stable and extensible self-hosted Git service that can be set up in the most painless way. With Go, this can be done with an independent binary distribution across all platforms that Go supports, including Linux, macOS, Windows and ARM-based systems.
fiber π
β‘οΈ Express inspired web framework written in Go.
Fiber is an Express inspired web framework built on top of Fasthttp , the fastest HTTP engine for Go . Designed to ease things up for fast development with zero memory allocation and performance in mind.
aws load balancer controller π
A Kubernetes controller for Elastic Load Balancers.
CasaOS π
CasaOS - A simple, easy-to-use, elegant open-source Home Cloud system.
echo - Go web framework π
High performance, minimalist Go web framework.
colima π
Container runtimes on macOS (and Linux) with minimal setup.
docker-slim π
DockerSlim (docker-slim): Don’t change anything in your Docker container image and minify it by up to 30x (and for compiled languages even more) making it secure too! (free and open source).
seaweedfs π
SeaweedFS is a fast distributed storage system for blobs, objects, files, and data lake, for billions of files! Blob store has O(1) disk seek, cloud tiering. Filer supports Cloud Drive, cross-DC active-active replication, Kubernetes, POSIX FUSE mount, S3 API, S3 Gateway, Hadoop, WebDAV, encryption, Erasure Coding.
containerd - An open and reliable container runtime π
containerd is an industry-standard container runtime with an emphasis on simplicity, robustness and portability. It is available as a daemon for Linux and Windows, which can manage the complete container lifecycle of its host system: image transfer and storage, container execution and supervision, low-level storage and network attachments, etc.
gitea - self-hosted git service π
As Gitea is written in Go, it works across all the platforms and architectures that are supported by Go, including Linux, macOS, and Windows on x86, amd64, ARM and PowerPC architectures. You can try it out using the online demo . This project has been forked from Gogs since November of 2016, but a lot has changed.
juicefs π
JuiceFS is a distributed POSIX file system built on top of Redis and S3.
JuiceFS is a high-performance POSIX file system released under Apache License 2.0, particularly designed for the cloud-native environment. The data, stored via JuiceFS, will be persisted in object storage (e.g. Amazon S3), and the corresponding metadata can be persisted in various database engines such as Redis, MySQL, and TiKV based on the scenarios and requirements.
With JuiceFS, massive cloud storage can be directly connected to big data, machine learning, artificial intelligence, and various application platforms in production environments. Without modifying code, the massive cloud storage can be used as efficiently as local storage.
nsq - A realtime distributed messaging platform π
NSQ is a realtime distributed messaging platform designed to operate at scale, handling billions of messages per day.
It promotes distributed and decentralized topologies without single points of failure, enabling fault tolerance and high availability coupled with a reliable message delivery guarantee. See features & guarantees .
Operationally, NSQ is easy to configure and deploy (all parameters are specified on the command line and compiled binaries have no runtime dependencies). For maximum flexibility, it is agnostic to data format (messages can be JSON, MsgPack, Protocol Buffers, or anything else). Official Go and Python libraries are available out of the box (as well as many other client libraries ), and if you’re interested in building your own, there’s a protocol spec .
We publish binary releases for Linux, Darwin, FreeBSD and Windows, as well as an official Docker image .
lux - download tool π
πΎ Fast and simple video download library and CLI tool written in Go. lux is open source .
Git LFS π
Git-lfs is a Git extension for versioning large files.
Prometheus π
Prometheus , a Cloud Native Computing Foundation project, is a systems and service monitoring system. It collects metrics from configured targets at given intervals, evaluates rule expressions, displays the results, and can trigger alerts when specified conditions are observed.
The features that distinguish Prometheus from other metrics and monitoring systems are:
- A multi-dimensional data model (time series defined by metric name and set of key/value dimensions)
- PromQL, a powerful and flexible query language to leverage this dimensionality
- No dependency on distributed storage; single server nodes are autonomous
- An HTTP pull model for time series collection
- Pushing time series is supported via an intermediary gateway for batch jobs
- Targets are discovered via service discovery or static configuration
- Multiple modes of graphing and dashboarding support
- Support for hierarchical and horizontal federation
croc π
croc is a tool that allows any two computers to simply and securely transfer files and folders. AFAIK, croc is the only CLI file-transfer tool that does all of the following:
- allows any two computers to transfer data (using a relay)
- provides end-to-end encryption (using PAKE)
- enables easy cross-platform transfers (Windows, Linux, Mac)
- allows multiple file transfers
- allows resuming transfers that are interrupted
- local server or port-forwarding not needed
- ipv6-first with ipv4 fallback
- can use proxy, like tor
NSQ π
NSQ is a realtime distributed messaging platform designed to operate at scale, handling billions of messages per day.
ngrok π
ngrok is a reverse proxy that creates a secure tunnel from a public endpoint to a locally running web service. ngrok captures and analyzes all traffic over the tunnel for later inspection and replay.
ngrok is the answer to this request.
βI want to expose a local server behind a NAT or firewall to the internet.β
micro π
micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals. It comes as a single, batteries-included, static binary with no dependencies; you can download and use it right now!
As its name indicates, micro aims to be somewhat of a successor to the nano editor by being easy to install and use. It strives to be enjoyable as a full-time editor for people who prefer to work in a terminal, or those who regularly edit files over SSH.
restic π
restic is a backup program that is fast, efficient and secure. It supports the three major operating systems (Linux, macOS, Windows) and a few smaller ones (FreeBSD, OpenBSD).
Podman: A tool for managing OCI containers and pods π
Podman (the POD MANager) is a tool for managing containers and images, volumes mounted into those containers, and pods made from groups of containers. Podman runs containers on Linux, but can also be used on Mac and Windows systems using a Podman-managed virtual machine. Podman is based on libpod, a library for container lifecycle management that is also contained in this repository. The libpod library provides APIs for managing containers, pods, container images, and volumes.
esbuild π
Esbuild is an extremely fast bundler for the web.
nvm-windows π
nvm-windows is a node.js version management utility for Windows. Ironically written in Go.
Gitness π
Gitness is an open source development platform packed with the power of code hosting and automated DevOps pipelines.
Vault π
Vault is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, certificates, and more. Vault provides a unified interface to any secret, while providing tight access control and recording a detailed audit log.
fzf π
fzf is a command-line fuzzy finder. It’s an interactive Unix filter for command-line that can be used with any list; files, command history, processes, hostnames, bookmarks, git commits, etc.
caddy π
caddy is a fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS.
ollama π
Ollama : Get up and running with Llama 2, Mistral, Gemma, and other large language models.
cheat π
cheat allows you to create and view interactive cheatsheets on the command-line. It was designed to help remind *nix system administrators of options for commands that they use frequently, but not frequently enough to remember.
Nomad π
Nomad is an easy-to-use, flexible, and performant workload orchestrator that can deploy a mix of microservice, batch, containerized, and non-containerized applications. Nomad is easy to operate and scale and has native Consul and Vault integrations.
Cayley π
Cayley is an open-source database for Linked Data . It is inspired by the graph database behind Google’s Knowledge Graph (formerly Freebase ).
Features π
- Built-in query editor, visualizer and REPL
- Multiple query languages:
- Gizmo: query language inspired by Gremlin
- GraphQL-inspired query language
- MQL: simplified version for Freebase fans
- Modular: easy to connect to your favorite programming languages and back-end stores
- Production ready: well tested and used by various companies for their production workloads
- Fast: optimized specifically for usage in applications
Packer π
Packer is a tool for creating identical machine images for multiple platforms from a single source configuration.
transfer.sh π
Easy and fast file sharing from the command-line. This code contains the server with everything you need to create your own instance.
Transfer.sh currently supports the s3 (Amazon S3), gdrive (Google Drive), storj (Storj) providers, and local file system (local).
gVisor π
gVisor is an application kernel, written in Go, that implements a substantial portion of the Linux system surface. It includes an Open Container Initiative (OCI) runtime called runsc that provides an isolation boundary between the application and the host kernel. The runsc runtime integrates with Docker and Kubernetes, making it simple to run sandboxed containers.
bettercap π
bettercap is the Swiss Army knife for 802.11, BLE, IPv4 and IPv6 networks reconnaissance and MITM attacks.
tailscale π
Tailscale makes creating software-defined networks easy: securely connecting users, services, and devices. The easiest, most secure way to use WireGuard and 2FA.
cAdvisor π
cAdvisor (Container Advisor) provides container users an understanding of the resource usage and performance characteristics of their running containers. It is a running daemon that collects, aggregates, processes, and exports information about running containers. Specifically, for each container it keeps resource isolation parameters, historical resource usage, histograms of complete historical resource usage and network statistics. This data is exported by container and machine-wide.
ZincSearch π
ZincSearch is a lightweight alternative to elasticsearch that requires minimal resources, written in Go.
lazygit π
LazyGit is a simple terminal UI for git commands. Git TUI.
act π
Act : Run your GitHub Actions locally π
Run your GitHub Actions locally! Why would you want to do this? Two reasons:
- Fast Feedback - Rather than having to commit/push every time you want to test out the changes you are making to your
.github/workflows/
files (or for any changes to embedded GitHub actions), you can useact
to run the actions locally. The environment variables and filesystem are all configured to match what GitHub provides. - Local Task Runner - I love make
. However, I also hate repeating myself. With
act
, you can use the GitHub Actions defined in your.github/workflows/
to replace yourMakefile
!
traefik π
Traefik (pronounced traffic) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. Traefik integrates with your existing infrastructure components (Docker, Swarm mode, Kubernetes, Consul, Etcd, Rancher v2, Amazon ECS, …) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the only configuration step you need.
etcd π
etcd is a distributed reliable key-value store for the most critical data of a distributed system.
authelia π
Authelia is an open-source authentication and authorization server providing two-factor authentication and single sign-on (SSO) for your applications via a web portal. It acts as a companion for reverse proxies by allowing, denying, or redirecting requests.
lantern π
Lantern is a censorship circumvention tool available for free download on any operating system. It is like a VPN.
listmonk π
listmonk is a standalone, self-hosted, newsletter and mailing list manager. It is fast, feature-rich, and packed into a single binary. It uses a PostgreSQL (β©Ύ 12) database as its data store.
Go AppImage π
An implementation of AppImage tools written in Go by the inventor of the AppImage format.
- appimagetool, a tool to deploy dependencies into AppDirs (including things like Qt, Gtk, GStreamer,…) and to convert AppDirs into AppImages.
- appimaged, an optional daemon that integrates AppImages into the system, shows their icons, and makes them executable.