{"id":24812142,"url":"https://github.com/nha/temporal","last_synced_at":"2025-10-13T13:31:56.995Z","repository":{"id":37012653,"uuid":"431662367","full_name":"nha/temporal","owner":"nha","description":"temporal.io (uber cadence) in Clojure","archived":false,"fork":false,"pushed_at":"2023-02-28T14:00:04.000Z","size":41,"stargazers_count":24,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-29T03:42:59.324Z","etag":null,"topics":["cadence","clojure","temporal"],"latest_commit_sha":null,"homepage":"","language":"Clojure","has_issues":true,"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/nha.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-11-25T00:07:42.000Z","updated_at":"2024-06-15T17:16:43.000Z","dependencies_parsed_at":"2022-06-29T08:17:57.012Z","dependency_job_id":null,"html_url":"https://github.com/nha/temporal","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/nha%2Ftemporal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nha%2Ftemporal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nha%2Ftemporal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nha%2Ftemporal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nha","download_url":"https://codeload.github.com/nha/temporal/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236353144,"owners_count":19135501,"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":["cadence","clojure","temporal"],"created_at":"2025-01-30T13:18:24.692Z","updated_at":"2025-10-13T13:31:51.607Z","avatar_url":"https://github.com/nha.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# temporal\n\n[![Clojars Project](https://img.shields.io/clojars/v/org.clojars.nha/temporal.svg)](https://clojars.org/org.clojars.nha/temporal)\n\n[temporal.io](http://temporal.io/) (Uber Cadence successor) in Clojure.\n\nThis is a library to help using the [temporal java SDK](https://github.com/temporalio/sdk-java) by introducing helpers macros and functions.\n\n## Installation\n\n[net.clojars.nha/temporal](https://clojars.org/nha/temporal)\n\nThe versionning is comprised of the temporal java version used followed by the number of commits in this projects.\nFor example version `1.5.0.7` of `nha/temporal` means the temporal java version used is `1.5.0` and there are `7` commits in this repository.\n\n## Usage\n\nStatus: Alpha\n\nIf you must, here is the [greetings sample](https://github.com/temporalio/samples-java/blob/main/src/main/java/io/temporal/samples/hello/HelloActivity.java) translated:\n\n```clojure\n\n(ns your.ns\n  (:require [nha.temporal :as t])\n  (:import [java.time Duration]))\n\n(def task-queue \"HelloActivityTaskQueue\")\n(def workflow-id \"HelloActivityWorkflow\")\n\n(t/def-workflow-interface\n  GreetingWorkflow\n  (^String getGreeting [param-not-this] \"say something yo\"))\n\n(t/def-activity-interface\n  GreetingActivities\n  (composeGreeting [^String greeting ^String n]))\n\n(defrecord MyWorkflowImpl []\n  GreetingWorkflow\n  (getGreeting [this s]\n    (let [actv (t/activity-stub\n                GreetingActivities\n                (t/activity-opts {:start-to-close-timeout (Duration/ofSeconds 2)}))]\n      (.composeGreeting actv \"HELLO \" s))))\n\n(defrecord MyActivityImpl []\n  GreetingActivities\n  (composeGreeting [this greetings n]\n    (str greetings n)))\n\n(let [{:keys [client] :as component} (-\u003e (t/component task-queue)\n                                         (t/start-component [MyWorkflowImpl] [(MyActivityImpl.)]))]\n  (let [^GreetingWorkflow workflow (t/network-stub client GreetingWorkflow (t/workflow-options task-queue workflow-id))]\n    ;; this will print \"HELLO WORLD\"\n    (println (.getGreeting workflow \"WORLD\")))\n  (t/stop-component component))\n\n```\n\n## Development\n\nStart a REPL with:\n\n    $ clojure -M:dev\n\nRun the project's tests:\n\n    $ clojure -M:test\n\nDeploy (on the `main` branch):\n\n    $ export CLOJARS_USERNAME=username\n    $ export CLOJARS_PASSWORD=clojars-token\n    $ export CI=true # optional, if using temporal-testing\n    $ clj -T:build ci \u0026\u0026 clj -T:build install \u0026\u0026 clj -T:build deploy\n\n## License\n\nCopyright © 2022 Nicolas.ha\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnha%2Ftemporal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnha%2Ftemporal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnha%2Ftemporal/lists"}