{"id":32191863,"url":"https://github.com/tailrecursion/boot-datomic","last_synced_at":"2026-03-16T11:36:18.634Z","repository":{"id":25475344,"uuid":"28905976","full_name":"tailrecursion/boot-datomic","owner":"tailrecursion","description":"run the datomic transactor embedded in a boot pod","archived":false,"fork":false,"pushed_at":"2018-08-29T03:32:51.000Z","size":28,"stargazers_count":16,"open_issues_count":0,"forks_count":5,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-10-15T18:15:59.810Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/tailrecursion.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":"2015-01-07T08:38:46.000Z","updated_at":"2025-05-26T13:18:11.000Z","dependencies_parsed_at":"2022-07-26T09:47:54.967Z","dependency_job_id":null,"html_url":"https://github.com/tailrecursion/boot-datomic","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tailrecursion/boot-datomic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailrecursion%2Fboot-datomic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailrecursion%2Fboot-datomic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailrecursion%2Fboot-datomic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailrecursion%2Fboot-datomic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tailrecursion","download_url":"https://codeload.github.com/tailrecursion/boot-datomic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tailrecursion%2Fboot-datomic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":280365582,"owners_count":26318385,"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","status":"online","status_checked_at":"2025-10-21T02:00:06.614Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":"2025-10-22T01:52:31.801Z","updated_at":"2025-10-22T01:52:33.301Z","avatar_url":"https://github.com/tailrecursion.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"# boot datomic (wip)\nrun the datomic transactor in a pod. backup and restore the db using boot tasks.\n\ndeployment tasks forthcoming. sometime. eventually.\n\n[](dependency)\n```clojure\n[tailrecursion/boot-datomic \"0.1.3\"] ;; latest release\n```\n[](/dependency)\n\n## configuration\n\ninstall the transactor libary and its dependent libraries into your local maven repo.  ideally, someone at cognitect would notice this and decide it would be a great idea to distribute the transactor alongside the peer in the datomic repo. :)\n\n```bash\nboot install-jars -f datomic-pro-0.9.5561.50/datomic-transactor-pro-0.9.5703.jar -f datomic-pro-0.9.5703/lib\n```\n\nset the DATOMIC LICENSE KEY environment variable.\n```bash\nexport DATOMIC_LICENSE_KEY=\u003clicense-key\u003e\n```\n\nadd boot-datomic and your preferred logging framework to the environment.\n\n## application\nfor the sake of expediency, here's an example of a `build.boot` file using this task:\n```clojure\n(set-env!\n  :resource-paths #{\"src\"}\n  :source-paths   #{\"ini\" \"rsc\"}\n  :dependencies   '[[com.datomic/datomic-pro         \"0.9.5703\" :exclusions [org.slf4j/slf4j-nop org.slf4j/slf4j-log4j12]]\n                    [tailrecursion/boot-datomic      \"0.1.2-SNAPSHOT\"]\n                    [ch.qos.logback/logback-classic  \"1.2.3\"] ]\n  :repositories  [[\"clojars\"       \"https://clojars.org/repo/\"]\n                  [\"maven-central\" \"https://repo1.maven.org/maven2/\"]\n                  [\"datomic\"       {:url      \"https://my.datomic.com/repo\"\n                                    :username (System/getenv \"DATOMIC_REPO_USERNAME\")\n                                    :password (System/getenv \"DATOMIC_REPO_PASSWORD\") }]\n                  [\"companyname\"   {:url      \"s3p://companyname.repository/snapshot\" ;; transactor jar\n                                    :username (System/getenv \"COMPANY_AWS_ACCESS_KEY\")\n                                    :password (System/getenv \"COMPANY_AWS_SECRET_KEY\") }]])\n\n(require\n  '[tailrecursion.boot-datomic :refer [datomic backup restore]] )\n\n(def datomic-data-readers\n  {'base64 datomic.codec/base-64-literal\n   'db/id  datomic.db/id-literal\n   'db/fn  datomic.function/construct })\n\n(def backup-uris\n  {:production  \"bak/production\"\n   :staging     \"bak/staging\"\n   :development \"bak/development\" })\n\n(def datomic-uris\n  {:production  \"datomic:ddb://us-east-1/foo/bar\"\n   :staging     \"datomic:ddb://us-east-1/foo/bar\"\n   :development \"datomic:dev://localhost:4334/bar\" })\n\n(defn backup-uri [environment]\n  (.toString (.toURI (io/file (backup-uris environment)))) )\n\n(defn datomic-uri [environment]\n  (let [acc-key  (System/getenv \"COMPANY_AWS_ACCESS_KEY\")\n        sec-key  (System/getenv \"COMPANY_AWS_SECRET_KEY\")\n        rmt-env? (or (= environment :production) (= environment :staging))\n        base-uri (datomic-uris environment) ]\n    (assert acc-key \"Missing environment variable COMPANY_AWS_ACCESS_KEY.\")\n    (assert sec-key \"Missing environment variable COMPANY_AWS_SECRET_KEY.\")\n    (info \"Connecting datomic to %s %s environment...\\n\" (if rmt-env? \"remote\" \"local\") (name environment))\n    (str base-uri (if rmt-env? (str \"?aws_access_key_id=\" acc-key \"\u0026aws_secret_key=\" sec-key))) ))\n\n(deftask run\n  []\n  (comp (wait) (speak) (datomic :license-key (System/getenv \"DATOMIC_LICENSE_KEY\")) ))\n\n(deftask backup\n  [e environment ENV  kw \"The application environment to backup.\"]\n  (assert environment \"Missing required environment argument.\")\n  (db/backup :from-db-uri (datomic-uri environment) :to-backup-uri (backup-uri environment)) )\n\n(deftask restore\n  [e environment ENV  kw \"The application environment to restore.\"]\n  (assert environment \"Missing required environment argument.\")\n  (db/restore :from-backup-uri (backup-uri environment) :to-db-uri (datomic-uri environment)) )\n\n(deftask develop\n  [e environment ENV kw \"The backed up environment to restore the local dev db from.\"]\n  (let [init* #(db/restore :from-backup-uri %1 :to-db-uri %2)\n        init  #(if % (init* (backup-uri %) (datomic-uri :development)) identity) ]\n    (comp (wait) (speak) (datomic) (init environment)) ))\n```\n\n## license\n\ncopyright (c) jumblerg. all rights reserved.\n\ndistributed with clojure under the eclipse public license\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailrecursion%2Fboot-datomic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftailrecursion%2Fboot-datomic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftailrecursion%2Fboot-datomic/lists"}