Best Software Tools and Projects Written in Go Language

Β· 3529 words Β· 17 minute read

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 use act 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 your Makefile!

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.
Share: