{"id":37088488,"url":"https://github.com/ndirangug/go-microservices","last_synced_at":"2026-01-14T10:52:20.155Z","repository":{"id":109147590,"uuid":"327716395","full_name":"Ndirangug/go-microservices","owner":"Ndirangug","description":"Learning to build microservices with go and deploy with docker and kubernetes","archived":false,"fork":false,"pushed_at":"2021-01-27T07:38:59.000Z","size":1876,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2023-03-05T00:12:18.013Z","etag":null,"topics":["devops","doccker","golang","kubernetes","microservices"],"latest_commit_sha":null,"homepage":"https://www.youtube.com/watch?v=VzBGi_n65iU\u0026list=PLmD8u-IFdreyh6EUfevBcbiuCKzFk0EW_\u0026index=1","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ndirangug.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-07T20:20:56.000Z","updated_at":"2024-06-19T10:04:22.282Z","dependencies_parsed_at":"2023-03-07T04:46:13.949Z","dependency_job_id":null,"html_url":"https://github.com/Ndirangug/go-microservices","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"purl":"pkg:github/Ndirangug/go-microservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ndirangug%2Fgo-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ndirangug%2Fgo-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ndirangug%2Fgo-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ndirangug%2Fgo-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ndirangug","download_url":"https://codeload.github.com/Ndirangug/go-microservices/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ndirangug%2Fgo-microservices/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28417716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T10:47:48.104Z","status":"ssl_error","status_checked_at":"2026-01-14T10:46:19.031Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devops","doccker","golang","kubernetes","microservices"],"created_at":"2026-01-14T10:52:19.481Z","updated_at":"2026-01-14T10:52:20.147Z","avatar_url":"https://github.com/Ndirangug.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"#  Building Microservices in Go YouTube\nCode repository for my Building Microservices YouTube series \n[https://www.youtube.com/playlist?list=PLmD8u-IFdreyh6EUfevBcbiuCKzFk0EW_](https://www.youtube.com/playlist?list=PLmD8u-IFdreyh6EUfevBcbiuCKzFk0EW_)\n\nWeek by week Building Microservices builds on the previous weeks code teaching you how to build a multi-tier microservice system. The code structure for the course is one of a mono repo. To make it simple to follow along, each episode has its own branch showing progress to date.\n\n## Services\n\n### Product API [./product-api](./product-api)\nSimple Go based JSON API built using the Gorilla framework. The API allows CRUD based operations on a product list.\n\n### Frontend website [./frontend](./frontend)\nReactJS website for presenting the Product API information\n\n## Series Content\n\nOver the weeks we will look at the following topics, teaching you everything you need to know regarding building microservices with the go programming language:\n\n- Introduction to microservices\n- RESTFul microservices\n- gRPC microservices\n- Packaging applications with Docker\n- Testing microservice\n- Continuous Delivery\n- Observability\n- Using Kubernetes\n- Debugging\n- Security\n- Asynchronous microservices\n- Caching\n- Microservice reliability using a Service Mesh\n\n\n## Episode 1 - Building a simple microservice\n\n### [https://youtu.be/VzBGi_n65iU](https://youtu.be/VzBGi_n65iU)\n\n### Branch: [episode_1](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_1)\n\nIn this episode I show you how to build the simplest service you can using the standard packages in the Go programming language. \n\n\n## Episode 2 - Building a simple microservice, continued\n\n### [https://youtu.be/hodOppKJm5Y](https://youtu.be/hodOppKJm5Y)\n\n### Branch: [episode_2](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_2)\n\nIn this episode we learn more about the standard library and look at how we can refactor last episodes example into a reusable microservice pattern.\n\n\n## Episode 3 - RESTFul microservices\n\n### [https://youtu.be/eBeqtmrvVpg](https://youtu.be/eBeqtmrvVpg)\n\n### Branch: [episode_3](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_3)\n\nIn this episode we start to learn about RESTFul services and reading and writing data using the JSON format.\n\n\n## Episode 4 - RESTful microservices\n\n### [https://youtu.be/UZbHLVsjpF0](https://youtu.be/UZbHLVsjpF0)\n\n### Branch [episode_4](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_4)\n\nWe continue to look at how you can implement RESTFul services with the Standard API\n\n\n## Episode 5 - Gorilla toolkit\n\n### [https://youtu.be/DD3JlT_u0DM](https://youtu.be/DD3JlT_u0DM)\n\n### Branch [episode_5](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_5)\n\nIn this epsode we refactor our Standard library RESTful service and start to implement the Gorill toolkit for routing.\n\n\n## Episode 6 - JSON Validation\n\n### [https://youtu.be/gE8_-8KoOLc](https://youtu.be/gE8_-8KoOLc)\n\n### Branch [episode_6](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_6)\n\nIn this episode we will look at the Go Validator package and how it can be used to validate JSON.\n\n\n## Episode 7 - Documenting APIs with Swagger\n\n### [https://youtu.be/07XhTqE-j8k](https://youtu.be/07XhTqE-j8k)\n\n### Branch [episode_7](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_7)\n\nThis epsiode shows you how you can document the API we have been building over the last couple of weeks. As a bonus we will also look at how we can embed ReDoc to build a nice documentation API direct into our service.\n\n\n## Episode 8 - Auto-generating HTTP client code from Swagger documentation\n\n### [https://youtu.be/Zn4joNjqBFc](https://youtu.be/Zn4joNjqBFc)\n\n### Branch [episode_8](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_8)\n\nIn this episode we look at how we can use the Swagger API documentation we created in the last episode and generate a Go client SDK. As it turns out I had a little bug in my code\nhope you all find the process of debugging this and finding root cause useful too.\n\n\n## Episode 9 - CORS (Cross-Origin Resource Sharing)\n\n### [https://youtu.be/RlYoy_RiYPw](https://youtu.be/RlYoy_RiYPw)\n\n### Branch [episode_9](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_9)\n\nIn this episode we are going to take a look at CORS (Cross-Origin Resource Sharing). CORS is a security feature built into web browsers which restricts upstream requests to sites on different domains. We look at a typical example of a React website on one domain calling a back end API, see the impact of CORS and how to solve it.\n\n\n## Episode 10 - Serving and uploading files\n\n### [https://youtu.be/ctmhYJpGsgU](https://youtu.be/ctmhYJpGsgU)\n\n### Branch [episode_10](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_10)\n\nIn this episode you will learn how to upload and serve files using the Go standard library.\n\n\n## Episode 11 - Handling multi-part form uploads\n\n### [https://youtu.be/_7-IhHMptNo](https://youtu.be/_7-IhHMptNo)\n\n### Branch [episode_11](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_11)\n\nIn this episode you will learn how to handle multi-part form uploads. Mult-part forms used to be common place as they are the basic way that browsers would upload data to a server. This pattern has fallen out of fashion as most moder data transfer to the server is done using XHR requests. There might still be a case when you need to know this though.\n\n\n## Episode 12 - Using Gzip compression for HTTP responses\n\n### [https://youtu.be/GtSg1H7SU5Y](https://youtu.be/GtSg1H7SU5Y)\n\n### Branch [episode_12](https://github.com/nicholasjackson/building-microservices-youtube/tree/episode_12)\n\nIn this episode we walk through how to wrap a http.ResponseWriter to enable Gzip compression for HTTP responses.\n\nHTTP Headers Accept-Encoding:\nhttps://developer.mozilla.org/en-US/d...\n\nHTTP ResponseWriter:\nhttps://golang.org/pkg/net/http/#Resp...\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndirangug%2Fgo-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fndirangug%2Fgo-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fndirangug%2Fgo-microservices/lists"}