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

Top 23 Golang Open-Source Projects

  • GitHub repo go

    The Go programming language

    Project mention: Go 1.17 will provide up to 10% better performance thanks to register-based ABI | reddit.com/r/golang | 2021-04-21
  • GitHub repo go-formatter

    A curated list of awesome Go frameworks, libraries and software

    Project mention: Simple Go Project Template - Suited for Webapp MVPs | reddit.com/r/golang | 2021-04-08

    https://github.com/avelino/awesome-go (for go)

  • GitHub repo project-based-learning

    Curated list of project-based tutorials

    Project mention: I self-learned to code at 30. And so can you | news.ycombinator.com | 2021-03-17

    I like this nice list for finding those sorts of tutorials https://github.com/tuvtran/project-based-learning

  • GitHub repo v2ray-core

    A platform for building proxies to bypass network restrictions. (by v2ray)

    Project mention: 《GFW技术评论》-- naiveproxy 作者关于反GFW战略态势的描述 | reddit.com/r/China_irl | 2021-02-08
  • GitHub repo traefik

    The Cloud Native Application Proxy

    Project mention: EKS: 10 tips to reduce the bill up to 90% on AWS managed Kubernetes clusters | dev.to | 2021-04-20

    To avoid this expensive (and luxurious) operation, it is better to define the services in ClusterIP, and to define ingress, managed by an ingress controller like Traefik, created by a former Zenika employee, or the one based on NGINX. It will provision a single load balancer for all ingresses, and therefore all kubernetes services.

  • 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: Trying to create a virtual disk in Google Drive | reddit.com/r/linuxquestions | 2021-04-21

    - rclone

  • GitHub repo Gitea

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

    Project mention: GitHub Reinstated YouTube-DL but Restoring Forks Is Apparently a Problem | news.ycombinator.com | 2021-04-17

    The gogs maintainer currently seems to not be doing much with it and seems to be ignoring security reports. I would probably recommend the gitea fork instead.


  • GitHub repo GORM

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

    Project mention: GOlang URL shortener service using postgres, redis, bulma | dev.to | 2021-03-29

    It does not use external libraries except the gorm for postgres database and minimal redis module redigo.

  • GitHub repo golang-standards/project-layout

    Standard Go Project Layout

    Project mention: I started my GoLang journey!!! | reddit.com/r/golang | 2021-04-18

    I'm not talking about tutorials or Indy blogs. There is excellent online documentation for golang and language spec, I find it pretty good https://golang.org/doc/effective_go , https://github.com/golang-standards/project-layout , aren't those awesome?

  • GitHub repo cli

    GitHub’s official command line tool

    Project mention: Ask HN: Show me the sexy, sexy home page of your favorite free CLI project | news.ycombinator.com | 2021-04-20
  • GitHub repo cobra

    A Commander for modern Go CLI interactions

    Project mention: Backstage Software Templates | dev.to | 2021-04-13

    apiVersion: backstage.io/v1alpha1 kind: Template metadata: name: golang-starter title: Golang Microservice description: Create a Golang repo with this template built by members of the Go community tags: - experimental - go spec: owner: [email protected] templater: cookiecutter type: service path: "." schema: required: - component_id - project_short_description - docker_image - docker_build_image - docker_build_image_version - use_logrus_logging - use_viper_config - use_ci - use_cobra_cmd properties: component_id: title: Name type: string description: Unique name of the component project_short_description: title: Description type: string description: Description of the component docker_image: title: Docker Image type: string description: The docker base image to use when running the service default: alpine-base-image:latest docker_build_image: title: Docker Build Image type: string description: The docker base image to use when building the service default: golang docker_build_image_version: title: Docker Build Image Version description: The image version to use when building the service type: string enum: - alpine default: alpine use_logrus_logging: title: Enable Logrus Logging (https://github.com/sirupsen/logrus) type: string enum: - "y" - "n" default: "y" use_viper_config: title: Enable Viper Config (https://github.com/spf13/viper) type: string enum: - "y" - "n" default: "y" use_cobra_cmd: title: Enable Cobra CLI Tools (https://github.com/spf13/cobra) type: string enum: - "y" - "n" default: "y" use_ci: title: Add CI description: Add a CI config to the repo, Gitub Actions, Circle or Travis are the only supported right now type: string enum: - github - travis - circle - none default: github

  • 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: Best Golang Web Framework for Larg Projects | dev.to | 2021-03-08


  • GitHub repo Mattermost

    Open source Slack-alternative in Golang and React - Mattermost

    Project mention: Awesome Clones | dev.to | 2021-04-14

    Clone of Demo Repo Tech stack Repo Stars 1Password / LastPass https://bitwarden.com/ https://github.com/bitwarden/mobile C#, Xamarin 2048 https://2048-three.vercel.app/ https://github.com/AreebKhan619/2048 React 2048 https://demo.matsz.dev/2048/ https://github.com/mat-sz/2048 React, TypeScript, Redux 2048 https://guaracy.github.io/beads/sites/2048/2048.html https://github.com/guaracy/2048-beads Beads Airbnb https://abod-bnb.web.app/ https://github.com/abodmicheal/React-projects/tree/master/Abodbnb React, Firebase Airbnb https://realbnb.vercel.app/ https://github.com/shubhsk88/realbnb-frontend TypeScript, React, NextJS, Prisma, GraphQL Airtable https://firetable.io/ https://try.firetable.io/ https://github.com/AntlerVC/firetable React, Firebase, Firestore, Typescript Airtable https://baserow.io/ https://gitlab.com/bramw/baserow Django, nuxt.js, PostgreSQL Algolia https://www.meilisearch.com/ https://github.com/meilisearch/MeiliSearch Rust Amazon https://amazonna.netlify.app/ https://youtu.be/MSctN0MOdt0 https://github.com/emmanuelhashy/amazon-clone React, Firebase Amazon Prime https://prime-clone-e1de6.firebaseapp.com/ https://github.com/peeyush14goyal/AmazonPrime-ReactJS-Clone React Apple Music https://appo-music.herokuapp.com/ https://github.com/oriravid/Appo-Music React, Redux, Ruby on Rails, PostgreSQL Bit.ly https://polrproject.org/ https://github.com/cydrobolt/polr PHP, MySQL Bit.ly https://zws.im/ https://github.com/zws-im/zws Typescript, Battleship Game https://battleboats.ito.wtf/ https://github.com/hairarrow/btship TypeScript, React Clubhouse https://jam.systems/ https://github.com/jam-systems/jam React, WebRTC Clubhouse https://dogehouse.tv https://github.com/benawad/dogehouse React, Postgress, Elixir Codecademy https://codecademyclone.netlify.app/ https://github.com/shanoysinc/Codecademy-clone React Discord http://ericellb.github.io/React-Discord-Clone https://github.com/ericellb/React-Discord-Clone React, Node, Express, Socket-IO, MySQL Discord https://valkyrieapp.xyz https://github.com/sentrionic/Valkyrie React, NestJS, TypeScript, Socket-IO, PostgreSQL Disney+ https://github.com/calebnance/expo-disneyplus/blob/master/.gh-assets/screenshare-4.png?raw=true https://github.com/calebnance/expo-disneyplus React Native, expo Doodle (Scheduling tool) https://sm2030.user.srcf.net/poll/ https://github.com/souramoo/PhpMeeting PHP Dribbble http://driwwwle.herokuapp.com/ https://github.com/itsnitinr/driwwwle MERN, react Dribbble https://v.redd.it/a8lhmpjho0051/ https://github.com/diazabdulm/rumbbble MongoDB, ExpressJS, React, Dropbox https://try.nextcloud.com/ https://github.com/nextcloud/server PHP, JS Dropbox https://demo.filegator.io https://github.com/filegator/filegator PHP, JS, Vuejs Evernote https://joplinapp.org/ https://github.com/laurent22/joplin Javascript, Typescript Facebook https://odinclone.herokuapp.com/ https://github.com/lucaskenji/odinclone-app MERN Facebook https://github.com/KristianWEB/fakebooker-frontend#screenshots https://github.com/KristianWEB/fakebooker-frontend react, graphql, mongodb Firebase https://appwrite.io/ https://github.com/appwrite/appwrite PHP Gmail https://github.com/rodydavis/gmail_clone#screenshots https://github.com/rodydavis/gmail_clone Flutter Google Analytics https://plausible.io/ https://github.com/plausible/analytics React, Elixir, PostgreSQL, Tailwind Google Analytics https://matomo.org/ https://github.com/matomo-org/matomo PHP, HTML, MySQL Google Analytics https://ackee.electerious.com/ https://github.com/electerious/Ackee Node, MongoDB Google Analytics https://learnsql.io https://github.com/hypercable/hypercable Rails, OpenResty, TimescaleDB, postgresql, tailwindcss Google Drive https://mydrive-3.herokuapp.com/ https://mydrive-storage.com/ https://github.com/subnub/myDrive React, Node.js, mongoDB Google Keep https://github.com/anselm94/googlekeepclone/blob/master/docs/mobile-add-todo.gif https://github.com/anselm94/googlekeepclone React, GraphQL, Golang, SQlite Google Keep https://vue-keep-sepia.vercel.app/ https://github.com/wobsoriano/vue-keep Vue, Typescript, Firestore Google Keep https://google-keeps-clone.herokuapp.com/ https://github.com/kimlimjustin/google-keep-clone Django, JS Google Forms http://google-forms-clone.herokuapp.com/ https://github.com/kimlimjustin/google-form-clone Django, JS Google Photos https://photos-clone.web.app/ https://github.com/mani-barathi/Google-Photos-Clone React, Redux, Firebase Google Translate https://libretranslate.com/ https://github.com/uav4geo/LibreTranslate Python, Flask Headspace https://meditofoundation.org/medito-app https://github.com/meditohq/medito-app Flutter Hackernews https://hackernews-redesign.netlify.app/ https://github.com/RocktimSaikia/hacker-news-redesign React Hackernews https://news.python.sc/ https://github.com/sebst/pythonic-news Python, Django IMDB https://imdb-react-clone.herokuapp.com/ https://github.com/djohal/imdb-replica-react React, Redux, Firebase Instagram https://www.instaclone.net/login https://github.com/Sandermoen/instaclone/blob/master/screenshots/NgmjOVkZ4L.gif https://github.com/Sandermoen/instaclone Reactjs, Express, Nodejs, Mongodb, Socketio Instagram https://github.com/vipulasri/JetInstagram/blob/master/art/jetinstagram.gif https://github.com/vipulasri/JetInstagram Jetpack Compose Instagram https://instagram-clone-reactjs.vercel.app/ https://github.com/mucahit-sahin/instagram-clone-react React, Redux Instagram https://instagram-clone-dbe40.web.app// https://github.com/shaan71845/instagram-clone React, Firebase Intercom https://www.chatwoot.com/ https://github.com/chatwoot/chatwoot JAMStack, Vue iOS Homescreen https://ios-homescreen.now.sh/ https://github.com/erickbogarin/ios-homescreen React, Next.js, Emotion Jira https://i.ibb.co/W3qVvCn/jira-optimized.jpg https://github.com/oldboyxx/jira_clone React, Typescript Jira https://jira.trungk18.com/ https://github.com/trungk18/jira-clone-angular Angular, Akita, TailwindCSS, ng-zorro MacOS Calculator https://chamoda.com/react-calculator/ https://github.com/chamoda/react-calculator React MacOS Notes app https://hubert-wyszynski.github.io/notes-app/ https://github.com/hubert-wyszynski/notes-app React Medium / Wordpress / Substack https://ghost.org/ https://github.com/TryGhost/Ghost JAMStack, Ember, Node, MySQL Medium https://next-realworld.now.sh/ https://github.com/reck1ess/next-realworld-example-app React, Next.js MS Paint https://jspaint.app https://github.com/1j01/jspaint Node.js Netflix https://azazel5.github.io/NetflixClone/ https://github.com/Azazel5/NetflixClone/blob/master/flixdemo.gif https://github.com/Azazel5/NetflixClone React, Redux Netflix https://netflix-clone-dd230.web.app/ https://github.com/abodmicheal/React-projects/tree/master/Single-Channel-Messanger React, Firebase Netflix https://github.com/karlhadwen/netflix/blob/master/netflix-preview.png https://github.com/karlhadwen/netflix React, Firebase Netflix http://spaceflix.herokuapp.com/#/ https://github.com/ehecker/spaceflix Ruby, React, Redux, PostgreSQL, AWS Netflix https://expo-netflix.calebnance.now.sh/ https://github.com/calebnance/expo-netflix React Native, expo Netflix https://roseflix-rosebilag.vercel.app/ https://github.com/rosebilag/roseflix/ React, TypeScript, MongoDB Nike https://github.com/saeed9321/Nike-Website-clone/blob/main/screen-capture.gif https://github.com/saeed9321/Nike-Website-clone Express, MongoDB Notion https://www.focalboard.com/ https://github.com/mattermost/focalboard Node, React, Go Omegle https://start-a-conversation.firebaseapp.com/ https://github.com/NickMandylas/start-a-conversation React, Firebase, Twilio Orkut https://orkutnostalgia.netlify.app/ https://github.com/GShadowBroker/orkut-clone-client https://github.com/GShadowBroker/orkut-clone-server ReactJS, GraphQL, Apollo, PostgreSQL PayTM https://github.com/flutter-devs/flutter_paytm_clone#demo https://github.com/flutter-devs/flutter_paytm_clone Flutter Pinterest https://trusting-euler-8aafb8.netlify.app/ https://github.com/machadop1407/pinterest-clone-frontend https://github.com/machadop1407/pinterest-clone-backend GraphQL, ReactJS, NodeJS, Mysql Postman https://insomnia.rest/ https://github.com/Kong/insomnia Electron Postman https://hoppscotch.io/ https://github.com/hoppscotch/hoppscotch JAMStack, Vue, NuxtJS, firebase Reddit https://redditsyncr.netlify.app/ https://github.com/dustinkiselbach/reddit-refactor React, Typescript Reddit https://asperitas.now.sh/ https://github.com/d11z/asperitas Node.js, React, NoSQL TikTok + Reddit https://reddit-tiktok.netlify.app/ https://github.com/hedgecox/Reddit-TikTok-Clone React Twitch https://twitchclone.vercel.app/ https://github.com/alissonsleal/twitch-clone/ React, Next.JS, Typescript Slack https://mattermost.com/ https://github.com/mattermost/mattermost-webapp React, Go Slack https://rocket.chat/ https://github.com/RocketChat/Rocket.Chat JAMStack, Typescript Slack https://zulip.com/ https://github.com/zulip/zulip Python, JS, TS Slack https://github.com/calebnance/expo-slack/blob/master/screenshots/screenshare-3_v1.jpg?raw=true https://github.com/calebnance/expo-slack React Native, Expo Snapchat https://towhidkashem.github.io/snapchat-clone/ https://youtu.be/aRS88v-duKg https://github.com/TowhidKashem/snapchat-clone React, Redux, Typescript, Cypress, Jest, Enzyme Spotify https://spotify.trungk18.com/ https://github.com/trungk18/angular-spotify Angular 11, Nx, ngrx, TailwindCSS and ng-zorro Spotify https://github.com/JL978/spotify-clone-client/blob/master/demo/Authed.gif https://github.com/JL978/spotify-clone-client React Spotify Web Player https://spotify-clone-oguz3.web.app/ https://github.com/oguz3/spotify-web-player React Spotify https://github.com/matpandino/spotify-ui-clone/blob/master/.github/spotify-clone.jpg https://github.com/matpandino/spotify-ui-clone Electron, React, Typescript Spotify https://drive.google.com/file/d/1KOHOJDGaLeumGqQenzCeeShPqIudCJBX/view https://github.com/aashrafh/Oud React Spotify https://tune42-spotify.netlify.app/ https://github.com/Tune42/spotify-clone React Spotify https://expo-spotify.vercel.app/ https://github.com/calebnance/expo-spotify React Native, Expo Spotify https://github.com/osamaq/spotify-lite#screenshots https://github.com/osamaq/spotify-lite React Native Spotify + Soundcloud + YouTube https://www.kord.app https://github.com/bundit/kord-app React, Redux, Express, PostgreSQL Stackoverflow https://clone-of-stackoverflow.vercel.app/ https://github.com/salihozdemir/stackoverflow-clone ReactJs, NextJs, Express, MongoDB Stackoverflow https://drive.google.com/file/d/1A0B3JPUUY2snG8MLZpyz2LWhvThG2epn/view https://github.com/Mayank0255/Stack-Overflow-Clone MySQL, Express, React Tetris Game https://hinsxd-tetris.netlify.app/ https://github.com/hinsxd/react-tetris React, Typescript Tetris Game https://tetris20.netlify.app/ https://github.com/shanoysinc/Tetris Typescript Tiktok https://youtu.be/iYqDUjvsS3o https://github.com/emmanuelhashy/tik-tok-clone React, Firebase Tiktok https://youtu.be/sMKg6ILYgv0 https://github.com/salvadordeveloper/TikTok-Flutter Flutter, Firebase Tiktok + Reddit https://henrybalassiano.github.io/Tik-Tok-Clone/ https://github.com/HenryBalassiano/Tik-Tok-Clone React Trello https://wekan.github.io/ https://github.com/wekan/wekan Meteor Trello https://www.taiga.io/ https://github.com/taigaio/taiga-front https://github.com/taigaio/taiga-back Django, AngularJS Trello https://kanboard.org/ https://github.com/kanboard/kanboard PHP Trello https://trellis-app.herokuapp.com/ https://github.com/ayushagg31/Trellis/blob/master/images/Trellis.gif https://github.com/ayushagg31/Trellis React, Redux, Node, Express, MongoDB Trello https://codesource.io/wp-content/uploads/2020/07/Trelloclone.webm https://github.com/Dunebook/Trelloclone Angular 10 Trello https://tiquetapp.herokuapp.com/ https://github.com/FLiotta/Tiquet React, Python, Flask, PostgreSQL Trello https://tberghuis.github.io/trello-board-clone/ https://github.com/tberghuis/trello-board-clone React trello https://rupmalya-trello-clone.herokuapp.com/signin https://youtu.be/59oQ01VEm30 https://github.com/RupmalyaK/trello-clone Express, MongoDB trello https://project-manager1.herokuapp.com/ https://github.com/arturmolenda/project-manager React, Redux, Node, Express, Socket.io, MongoDB Trello https://trello-project-manager.netlify.app/ https://github.com/berabulut/project-manager React, Node.js, Firebase, Serverless, AWS Lambda Twitter https://twitter-geek.netlify.app/#/ https://github.com/RisingGeek/twitter-clone/blob/master/demo/feed.png https://github.com/RisingGeek/twitter-clone https://github.com/RisingGeek/twitter-clone-backend React, Redux, NodeJS, MYSQL Twitter https://twitterclone2.netlify.app/login.html https://github.com/Dunebook/Twitterclone HTML, CSS, JQuery Twitter https://tclone.netlify.app/ https://github.com/muzam1l/tclone/raw/master/docs/tclone-demo2.gif https://github.com/muzam1l/tclone https://github.com/muzam1l/tclone-api MERN Twitter https://twitterapp-clone.netlify.app/home https://github.com/Ali-hd/Twitter-Clone https://github.com/Ali-hd/TwitterClone-Backend React, express, mongo, aws, socket.io Twitter https://twitter-cln.herokuapp.com https://github.com/Abdullah-V/MEVN-stack-twitter-clone Vue, Express, Mongo Twitter https://twitter-web-clone-react.vercel.app https://github.com/mucahit-sahin/twitter-web-clone-react React, Redux Typeform / Google Form https://ohmyform.com/ https://github.com/ohmyform/ohmyform Python Typeform https://supereasyforms.com/ https://github.com/super-easy-forms/super-easy-forms Javascript Uber https://github.com/calebnance/expo-uber/blob/master/screenshots/screenshare-3.png?raw=true https://github.com/calebnance/expo-uber React native, expo Uber https://youtu.be/ya1lsXS2Wvw https://github.com/Santos-Enoque/uber_clone_with_flutter Flutter Unsplash https://github.com/junipdewan/react-unsplash#react-unsplash https://github.com/junipdewan/react-unsplash React Unsplash https://mani-unsplash-clone.netlify.app/ https://github.com/mani-barathi/unsplash-clone React, Material-UI Vimeo https://bimeo.herokuapp.com/#/ https://github.com/TarikGul/vimeo_clone_full_stack_project React, Redux, Ruby. PostgreSQL Whatsapp https://codesource.io/wp-content/uploads/2020/11/Screenshot_20201029-171635-1-709x1536.png https://github.com/Ekeminie/whatsapp_ui Flutter Whatsapp https://medium.com/p/5479d83baaa4 https://github.com/Urigo/WhatsApp-Clone-Client-Angular https://github.com/Urigo/WhatsApp-Clone-server Angular, Express, PostgreSQL, GraphQL, Typescript Whatsapp https://youtu.be/3TYfkvf4u4M https://clone-massenger.herokuapp.com/signinsignup https://github.com/RupmalyaK/whatsapp-MERN MERN Wix https://grapesjs.com/ https://github.com/artf/grapesjs Javascript, Webpack Workflowy https://deepnotes.in/ https://github.com/mukeshsoni/deepnotes-editor ReactJS, DraftJS Youtube https://utubeclone.netlify.app/ https://youtu.be/wHLurtOnmyM https://github.com/manikandanraji/youtubeclone-frontend https://github.com/manikandanraji/youtubeclone-backend React, Redux, Express, Sequelize Youtube Music https://music-streaming-app-4a392.web.app/ https://github.com/mani-barathi/Octave React, Firebase, Material-UI Zapier https://n8n.io/ https://github.com/n8n-io/n8n Typescript, Vue, Docker Zapier https://vimeo.com/61976251 https://github.com/huginn/huginn Ruby

  • GitHub repo go-kit

    A standard library for microservices.

    Project mention: Show HN: Encore – Go framework for distributed systems | news.ycombinator.com | 2021-04-14
  • GitHub repo OpenFaaS

    OpenFaaS - Serverless Functions Made Simple

    Project mention: Why we moved from Lambda to ECS | reddit.com/r/devops | 2021-04-20

    OpenFaaS isn't something I was previous familiar with. Thanks for linking it! In your experience, does it come with much management overhead? Part of what makes Lambda/ECS so appealing is that you can throw a definition (code .zip file or container image) at AWS, and it just runs. With OpenFaaS, it looks like you need to maintain some additional infrastructure (a Kubernetes cluster) to get it working, and that'd give you one more thing to worry about.

  • 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 micro-editor

    A modern and intuitive terminal-based text editor

    Project mention: Which terminal text editor should I use? | reddit.com/r/linuxquestions | 2021-04-20
  • GitHub repo delve

    Delve is a debugger for the Go programming language.

    Project mention: Debugging Go Microservices in Kubernetes with VScode | dev.to | 2021-04-09

    Delve the Go debugger

  • GitHub repo dgraph

    Native GraphQL Database with graph backend

    Project mention: ORM FOR GO | reddit.com/r/golang | 2021-03-17

    I dont use SQL anymore. If you really still have need for fixed schemas, ok, but a graph database like dgraph with graphql makes persisting so much easier, flexible, scaleable and faster.

  • 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 limetext

    Open source API-compatible alternative to the text editor Sublime Text

    Project mention: Lime: Open-Source API-Compatible Alternative to Sublime Text | news.ycombinator.com | 2021-04-03
  • GitHub repo go-patterns

    Curated list of Go design patterns, recipes and idioms

    Project mention: Go is not an easy language | news.ycombinator.com | 2021-02-21
  • GitHub repo advanced-go-programming-book

    :books: 《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框架实现、分布式系统等高阶主题(完稿)

    Project mention: Gopher Gold #21 - Wed Nov 25 2020 | dev.to | 2020-11-24

    chai2010/advanced-go-programming-book (Go): 📚 《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框架实现、分布式系统等高阶主题(完稿)

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-04-21.


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

Project Stars
1 go 84,657
2 go-formatter 63,649
3 project-based-learning 47,461
4 v2ray-core 37,007
5 traefik 33,469
6 rclone 26,878
7 Gitea 24,443
8 GORM 23,545
9 golang-standards/project-layout 22,633
10 cli 22,435
11 cobra 21,233
12 Iris 20,417
13 Mattermost 20,230
14 go-kit 19,981
15 OpenFaaS 19,637
16 LeetCode-Go 16,784
17 micro-editor 16,609
18 delve 15,994
19 dgraph 15,870
20 go-micro 15,809
21 limetext 15,112
22 go-patterns 14,964
23 advanced-go-programming-book 14,804