{"id":13543346,"url":"https://github.com/dlsniper/gopherconuk","last_synced_at":"2025-04-13T05:22:29.682Z","repository":{"id":41049122,"uuid":"143851746","full_name":"dlsniper/gopherconuk","owner":"dlsniper","description":"Repository for GopherCon UK 2018 talk on microservices with Go","archived":false,"fork":false,"pushed_at":"2022-07-29T16:17:39.000Z","size":11,"stargazers_count":233,"open_issues_count":2,"forks_count":59,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-03-24T09:44:56.714Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/dlsniper.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}},"created_at":"2018-08-07T09:36:49.000Z","updated_at":"2025-01-27T15:03:34.000Z","dependencies_parsed_at":"2022-09-20T21:18:09.572Z","dependency_job_id":null,"html_url":"https://github.com/dlsniper/gopherconuk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlsniper%2Fgopherconuk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlsniper%2Fgopherconuk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlsniper%2Fgopherconuk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dlsniper%2Fgopherconuk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dlsniper","download_url":"https://codeload.github.com/dlsniper/gopherconuk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248666922,"owners_count":21142344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":[],"created_at":"2024-08-01T11:00:30.524Z","updated_at":"2025-04-13T05:22:29.657Z","avatar_url":"https://github.com/dlsniper.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"# Go micro-service in ~30 minutes\n\nThis is a Go micro-service written from scratch.\n\nIt shows how to use [net/http](https://godoc.org/net/http), and how to structure a Go project.\n\nIt relies on Go 1.11 Beta 2 and the upcoming \"Go modules\" (formerly known as \"vgo\") support.\n\nDependency injection is used to insert a logger instance into the handler.\n\nYou can also notice how the test is constructed in order to provide testing for the handler.\n\nA Docker container is available, thanks to the Dockerfile. It shows how to construct such containers. \n\n## How to use\n\nBecause this project uses go modules, as long as you are using Go 1.11 Beta 2+ or Go 1.10 with vgo support,\nyou should be ok.\n\nClone this anywhere in your computer and create a project in your editor. I'm using [GoLand IDE](https://jetbrains.com/go) in order to work\non the project during the presentation as well as have support for go modules.\n\nThe bundled, self-signed, certificates are bound to either ` dev.localhost:8080 ` or ` docker.localhost:8080 `. I obviously\ndo not recommend using these in production.\n\n## Presentation link\n\nI created this as part of the presentation at [GopherCon UK 18](https://www.gophercon.co.uk/).\n\nThe link for the video will be updated here when the presentation is out.\n\n## References \n\n### Structuring Go applications\n\nIn order to learn how to approach package design in Go, you can read the following resources:\n\n- [Style guideline for Go packages - JBD](https://rakyll.org/style-packages/)\n- [Standard Package Layout - Ben Johnson](https://medium.com/@benbjohnson/standard-package-layout-7cdbc8391fc1#.ds38va3pp)\n- [Go best practices, six years in - Peter Bourgon](https://peter.bourgon.org/go-best-practices-2016/#repository-structure)\n\nOnce done, this article will help you understand the [Design Philosophy On Packaging by William Kennedy](https://www.ardanlabs.com/blog/2017/02/design-philosophy-on-packaging.html).\n\n### Exposing Go applications to the Internet\n\n[This article](https://blog.cloudflare.com/exposing-go-on-the-internet/) describes how you can start approaching  \n\n## Thank you\n\nI would like to thank you [William \"Bill\" Kennedy](https://twitter.com/goinggodotnet) for the inspiration he provided on\ngetting me to do this talk.\n\n\n## License\n\nThis project is under the MIT license. Please see the [LICENSE](LICENSE) file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlsniper%2Fgopherconuk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdlsniper%2Fgopherconuk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdlsniper%2Fgopherconuk/lists"}