{"id":26925124,"url":"https://github.com/rmhubbert/go-architecture","last_synced_at":"2025-07-12T20:32:24.873Z","repository":{"id":269257035,"uuid":"880521809","full_name":"rmhubbert/go-architecture","owner":"rmhubbert","description":"Some examples of a simple micro service written in Go with various different architectures","archived":false,"fork":false,"pushed_at":"2024-12-05T15:51:17.000Z","size":68,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-02T02:36:38.882Z","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/rmhubbert.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":"2024-10-29T21:53:16.000Z","updated_at":"2025-02-05T14:01:10.000Z","dependencies_parsed_at":"2024-12-22T07:30:25.713Z","dependency_job_id":"46cf0a20-36e1-48b8-b06d-d610cac12c3a","html_url":"https://github.com/rmhubbert/go-architecture","commit_stats":null,"previous_names":["rmhubbert/go-architecture"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rmhubbert/go-architecture","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmhubbert%2Fgo-architecture","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmhubbert%2Fgo-architecture/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmhubbert%2Fgo-architecture/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmhubbert%2Fgo-architecture/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rmhubbert","download_url":"https://codeload.github.com/rmhubbert/go-architecture/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rmhubbert%2Fgo-architecture/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265049074,"owners_count":23703461,"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":"2025-04-02T02:30:12.612Z","updated_at":"2025-07-12T20:32:24.827Z","avatar_url":"https://github.com/rmhubbert.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Go Architecture\n\nThis project aims to provide examples of some of the popular software architectures you can utilise when building web services. These examples build out services with exactly the same functionality, only the architecture and associated design patterns change.\n\n## The Architectures\n\nI'll be demonstrating how to build a simple web service using the following architectures -\n\n- [Simple](https://github.com/rmhubbert/go-architecture/tree/main/simple)\n- [Layered](https://github.com/rmhubbert/go-architecture/tree/main/layered)\n- [Modular](https://github.com/rmhubbert/go-architecture/tree/main/modular)\n- [Model View Controller](https://github.com/rmhubbert/go-architecture/tree/main/mvc)\n- [Hexagonal / Ports \u0026 Adapters](https://github.com/rmhubbert/go-architecture/tree/main/hexagonal)\n\n## The Project\n\nThe project I'll be using to demonstrate these architectures is a simple HTTP server that provides an API for managing users and user roles for these projects. The implementation is kept as simple as possible (this code is definitely not production ready, and isn't intended to be!), and third party libraries are kept to a minimum. The idea is that there is just enough code to enable the functionality, so as to not distract from the actual point, which is to demonstrate the different architectures.\n\n## Tests\n\nUnit tests have also been omitted, but you will find some simple end to end tests that can be run to ensure the server is working as intended. These tests require one of the projects to be currently running on port 8080.\n\nOnce you have the server running, you can run the e2e tests by running the following command from this directory.\n\n```go\ngo test ./...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmhubbert%2Fgo-architecture","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frmhubbert%2Fgo-architecture","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frmhubbert%2Fgo-architecture/lists"}