{"id":38176360,"url":"https://github.com/jtorvald/temporal-dispatch-poc","last_synced_at":"2026-01-16T23:33:11.056Z","repository":{"id":57636186,"uuid":"422303469","full_name":"jtorvald/temporal-dispatch-poc","owner":"jtorvald","description":"Small proof of concept project to try temporal.io with Dispatch Incident Management from Netflix.","archived":false,"fork":false,"pushed_at":"2021-11-12T16:54:48.000Z","size":252,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-06-20T01:49:40.654Z","etag":null,"topics":["dispatch","go","temporal","temporalio","workflow"],"latest_commit_sha":null,"homepage":"","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/jtorvald.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":"2021-10-28T17:51:03.000Z","updated_at":"2021-11-12T16:54:51.000Z","dependencies_parsed_at":"2022-09-26T20:21:46.260Z","dependency_job_id":null,"html_url":"https://github.com/jtorvald/temporal-dispatch-poc","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/jtorvald/temporal-dispatch-poc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtorvald%2Ftemporal-dispatch-poc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtorvald%2Ftemporal-dispatch-poc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtorvald%2Ftemporal-dispatch-poc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtorvald%2Ftemporal-dispatch-poc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jtorvald","download_url":"https://codeload.github.com/jtorvald/temporal-dispatch-poc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jtorvald%2Ftemporal-dispatch-poc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28487586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T22:54:02.790Z","status":"ssl_error","status_checked_at":"2026-01-16T22:50:10.344Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["dispatch","go","temporal","temporalio","workflow"],"created_at":"2026-01-16T23:33:10.918Z","updated_at":"2026-01-16T23:33:11.042Z","avatar_url":"https://github.com/jtorvald.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# temporal-dispatch-poc\nSmall POC project to try out the [Temporal](http://temporal.io/) workflow engine together with [Netflix's](https://github.com/netflix/)\n[Dispatch](https://github.com/netflix/dispatch/) Incident Management System.\n\n# Supported workflows\nPure for fun there are two workflows implemented: \n1. Showing a random dog picture from dog.ceo \n2. A similar workflow to get a random photo from Unsplash.\n\nBoth workflows have a bit of delay in them to suggest hard work and state changes.\n\n# Project Goals\nFor this project I had two goals:\n1. Get experience with the Temporal Workflow engine.\n2. Adding a workflow system to Dispatch through a [generic workflow plugin](https://github.com/Netflix/dispatch/tree/master/src/dispatch/plugins/generic_workflow) \n   that I contributed to Dispatch.\n3. Providing an example to others that want to start using Dispatch and that need an easy way to start with workflows. \n\n# Running POC server\nYou can either download this project and build it from source or you could download the binaries.\n\n```shell\n./td -api=:8888 -temporal=localhost:7233 -queue=dispatch \n```\n\n# Setting up Dispatch with Generic Workflow\nAssuming you already have [Dispatch](https://github.com/Netflix/dispatch-docker) and [Temporal](https://github.com/temporalio/docker-compose) running.\nThe quickest way to test this is to run both from Docker compose.\n\n## Add the plugin\nTo enable the Generic Workflow Plugin in Dispatch:\n1. Login to Dispatch\n2. Navigate to: Settings \u003e Projects \u003e default.\n3. Click Plugins\n4. Click NEW\n5. Select Generic Workflow Plugin\n6. Save\n\n## Configure plugin\nNow you need to configure the plugin to point to the API from this project.\nIf you run Dispatch in Docker and run this API on the Docker host, you can use the Docker gateway IP to connect.\nIn that case the URL would be something like: http://172.17.0.1:8888/workflow/\n\nCurrently, there is no authentication on the API.\n\nEnable the plugin and save.\n\n## Add workflows\n1. Under Settings go to Workflows\n2. Add new workflow:\n   1. Name: Random dog\n   2. Resource ID: random_dog\n   3. Description: Gets a random dog picture\n   4. Plugin: Generic Workflow Plugin\n   5. Enabled: true\n   6. SAVE\n3. Add new workflow:\n    1. Name: Random Unsplash\n    2. Resource ID: random_unsplash\n    3. Description: Gets a random photo from Unsplash\n    4. Plugin: Generic Workflow Plugin\n    5. Enabled: true\n    6. Workflow Configuration: + add key: term\n    7. SAVE\n\nNow run one of the workflows.\n\n# Screenshots\n## Start the workflow\n![image info](./screenshots/slack-dispatch-run-workflow.png)\n## Workflow completed\n![image info](./screenshots/slack-workflow-completed.png)\n\n# TODO\n1. Add authentication on the API\n2. Maybe break apart Dispatch structs and helper functions so that they are useful for other API's that don't use Temporal\n3. Support TLS\n4. Docker image\n\n# Dependencies\nThis project uses [schema-generate](https://github.com/a-h/generate) to generate the \ngo structs from the Dispatch JSON schema. This is already done and the structs are in the project so there is\nno use to generate it again unless it changes.\n\n# License\n[MIT](LICENSE)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtorvald%2Ftemporal-dispatch-poc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjtorvald%2Ftemporal-dispatch-poc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjtorvald%2Ftemporal-dispatch-poc/lists"}