{"id":19142912,"url":"https://github.com/restatedev/examples","last_synced_at":"2026-01-16T10:54:26.632Z","repository":{"id":191148944,"uuid":"676874414","full_name":"restatedev/examples","owner":"restatedev","description":"Restate examples","archived":false,"fork":false,"pushed_at":"2026-01-13T18:15:37.000Z","size":8503,"stargazers_count":139,"open_issues_count":14,"forks_count":27,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-01-13T18:43:22.003Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://restate.dev","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/restatedev.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-08-10T08:00:31.000Z","updated_at":"2026-01-13T18:09:41.000Z","dependencies_parsed_at":"2023-08-28T11:14:45.676Z","dependency_job_id":"7933ab4e-235b-4394-9c49-0d445c98647d","html_url":"https://github.com/restatedev/examples","commit_stats":null,"previous_names":["restatedev/examples"],"tags_count":66,"template":false,"template_full_name":null,"purl":"pkg:github/restatedev/examples","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fexamples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fexamples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fexamples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fexamples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/restatedev","download_url":"https://codeload.github.com/restatedev/examples/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/restatedev%2Fexamples/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478090,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"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":[],"created_at":"2024-11-09T07:28:56.688Z","updated_at":"2026-01-16T10:54:26.612Z","avatar_url":"https://github.com/restatedev.png","language":"TypeScript","funding_links":[],"categories":["Uncategorized"],"sub_categories":["Uncategorized"],"readme":"\u003c!-- markdown-link-check-disable --\u003e\n[![Documentation](https://img.shields.io/badge/doc-reference-blue)](https://docs.restate.dev)\n[![Discord](https://img.shields.io/discord/1128210118216007792?logo=discord)](https://discord.gg/skW3AZ6uGd)\n[![Slack](https://img.shields.io/badge/Slack-4A154B?logo=slack\u0026logoColor=fff)](https://join.slack.com/t/restatecommunity/shared_invite/zt-2v9gl005c-WBpr167o5XJZI1l7HWKImA)\n[![Twitter](https://img.shields.io/twitter/follow/restatedev.svg?style=social\u0026label=Follow)](https://x.com/intent/follow?screen_name=restatedev)\n\u003c!-- markdown-link-check-enable --\u003e\n\n# Restate examples\n\nA collection of examples that illustrate how to use Restate to solve common application\nchallenges.\n\n* **Basics:** Small examples highlighting the basic building blocks, like\n  durable execution or virtual objects.\n\n* **Use Cases and Patterns:** Small specific use cases, like webhooks,\n  workflows, asynchronous task queuing.\n\n* **Integrations:** Examples of integrating Restate with other popular tools, technologies, and libraries.\n\n* **End-to-End Applications:** Runnable demo applications that consist\n  of many components, e.g., a food ordering app, or an e-commerce site.\n  Typically packaged as a docker compose setup.\n\n* **Templates:** Project templates for various languages, build systems and runtimes.\n  Simple 'Hello World!' examples in a proper build setup that you can use if you want to start\n  a brand new project for a service or lambda that will be invoked through Restate.\n\n* **Tutorials:** A step-by-step guide that builds an application and introduces\n  the Restate concepts on the way.\n\n## Example catalogs\n\nHave a look at the example catalog for your preferred SDK language:\n\n[![TypeScript](https://skillicons.dev/icons?i=ts)](typescript)\n[![Go](https://skillicons.dev/icons?i=go)](go)\n[![Python](https://skillicons.dev/icons?i=python\u0026theme=light)](python)\n[![Java](https://skillicons.dev/icons?i=java\u0026theme=light)](java)\n[![Kotlin](https://skillicons.dev/icons?i=kotlin\u0026theme=light)](kotlin)\n[![Rust](https://skillicons.dev/icons?i=rust\u0026theme=light)](rust)\n\nOr have a look at the general catalog below:\n\n\n#### Basics\n\n| Example Name                                                | Languages                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n|-------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| \u003ca id=\"durable-execution\"\u003eServices - Durable Execution\u003c/a\u003e  | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/basics/src/0_durable_execution.ts) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/basics/part0/durableexecution.go) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/basics/app/0_durable_execution.py) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/basics/src/main/java/durable_execution/SubscriptionService.java) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/basics/src/main/kotlin/durable_execution/SubscriptionService.kt) [\u003cimg src=\"https://skillicons.dev/icons?i=rust\u0026theme=light\" width=\"24\" height=\"24\"\u003e](rust/basics/src/p0_durable_execution.rs) |\n| \u003ca id=\"durable-building-blocks\"\u003eDurable Building Blocks\u003c/a\u003e | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/basics/src/1_building_blocks.ts) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/basics/part1/buildingblocks.go) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/basics/app/1_building_blocks.py) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/basics/src/main/java/building_blocks/MyService.java) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/basics/src/main/kotlin/building_blocks/MyService.kt) [\u003cimg src=\"https://skillicons.dev/icons?i=rust\u0026theme=light\" width=\"24\" height=\"24\"\u003e](rust/basics/src/p1_building_blocks.rs)                                 |\n| \u003ca id=\"virtual-objects\"\u003eVirtual Objects\u003c/a\u003e                 | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/basics/src/2_virtual_objects.ts) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/basics/part2/virtualobjects.go) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/basics/app/2_virtual_objects.py) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/basics/src/main/java/virtual_objects/GreeterObject.java) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/basics/src/main/kotlin/virtual_objects/GreeterObject.kt) [\u003cimg src=\"https://skillicons.dev/icons?i=rust\u0026theme=light\" width=\"24\" height=\"24\"\u003e](rust/basics/src/p2_virtual_objects.rs)                         |\n| \u003ca id=\"workflows\"\u003eWorkflows\u003c/a\u003e                             | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/basics/src/3_workflows.ts) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/basics/part3/workflows.go) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/basics/app/3_workflows.py) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/basics/src/main/java/workflows/SignupWorkflow.java) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/basics/src/main/kotlin/workflows/SignupWorkflow.kt) [\u003cimg src=\"https://skillicons.dev/icons?i=rust\u0026theme=light\" width=\"24\" height=\"24\"\u003e](rust/basics/src/p3_workflows.rs)                                                          |\n\n#### Use Cases and Patterns\n\n| Example Name                                                              | Languages                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n|---------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| \u003ca id=\"durable-rpc\"\u003eDurable RPC, Idempotency \u0026 Concurrency\u003c/a\u003e            | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#durable-rpc-idempotency--concurrency) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#durable-rpc-idempotency--concurrency) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#durable-rpc-idempotency--concurrency) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#durable-rpc-idempotency--concurrency)                                                                                                                                   |\n| \u003ca id=\"message-queue\"\u003e\\(Delayed\\) Message Queue\u003c/a\u003e                       | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#delayed-message-queue) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#delayed-message-queue) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#delayed-message-queue) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#delayed-message-queue) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/patterns-use-cases/README.md#delayed-message-queue)                                             |\n| \u003ca id=\"webhook-callbacks\"\u003eWebhook Callbacks\u003c/a\u003e                           | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#webhook-callbacks) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#webhook-callbacks)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| \u003ca id=\"sagas\"\u003eSagas\u003c/a\u003e                                                   | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#sagas) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#sagas) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#sagas) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#sagas) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/patterns-use-cases/README.md#sagas)                                                                                                                             |\n| \u003ca id=\"cron\"\u003eCron Jobs\u003c/a\u003e                                                | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#cron-jobs) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#cron-jobs) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#cron-jobs)                                                                                                                                                                                                                                                                                                                                                                                     |\n| \u003ca id=\"database-interaction\"\u003eDatabase Interaction Patterns\u003c/a\u003e            | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#database-interaction-patterns)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| \u003ca id=\"sync-to-async\"\u003eConvert Sync Tasks to Async\u003c/a\u003e                     | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#convert-sync-tasks-to-async) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#convert-sync-tasks-to-async) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#convert-sync-tasks-to-async) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#convert-sync-tasks-to-async)                                                                                                                                                                       |\n| \u003ca id=\"batching\"\u003eBatching\u003c/a\u003e                                             | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#batching) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#batching)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n| \u003ca id=\"payment-signals\"\u003ePayments Signals \\(Advanced\\)\u003c/a\u003e                 | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#payment-signals) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#payment-signals) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#payment-signals)                                                                                                                                                                                                                                                                                                                                               |\n| \u003ca id=\"stateful-actors\"\u003eStateful Actors and State Machines\u003c/a\u003e            | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#stateful-actors-and-state-machines) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#stateful-actors-and-state-machines) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#stateful-actors-and-state-machines) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#stateful-actors-and-state-machines)                                                                                                                                           |\n| \u003ca id=\"payment-state-machines\"\u003ePayment State Machines \\(Advanced\\)\u003c/a\u003e    | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#payment-state-machines) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#payment-state-machines) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#payment-state-machines)                                                                                                                                                                                                                                                                                                                          |\n| \u003ca id=\"scheduling-tasks\"\u003eScheduling Tasks\u003c/a\u003e                             | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#scheduling-tasks) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#scheduling-tasks) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#scheduling-tasks) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#scheduling-tasks) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/patterns-use-cases/README.md#scheduling-tasks)                                                                      |                                                                                                                                                                                                                                                                                                                                                                   |\n| \u003ca id=\"concurrent-tasks\"\u003eConcurrent async tasks\u003c/a\u003e                       | [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#sagas)                                                                                                                             |\n| \u003ca id=\"parallelizing-work\"\u003eParallelizing Work\u003c/a\u003e                         | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#parallelizing-work) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#parallelizing-work) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#parallelizing-work) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#parallelizing-work) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/patterns-use-cases/README.md#parallelizing-work)                                                            |\n| \u003ca id=\"transactional-event-processing\"\u003eTransactional Event Processing\u003c/a\u003e | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#transactional-event-processing) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#transactional-event-processing) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#transactional-event-processing) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#transactional-event-processing) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/patterns-use-cases/README.md#transactional-event-processing) |\n| \u003ca id=\"event-enrichment\"\u003eEvent Enrichment / Joins\u003c/a\u003e                     | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#event-enrichment--joins) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#event-enrichment--joins) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/patterns-use-cases/README.md#event-enrichment--joins) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/patterns-use-cases/README.md#event-enrichment--joins) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/patterns-use-cases/README.md#event-enrichment--joins)                                   |\n| \u003ca id=\"promise-as-a-service\"\u003eDurable Promises as a Service\u003c/a\u003e            | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#durable-promises-as-a-service)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n| \u003ca id=\"priority-queue\"\u003ePriority Queue\u003c/a\u003e                                 | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#priority-queue)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |\n| \u003ca id=\"rate-limiting\"\u003eRate Limiting\u003c/a\u003e                                   | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/patterns-use-cases/README.md#rate-limiting) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/patterns-use-cases/README.md#rate-limiting)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |\n| \u003ca id=\"ai\"\u003eAI: agents, LLM calls, MCP, A2A,...\u003c/a\u003e                        | [AI examples repo](https://github.com/restatedev/ai-examples)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |\n\n#### Integrations\n\n| Example Name                            | Languages                                                                                                                                                                                                                                                                                                                                  |\n|-----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| \u003ca id=\"aws-lambda\"\u003eAWS Lambda + CDK\u003c/a\u003e | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/integrations/deployment-lambda-cdk) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/integrations/go-lambda-cdk) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/integrations/java-gradle-lambda-cdk) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/integrations/kotlin-gradle-lambda-cdk) |\n| \u003ca id=\"xstate\"\u003eXState\u003c/a\u003e               | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/integrations/xstate)                                                                                                                                                                                                                                     |\n| \u003ca id=\"knative\"\u003eKnative\u003c/a\u003e             | [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/integrations/knative-go)                                                                                                                                                                                                                                         |\n\n#### End-to-End Applications\n\n| Example Name                                                    | Languages                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |\n|-----------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| \u003ca id=\"food-ordering\"\u003eFood Ordering App\u003c/a\u003e                     | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/end-to-end-applications/food-ordering) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/end-to-end-applications/food-ordering) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/end-to-end-applications/food-ordering) [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/end-to-end-applications/food-ordering) |\n| \u003ca id=\"ai-image-workflows\"\u003eImage Workflow Parser \u0026 Executor\u003c/a\u003e | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/end-to-end-applications/ai-image-workflows) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/end-to-end-applications/workflow-interpreter)                                                                                                                                                                                                                                                               |\n| \u003ca id=\"chat-bot\"\u003eLLM-powered Chat Bot / Task Agent\u003c/a\u003e          | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/end-to-end-applications/chat-bot) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/end-to-end-applications/chat-bot)                                                                                                                                                                                                                                                                                 |\n| \u003ca id=\"subway-fare-calculator\"\u003eSubway Fare Calculator\u003c/a\u003e       | [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/end-to-end-applications/subway-fare-calculator)                                                                                                                                                                                                                                                                                                                                                                                           |\n| \u003ca id=\"rag-ingestion\"\u003eRAG Ingestion\u003c/a\u003e                         | [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/end-to-end-applications/rag-ingestion)                                                                                                                                                                                                                                                                                                                                                                                                |\n| \u003ca id=\"kmp-android-todo-app\"\u003eKotlin Todo App\u003c/a\u003e                | [\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/end-to-end-applications/kmp-android-todo-app)                                                                                                                                                                                                                                                                                                                                                                                         |\n| \u003ca id=\"ai\"\u003eAI: agentic workflows, MCP, A2A,...\u003c/a\u003e             | [AI examples repo](https://github.com/restatedev/ai-examples)                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n\n#### Templates\n\n[\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/templates)\n[\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/templates)\n[\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/templates)\n[\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/templates)\n[\u003cimg src=\"https://skillicons.dev/icons?i=kotlin\u0026theme=light\" width=\"24\" height=\"24\"\u003e](kotlin/templates)\n[\u003cimg src=\"https://skillicons.dev/icons?i=rust\u0026theme=light\" width=\"24\" height=\"24\"\u003e](rust/templates)\n\n[AI templates](https://github.com/restatedev/ai-examples)\n\n#### Tutorials\n\n| Tutorial Name                                                | Languages                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |\n|-------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| Tour of Workflows  | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/tutorials/tour-of-workflows-typescript) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/tutorials/tour-of-workflows-go) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/tutorials/tour-of-workflows-python) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/tutorials/tour-of-workflows-java)                 |\n| Tour of Orchestration  | [\u003cimg src=\"https://skillicons.dev/icons?i=ts\" width=\"24\" height=\"24\"\u003e](typescript/tutorials/tour-of-orchestration-typescript) [\u003cimg src=\"https://skillicons.dev/icons?i=go\" width=\"24\" height=\"24\"\u003e](go/tutorials/tour-of-orchestration-go) [\u003cimg src=\"https://skillicons.dev/icons?i=python\u0026theme=light\" width=\"24\" height=\"24\"\u003e](python/tutorials/tour-of-orchestration-python) [\u003cimg src=\"https://skillicons.dev/icons?i=java\u0026theme=light\" width=\"24\" height=\"24\"\u003e](java/tutorials/tour-of-orchestration-java) |\n| Tour of Agents  | [AI examples repo](https://github.com/restatedev/ai-examples)                                                                                                                                                                                                                                                                                                                                                 |\n\n## Joining the community\n\nIf you want to join the Restate community in order to stay up to date, then please join our [Discord](https://discord.gg/skW3AZ6uGd) or [Slack](https://join.slack.com/t/restatecommunity/shared_invite/zt-2v9gl005c-WBpr167o5XJZI1l7HWKImA).\nThis is also the perfect place for sharing your feedback with us, learning more about Restate and connect with others!\n\n## Running the examples\n\nSome examples are just illustrations of code, but many are runnable. Their READMEs explain\nhow to get them running. Here are the general steps:\n\n### (1) Starting the Restate Server\n\nTo run an example locally, you need a running Restate Server instance.\nSome examples can be run with Docker Compose. Those already bring their own Restate server instance.\n\nTo install the Restate Server and CLI, have a look at the [installation instructions in the documentation](https://docs.restate.dev/develop/local_dev#running-restate-server--cli-locally).\n\n### (2) Register the examples at Restate Server\n\nThe service endpoints need to be registered in Restate, so that Restate will proxy their function calls and\ndo its magic. Once both server and example are running, register the example:\n\n* Via the [CLI](https://docs.restate.dev/develop/local_dev): `restate deployments register localhost:9080`\n* Via `curl localhost:9070/deployments -H 'content-type: application/json' -d '{\"uri\": \"http://localhost:9080\"}'`\n\n**Important** When running Restate with Docker, use `host.docker.internal` instead of `localhost` in the URIs above.\n\n---\n\n## Adding Examples and Releasing (for Restate developers/contributors)\n\nWhen adding a new example:\n\n* Make sure it has a README\n* Add it to the following catalogs: the one in this readme, the language-specific catalog, and the patterns-use-cases catalog if it is a pattern.\n* Check it's listed in run tests/update examples scripts in [`.tools`](./.tools)\n* Optionally, add it to the [zips script](./.tools/prepare_release_zip.sh) and [`release.yaml`](./.github/workflows/release.yml)\n\n**Creating a Release**\n\nBefore releasing, trigger the \"pre-release\" workflow to update sdk versions. This automatically creates a pull request, which must be manually merged.\n\nOnce the repo is ready for the release, push a tag of the form `vX.Y.Z`:\n\n```shell\ngit checkout main\ngit tag -m \"Examples v0.9.1\" v0.9.1\ngit push origin v0.9.1\n```\n\nThis triggers a workflow that [creates a draft release](https://github.com/restatedev/examples/releases) on GitHub, which you need to approve to finalize it.\n\nPlease update the version tag referenced on the [Tour of Restate](https://github.com/restatedev/documentation) documentation page.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frestatedev%2Fexamples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frestatedev%2Fexamples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frestatedev%2Fexamples/lists"}