{"id":15594472,"url":"https://github.com/jofaval/choreography-microservices","last_synced_at":"2026-04-07T18:31:41.677Z","repository":{"id":212721085,"uuid":"732156890","full_name":"jofaval/choreography-microservices","owner":"jofaval","description":"Event-Driven Microservices with Kafka and Choreography as the consistency pattern","archived":false,"fork":false,"pushed_at":"2023-12-24T16:32:59.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T10:45:37.041Z","etag":null,"topics":["choreography","csharp","go","golang","java","kafka","microservices","node","php","pnpm","python","ruby","typescript","zod"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jofaval.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":"2023-12-15T19:38:37.000Z","updated_at":"2023-12-17T19:28:38.000Z","dependencies_parsed_at":"2023-12-24T19:25:13.477Z","dependency_job_id":null,"html_url":"https://github.com/jofaval/choreography-microservices","commit_stats":null,"previous_names":["jofaval/choreography-microservices"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jofaval/choreography-microservices","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jofaval%2Fchoreography-microservices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jofaval%2Fchoreography-microservices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jofaval%2Fchoreography-microservices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jofaval%2Fchoreography-microservices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jofaval","download_url":"https://codeload.github.com/jofaval/choreography-microservices/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jofaval%2Fchoreography-microservices/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31524524,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"ssl_error","status_checked_at":"2026-04-07T16:28:06.951Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["choreography","csharp","go","golang","java","kafka","microservices","node","php","pnpm","python","ruby","typescript","zod"],"created_at":"2024-10-03T00:40:36.580Z","updated_at":"2026-04-07T18:31:41.644Z","avatar_url":"https://github.com/jofaval.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Choreography Microservices\n\nEvent-Driven Microservices with Kafka and Choreography as the consistency pattern\n\n## Why\n\nThis was a laboratory for the High-Potential Technical Booster hosted at EDEM and sponsored by Capgemini\n\n### Source\n\nhttps://github.com/ccsw-csd/shop-cart-public\n\n### Reference\n\nhttps://github.com/ccsw-csd/shop-cart\n\n## Data Flow\n\n```mermaid\nflowchart LR;\n    shop_order[Shop Orders]--\u003e|OK|stock[Stock];\n\n    stock--\u003e|KO|shop_order;\n    stock--\u003e|OK|payment[Payments];\n\n    payment--\u003e|KO|stock;\n    payment--\u003e|OK|shipment[Shipments];\n\n    shipment--\u003e|KO|payment;\n    shipment--\u003e|OK|invoice[Invoices];\n\n    invoice--\u003e|KO|shipment;\n    invoice--\u003e|OK|shop_order;\n\n    shop_order--\u003e|KO|notification[Notifications];\n    shop_order--\u003e|OK|notification;\n\n    notification--\u003ea(\"Send Notification\");\n```\n\n## Structure\n\n- scripts, e2e testing\n- server, kafka and zookeeper, WIP\n- src, microservices\n\n## Language Philosophy\n\nTrying not to default to Java, each microservice is written in a different language\n\n- Ruby -\u003e shop_orders\n- C# -\u003e stocks\n- Golang -\u003e payments\n- PHP -\u003e shipments\n- Python -\u003e invoices\n- Node -\u003e notifications\n\n## Testing\n\nEach microservice owns their own testing strategy.\nThe payloads are defined in the microservice, as a json file\n\nThere's a root script to execute every single e2e testing of each microservice in order\n\n## Handlers\n\n```java\nclass ServiceHandler {\n    public ShopOrderRequest shopOrderRequest;\n\n    // ...\n\n    public void success() {\n\n    }\n\n    public void fail() {\n\n    }\n\n    public void process() {\n\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjofaval%2Fchoreography-microservices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjofaval%2Fchoreography-microservices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjofaval%2Fchoreography-microservices/lists"}