Open-source projects categorized as Golang | Edit details
Language filter: + Go + Makefile

Top 23 Golang Open-Source Projects

  • GitHub repo go

    The Go programming language

    Project mention: How do you improve in Go? | reddit.com/r/golang | 2021-07-31

    This link has great insight from code reviews that help clear up approaches or ambiguities that you might have in general, or coming from another language.

  • GitHub repo go-formatter

    A curated list of awesome Go frameworks, libraries and software

    Project mention: What are the most useful packages you know for Go? | reddit.com/r/golang | 2021-07-25

    It depends on what you would like to do with Go, but good starting points could be https://awesomeopensource.com/projects/go and may have a look at https://github.com/avelino/awesome-go .

  • Scout APM

    Scout APM: A developer's best friend. Try free for 14-days. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.

  • GitHub repo project-based-learning

    Curated list of project-based tutorials

    Project mention: C++ pentru un absolvent de liceu vs C++ la job | reddit.com/r/programare | 2021-07-24
  • GitHub repo v2ray-core

    A platform for building proxies to bypass network restrictions.

    Project mention: 有无技术老嗨说说,v2ray 的时间戳验证是否可以抵御重放攻击? | reddit.com/r/CLTV | 2021-06-14
  • GitHub repo traefik

    The Cloud Native Application Proxy

    Project mention: Why docker swarm is not popular as Kubernetes? | reddit.com/r/docker | 2021-07-30

    Also, Apache is definitely an option, but if i personally had to pick, i'd go with something like Caddy which is the best web server i've used to date, because of its ease of use (even if the feature parity for complex deployments isn't there). Well, if someone is also looking for something a tad more advanced for an ingress in particular, some speak highly of Traefik.

  • GitHub repo rclone

    "rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files

    Project mention: OneDrive and System backup | reddit.com/r/onedrive | 2021-07-29

    You could mount your OneDrive account as a local hard drive using RaiDrive, Rclone, Air Live Drive, or Mountain Duck then use standard desktop backup software to transfer the required files to your OneDrive account. Acronis, AOMEI, etc would see your OneDrive account as a standard local hard drive.

  • GitHub repo Gitea

    Git with a cup of tea, painless self-hosted git service

    Project mention: 5000€ bounty to implement forgefed federation for Gitea | news.ycombinator.com | 2021-07-14
  • Nanos

    Run Linux Software Faster and Safer than Linux with Unikernels.

  • GitHub repo golang-standards/project-layout

    Standard Go Project Layout

    Project mention: Using go:embed and the golang-standards project layout together | reddit.com/r/golang | 2021-07-24
  • GitHub repo GORM

    The fantastic ORM library for Golang, aims to be developer friendly

    Project mention: Database for Go projects? | reddit.com/r/golang | 2021-06-20

    If you and your team currently don't have any specific requirements, I'd advice to choose an abstraction library that have supports for most common dbs (eg. gorm or bun) and start with whatever db you are more used to.

  • GitHub repo cli

    GitHub’s official command line tool

    Project mention: Clone and Launch Git Repositories in New tmux Windows | dev.to | 2021-07-25

    If ${repo} starts with github, then use gh to clone the repo

  • GitHub repo cobra

    A Commander for modern Go CLI interactions

    Project mention: Learning Go by examples: part 3 - Create a CLI app in Go | dev.to | 2021-07-27

    Cobra is both a library for creating powerful modern CLI applications and a program for generating applications and batch files.

  • GitHub repo Iris

    The fastest HTTP/2 Go Web Framework. AWS Lambda, gRPC, MVC, Unique Router, Websockets, Sessions, Test suite, Dependency Injection and more. A true successor of expressjs and laravel | 谢谢 https://github.com/kataras/iris/issues/1329 |

    Project mention: Can I mix REST and gRPC? | reddit.com/r/golang | 2021-05-05

    You can through api gateway. It's easier with Iris web framework, example code: https://github.com/kataras/iris/tree/master/_examples/mvc/grpc-compatible.

  • GitHub repo go-kit

    A standard library for microservices.

    Project mention: Questions on linters | reddit.com/r/golang | 2021-06-29

    For more background and discussion, including several demonstrations of error handling decorators, please see Go kit issue #164, Explain why Logger.Log returns error.

  • GitHub repo Mattermost

    Open source Slack-alternative in Golang and React - Mattermost

    Project mention: Salesforce Completes Acquisition of Slack | news.ycombinator.com | 2021-07-21
  • GitHub repo OpenFaaS

    OpenFaaS - Serverless Functions Made Simple

    Project mention: Azure function like feature | reddit.com/r/docker | 2021-07-29

    Never really used it but perhaps you can look into Fn. There's also OpenFaaS, but that's for Kubernetes.

  • GitHub repo LeetCode-Go

    ✅ Solutions to LeetCode by Go, 100% test coverage, runtime beats 100% / LeetCode 题解

    Project mention: Gopher Gold #11 - Wed Sep 16 2020 | dev.to | 2020-09-16

    halfrost/LeetCode-Go (Go): ✅ Solutions to LeetCode by Go, 100% test coverage, runtime beats 100% / LeetCode 题解

  • GitHub repo clash

    A rule-based tunnel in Go.

    Project mention: [Question] Is there any package for Termux to bypass Deep Packet Inspection censorship? | reddit.com/r/termux | 2021-04-22

    There's clash that might be helpful. It won't magically make you able to access protected resources, it need to be set up accordingly (duh). In a nutshell it can be setup so that it exposed a local SOCKS or HTTP proxy, which you could then use in your wifi settings or in apps that support it natively (Firefox for example). So no VPN API.

  • GitHub repo micro-editor

    A modern and intuitive terminal-based text editor

    Project mention: What softwares do you use on a daily basis? And what are some nice to haves? | reddit.com/r/linuxquestions | 2021-07-16


  • GitHub repo delve

    Delve is a debugger for the Go programming language.

    Project mention: What paths should I set to build delve? | reddit.com/r/golang | 2021-06-20

    This version is more than three years old and doesn't even support Go modules. Delve will not build with it: https://github.com/go-delve/delve/blob/master/go.mod#L3

  • GitHub repo dgraph

    Native GraphQL Database with graph backend

    Project mention: GraphQL - Diving Deep | dev.to | 2021-07-29

    Dgraph has a native GraphQL implementation

  • GitHub repo go-micro

    Go Micro is a framework for distributed systems development

    Project mention: Why and how we built Distributed with Next.js and Micro | dev.to | 2021-03-26

    Distributed is a live social chat app built as a Jamstack demo using Next.js and Micro. We built it to demonstrate the value proposition of M3O - a cloud platform for API development. This post explains what went into building Distributed in just a few weeks and how M3O helped rapidly build our MVP. You can find the source code for distributed on Github. If you want to build and host your own version signup to M3O and start running the same services from our open source repository micro/services. Why we built Distributed Distributed was built as a jamstack demo to show how you could leverage M3O as an API backend for rapid MVP development. M3O itself is a cloud platform for API development, built on the popular open source project Micro. Micro enables you to quickly build APIs in Go on the backend and M3O provides simple free hosting of those services. We wanted to show the Jamstack audience how you could quickly leverage those APIs to build something on the frontend. Not only that, we really wanted to understand and experience the frontend developers perspective through dogfooding of our own APIs rather than just throwing stuff over the wall and hoping it works. Hopefully in that we we've done is demonstrate the value of our platform and how others can also make use of it with a real world app like Distributed to learn from. Let's talk more about Jamstack now. Jamstack Development Jamstack is a new architecture pattern for frontend which offloads dynamic aspects of the stack to javascript and third party APIs. Vercel, the makers of Next.js and related companies are pioneering the way forward for jamstack development. Credit jamstack.org JAMstack stands for Javascript, API and Markup. The static part of the application is deployed to a CDN with javascript dynamically loading various pieces of dynamic content from backend APIs and rendering it. Why we chose Next.js Next.js is a massively popular react based framework for Jamstack development. When we were looking at building out a demo on top of M3O we had the choice of going down a number of routes but what really appealed to us was the how deliberate a lot of the choices were in how the Vercel team had constructed the Next.js framework. Being framework creators ourselves with the dominant framework Go Micro for Go, we could appreciate the efforts required and strong opinions needed to drive such adoption and success. Vercel has done a phenomenal job in this way. Beyond praising Vercel's efforts. The Next.js framework includes a lot of key components needed for the Jamstack including server side rendering, api routes and typescript support. For us these were mandatory feature requirements when building against not only our APIs but third party providers. Micro for the Backend Micro is an open source cloud platform for API development. With modern day complexity in writing software for the cloud, Micro has attempted to distill that down to a handful of primitives and a framework for building services in Go. Micro took learnings from the original Go Micro framework and focused on not just gRPC based service development but actually packaging together a runtime and platform which exposes those services automatically as APIs. What this means is we can write microservices on the backend using gRPC and protobuf and immediately provide value to consumers and clients on the frontend via HTTP/JSON. To learn more about that check out the project at micro.mu or the hosted platform at m3o.com. Building on Netlify We initially chose Netlify for hosting as we saw many people adopting it for Jamstack apps. Initially this proved really great for static content. As our apps got more complex and we started to build out the Distributed demo we found Netlify no longer scaled with our basic needs. The first example we can share is Netlify Functions for Next.js API routes. Next.js routes can be turned into Netlify Functions which are essentially hosted as AWS Lambda functions. It's a clever way of pushing certain requirements to the server side, like calling third party APIs with keys you don't want to expose to the client. Next.js is great in this regard and plugins like netlify-plugin-nextjs and next-on-netlify let us do this really quickly but the performance left a lot to be desired. Our APIs are primarily hosted in London on DigitalOcean and while Netlify has a CDN for static content, the Lambda functions are deployed in a single region in US-East on AWS. For those who've suffered this pain you know exactly what that means. We were making cross atlantic calls from JS in the client to api routes on lambda and then finally to our apis. Needless to say this didn't scale for us. We weren't able to reach out the Netlify team to get help and so in frustration had to go down the self hosted route. Note we did test out Vercel and found the experience to be faster but self hosting on DigitalOcean just made more sense for our demo needs. Switching to Self Hosted One of the things DigitalOcean now provides is App Platform, a container hosting solution which lets you pick regions, does TLS certificate management for your custom domain and automatic builds from Git. This turned out to be a perfect solution for self hosted Next.js apps. Next.js at the end of the day is a React and node.js based application. As much as you may want to separate out the static content to something like Netlify and functions on Lambda, it equally just makes sense to host the entire thing in one place and run many copies of it much like we did in the old php and rails days. Because the APIs are colocated with the frontend we find this experience fairly fast, sub 100ms for all the API calls but we know it's not an ideal demonstration of the Jamstack's architecture and so we'll be working towards hosting on Vercel in the future to showcase that experience. How It All Fits Together We're running Distributed as a Next.js application on the frontend talking to Micro APIs on the backend. All of this is constructed as API routes in Next.JS firing requests at our M3O platform and the various APIs we need. Let's walk through a typical request. For example, when loading a group we need to get the group info, user profile, chats and more. We could do this as a GraphQL APIbut that would require too much stitching together in terms of the schema on the backend. Instead we're using protobuf and RPC for rapid development there and Micro automagically exposes that as a HTTP/JSON API. So a typical flow is like so. Frontend makes a request to /api/groups/[id] which loads the api code in the Next.js app We validate the user is logged in by calling the /users/Validate endpoint and ff authenticated load the group data by id using /groups/Read Skipping ahead, we'll load group messages via /threads/ListConversations and private messages using /chats/ListMessages We can check for already read messages via a "seen" API and then subscribe to the streams API for instant messaging Finally we render everything based on the content loaded for the user .gist-data { max-height: 600px; overflow: auto;} Here's a code "snippet" for those interested. From an MVP standpoint this is just a very quick and rapid way for us to build against numerous separate APIs on the backend all hosted in the same place. For anyone interested in the "call" function. It's simply a small function we're using to call the Micro APIs on the backend. Remember Micro turns any RPC based service into a HTTP/JSON API automatically via an API gateway. M3O provides hosting for all this. Performance & Productivity Aside from the structural benefits of a framework like Next.js we find it really unlocks significant productivity by providing an opinionated approach to frontend development. That coupled with Micro on the backend and our APIs hosted on M3O it's enabled us to rapidly ship this MVP within the space of 4-6 weeks with mostly 1 person doing the work. That really speaks to the power of the combination of Next.js and Micro. For this demo we built APIs for user management, group messaging, websocket streaming, sending invite emails and audio/video through Twilio WebRTC. One can only imagine where it would go with a dedicated team and full product focus. On the performance side, Next.js is blazingly fast by all measures. Whether it be the local reload for development or the server side rendering. It all adds to a really snappy experience on both the development and consumption side of things. With the backend we tried to pair this with Go based APIs written with Micro to ensure not just speed of development but also speed of delivery. All in all, we think Next.js and Micro are the perfect pairing for any Jamstack and API based development. Conclusions Thanks for reading this post on how we built Distributed on the Jamstack using Next.js and Micro. Find the source code for distributed on Github. If you want to build and host your own version signup to M3O and start running the same services from our open source repository micro/services. Reach out on slack or twitter if you have any questions.

  • GitHub repo go-patterns

    Curated list of Go design patterns, recipes and idioms

    Project mention: Why is this executing in this order? | reddit.com/r/golang | 2021-06-01

    So I am trying to write a simple generator based on this pattern and the results are a little counter-intuitive. My goal is to create a generator like the above that takes a net.IPNet object and ranges over all net.IP`'s contained in that network. When printing results, I am seeing the same values show up in subsequent executions of the loop and am not sure why. Code follows:

  • GitHub repo PhotoPrism

    Open-Source Photo Management powered by Go and Google TensorFlow

    Project mention: Selfhosted Photo Library: comparison of different options? | reddit.com/r/selfhosted | 2021-07-20

    The only extensions I use that can change the page are privacybadger (no changes) and unlock origin (which blocked the script from plausible.io, and I use plausible for some of my sites so I know that won't affect anything). I dunno, google doesn't seem to have any good suggestions for this error. Here's what I filed: https://github.com/photoprism/photoprism/issues/1439

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-07-31.


What are some of the best open-source Golang projects? This list will help you:

Project Stars
1 go 88,121
2 go-formatter 66,636
3 project-based-learning 53,498
4 v2ray-core 37,750
5 traefik 34,477
6 rclone 28,139
7 Gitea 25,493
8 golang-standards/project-layout 25,346
9 GORM 24,579
10 cli 24,173
11 cobra 22,546
12 Iris 20,947
13 go-kit 20,857
14 Mattermost 20,664
15 OpenFaaS 20,116
16 LeetCode-Go 19,263
17 clash 18,081
18 micro-editor 17,360
19 delve 16,655
20 dgraph 16,398
21 go-micro 16,397
22 go-patterns 15,879
23 PhotoPrism 15,555
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives