{"id":27198518,"url":"https://github.com/sam-goodwin/eventual","last_synced_at":"2025-10-17T09:15:32.726Z","repository":{"id":152622969,"uuid":"561986867","full_name":"sam-goodwin/eventual","owner":"sam-goodwin","description":"Build scalable and durable micro-services with APIs, Messaging and Workflows","archived":false,"fork":false,"pushed_at":"2025-03-27T04:45:37.000Z","size":61150,"stargazers_count":182,"open_issues_count":106,"forks_count":3,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-06T15:14:29.083Z","etag":null,"topics":["aws","aws-cdk","choreography","distributed-systems","event-driven","microservice-framework","microservice-orchestration","microservices","orchestration","orchestrator","pubsub","saga-pattern","service-bus","service-fabric","state-management","typescript","workflow-automation","workflow-engine","workflow-management","workflows"],"latest_commit_sha":null,"homepage":"https://docs.eventual.ai","language":"TypeScript","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/sam-goodwin.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2022-11-05T00:55:43.000Z","updated_at":"2025-03-27T04:45:41.000Z","dependencies_parsed_at":"2024-02-13T07:44:09.918Z","dependency_job_id":"cc540c88-1244-4b96-9b37-957bb6918fc2","html_url":"https://github.com/sam-goodwin/eventual","commit_stats":null,"previous_names":["sam-goodwin/eventual","functionless/eventual"],"tags_count":164,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam-goodwin%2Feventual","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam-goodwin%2Feventual/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam-goodwin%2Feventual/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sam-goodwin%2Feventual/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sam-goodwin","download_url":"https://codeload.github.com/sam-goodwin/eventual/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248110033,"owners_count":21049420,"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":["aws","aws-cdk","choreography","distributed-systems","event-driven","microservice-framework","microservice-orchestration","microservices","orchestration","orchestrator","pubsub","saga-pattern","service-bus","service-fabric","state-management","typescript","workflow-automation","workflow-engine","workflow-management","workflows"],"created_at":"2025-04-09T20:42:19.453Z","updated_at":"2025-10-17T09:15:32.607Z","avatar_url":"https://github.com/sam-goodwin.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Eventual is a TypeScript framework for building event-driven applications on AWS using Commands, Events, Subscribers, Workflows and Streams.\n\nYour application exports APIs, Workflows, etc. that are then imported to synthesize an AWS CDK or SST v2 stack that is then deployed to AWS.\n\n```ts\nimport { event, task, workflow, api, HttpResponse } from \"@eventual/core\";\n\napi.post(\"/work\", async (request) =\u003e {\n  const items: string[] = await request.json();\n\n  const { executionId } = await myWorkflow.startExecution({\n    input: items,\n  });\n\n  return new HttpResponse(JSON.stringify({ executionId }), {\n    status: 200,\n  });\n});\n\nexport const myWorkflow = workflow(\"myWorkflow\", async (items: string[]) =\u003e {\n  const results = await Promise.all(items.map(doWork));\n\n  await workDone.emit({\n    outputs: results,\n  });\n\n  return results;\n});\n\nexport const doWork = task(\"work\", async (work: string) =\u003e {\n  console.log(\"Doing Work\", work);\n\n  return work.length;\n});\n\nexport interface WorkDoneEvent {\n  outputs: number[];\n}\n\nexport const workDone = event\u003cWorkDoneEvent\u003e(\"WorkDone\");\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsam-goodwin%2Feventual","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsam-goodwin%2Feventual","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsam-goodwin%2Feventual/lists"}