{"id":18456090,"url":"https://github.com/masstransit/sample-forkjoint","last_synced_at":"2025-04-08T04:34:20.262Z","repository":{"id":39971061,"uuid":"326005434","full_name":"MassTransit/Sample-ForkJoint","owner":"MassTransit","description":null,"archived":false,"fork":false,"pushed_at":"2024-04-26T03:15:14.000Z","size":192,"stargazers_count":32,"open_issues_count":0,"forks_count":22,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-23T06:11:44.617Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":false,"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/MassTransit.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}},"created_at":"2021-01-01T15:32:46.000Z","updated_at":"2024-10-14T20:00:07.000Z","dependencies_parsed_at":"2022-09-02T11:50:34.149Z","dependency_job_id":null,"html_url":"https://github.com/MassTransit/Sample-ForkJoint","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/MassTransit%2FSample-ForkJoint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MassTransit%2FSample-ForkJoint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MassTransit%2FSample-ForkJoint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MassTransit%2FSample-ForkJoint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MassTransit","download_url":"https://codeload.github.com/MassTransit/Sample-ForkJoint/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247779796,"owners_count":20994569,"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-11-06T08:10:00.997Z","updated_at":"2025-04-08T04:34:19.704Z","avatar_url":"https://github.com/MassTransit.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fork Joint\n\nFork Joint is a fictional restaurant built during Season 3 of the MassTransit Live Code Video Series. You can [watch the episodes on YouTube](https://youtube.com/playlist?list=PLx8uyNNs1ri2JeyDGFWfCYyAjOB1GP-t1) and follow along by resetting to the various commits in the Git history.\n\n\n\n## Docker Setup\n\nThe sample application can be run using Docker, however, there are a couple setup tasks required.\n\n- Install Loki docker plugin `docker plugin install grafana/loki-docker-driver:latest --alias loki --grant-all-permissions`\n- Start all the services `docker compose -f .\\docker-compose.services.yml up -d`\n- Stopping all the services `docker compose -f .\\docker-compose.services.yml down -v`\n\n### Certificate Setup\n\nThe `docker-compose.api.yml` maps the local ASP.NET certificate folder into the container so that HTTPS can be used. This is different depending upon your operating system.\n\n\u003e I use a Mac with JetBrains Rider, so my configuration is in the GitHub repository. \n\nTo create the development certificate:\n\nMAC: \n\n```\ndotnet dev-certs https -ep ~/.aspnet/https/aspnetapp.pfx -p Passw0rd\ndotnet dev-certs https --trust\n```\n\nPC: \n\n```\ndotnet dev-certs https -ep %USERPROFILE%\\.aspnet\\https\\aspnetapp.pfx -p Pass0wrd\ndotnet dev-certs https --trust\n```\n\nYou may need to modify the `docker-compose.api.yml` file to match your path for Windows.\n\n[See this page](https://docs.microsoft.com/en-us/aspnet/core/security/docker-https?view=aspnetcore-6.0) for more information, it was used to get this working on my machine.\n\n\n\n## Design Diagrams\n\n### Request Response\n\n![Request Response](https://raw.githubusercontent.com/MassTransit/Sample-ForkJoint/master/assets/requestResponse.svg \"Request Response\")\n\n### Routing Slip\n\n![Routing Slip](https://raw.githubusercontent.com/MassTransit/Sample-ForkJoint/master/assets/routingSlip.svg \"Routing Slip\")\n\n### Example SubmitOrder Post\n```\nPOST https://localhost:5001/Order\nContent-Type: application/json\n\n{\n  \"orderId\": \"{{$guid}}\",\n  \"burgers\": [\n    {\n      \"burgerId\": \"{{$guid}}\",\n      \"weight\": 2,\n      \"lettuce\": false,\n      \"cheese\": true,\n      \"pickle\": true,\n      \"onion\": true,\n      \"ketchup\": true,\n      \"mustard\": true,\n      \"barbecueSauce\": true,\n      \"onionRing\": true\n    }\n  ],\n  \"fries\": [\n    {\n      \"fryId\": \"{{$guid}}\",\n      \"size\": 1\n    }\n  ],\n  \"shakes\": [\n    {\n      \"shakeId\": \"{{$guid}}\",\n      \"flavor\": \"Strawberry\",\n      \"size\": 1\n    }\n  ],\n  \"fryShakes\": [\n    {\n      \"fryShakeId\": \"{{$guid}}\",\n      \"flavor\": \"Banna\",\n      \"size\": 1\n    }\n  ]\n}\n```\n\n### Logging and OpenTelemetry Links\n\n- [Seq](https://datalust.co/) - http://localhost:5341\n- [Grafana](https://grafana.com/docs/tempo/latest/) - http://localhost:3001\n- [Jaegar](https://www.jaegertracing.io/) - http://localhost:16686\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasstransit%2Fsample-forkjoint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmasstransit%2Fsample-forkjoint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasstransit%2Fsample-forkjoint/lists"}