{"id":20909940,"url":"https://github.com/escalopa/goddd","last_synced_at":"2026-04-26T09:32:34.016Z","repository":{"id":105079917,"uuid":"582150629","full_name":"escalopa/goddd","owner":"escalopa","description":"A repo for practicing DDD pattern on golang","archived":false,"fork":false,"pushed_at":"2022-12-26T02:55:44.000Z","size":60,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-26T20:58:10.025Z","etag":null,"topics":["ddd-architecture","golang"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/escalopa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-12-25T22:11:36.000Z","updated_at":"2022-12-26T00:12:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"73c734c2-d903-41fa-9ceb-bfb88176a9b4","html_url":"https://github.com/escalopa/goddd","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/escalopa/goddd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Fgoddd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Fgoddd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Fgoddd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Fgoddd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/escalopa","download_url":"https://codeload.github.com/escalopa/goddd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Fgoddd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32292867,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T08:29:33.829Z","status":"ssl_error","status_checked_at":"2026-04-26T08:29:18.366Z","response_time":129,"last_error":"SSL_read: 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":["ddd-architecture","golang"],"created_at":"2024-11-18T14:13:17.982Z","updated_at":"2026-04-26T09:32:33.995Z","avatar_url":"https://github.com/escalopa.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# goddd 📘\n\nA repo for practicing DDD pattern on golang\n\n## What DDD 🤨\n\nDDD stand for domain driven design, it's a pattern for designing software. It's a way to design software that is flexible and easy to maintain.\n\n## Why DDD 🤔\n\nIn big projects or projects that have a lot of features, it's hard to maintain the code. It's hard to add new features or fix bugs. And this is wehere DDD comes in place to make the software flexible and easy to maintain.\n\n## Cafe DDD 😮\n\nCafe DDD is a project that I'm working on to practice DDD pattern on golang. It's a simple cafe management system.\n\nThis project has the following features:\n\n- Add new product\n- Add new customer\n- Create order\n\nThese of course are basic features, but they are enough to practice DDD pattern.\n\nThe DDD pattern is implemented to make the swap between packages easy. For example, if I want to change the database from mysql to postgres, I can do it easily by changing the implementation of the repository interface.\n\nBut in my case it's between memory repository \u0026 mongo repository.\n\n## Packages structure 🏗\n\n![project structure tree](./img/tree.png)\n\n| Package    | Description                                                         |\n|------------|---------------------------------------------------------------------|\n| aggregate  | Contains all project complex structures                             |\n| entity     | Contains all the basic (building blocks) structs                    |\n| repository | Contains all the interfaces for the repositories(Customer, Product) |\n| memory     | Contains the implementation of the repositories in memory           |\n| service    | Contains all the business logic                                     |\n| cmd        | Contains the main file to run the application                       |\n\n## Run test 🧪\n\n```bash\ngo test ./... -v -cover\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fescalopa%2Fgoddd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fescalopa%2Fgoddd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fescalopa%2Fgoddd/lists"}