{"id":23942965,"url":"https://github.com/ertugrulcetin/re-frame-flow","last_synced_at":"2025-08-04T06:12:54.359Z","repository":{"id":51285090,"uuid":"365565059","full_name":"ertugrulcetin/re-frame-flow","owner":"ertugrulcetin","description":"Graph based visualization tool for re-frame event chains","archived":false,"fork":false,"pushed_at":"2021-05-18T09:05:19.000Z","size":1077,"stargazers_count":154,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-08-04T01:10:02.219Z","etag":null,"topics":["clojure","clojurescript","debugging","event-flow","re-frame","reagent","tracing"],"latest_commit_sha":null,"homepage":"","language":"Clojure","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/ertugrulcetin.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}},"created_at":"2021-05-08T16:46:11.000Z","updated_at":"2025-06-06T06:53:56.000Z","dependencies_parsed_at":"2022-09-08T21:01:46.502Z","dependency_job_id":null,"html_url":"https://github.com/ertugrulcetin/re-frame-flow","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ertugrulcetin/re-frame-flow","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ertugrulcetin%2Fre-frame-flow","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ertugrulcetin%2Fre-frame-flow/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ertugrulcetin%2Fre-frame-flow/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ertugrulcetin%2Fre-frame-flow/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ertugrulcetin","download_url":"https://codeload.github.com/ertugrulcetin/re-frame-flow/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ertugrulcetin%2Fre-frame-flow/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268656859,"owners_count":24285398,"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-08-04T02:00:09.867Z","response_time":79,"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":["clojure","clojurescript","debugging","event-flow","re-frame","reagent","tracing"],"created_at":"2025-01-06T05:17:21.463Z","updated_at":"2025-08-04T06:12:54.304Z","avatar_url":"https://github.com/ertugrulcetin.png","language":"Clojure","funding_links":[],"categories":["Graphviz"],"sub_categories":[],"readme":"# Re-frame Flow\n\n**re-frame-flow** is a graph based visualization tool for re-frame event chains. Let's assume we clicked a login button and triggered a series of events. `login-fx -\u003e http-fx -\u003e some-fx -\u003e some-db-handler ...` (event after event), so a path gets generated, re-frame-flow visualizes all paths in a graph.\n\n![Re-frame Flow](imgs/re-frame-flow-example.png)\n\n\n## Installation\n[![Clojars Project](https://clojars.org/org.clojars.ertucetin/re-frame-flow/latest-version.svg)](https://clojars.org/org.clojars.ertucetin/re-frame-flow)\n\n\n- Add re-frame-flow to **dev** dependencies:\n```clojure\n:profiles\n   {:dev\n      {:dependencies [[org.clojars.ertucetin/re-frame-flow \"X.Y.Z\"]] }}\n```\n\n- Add `re-frame-flow.preload` to **preloads**:\n```clojure\n{...\n :preloads [re-frame-flow.preload]\n ...}\n```\n\n## Usage\n- Make sure you have followed all of the installation instructions above.\n- Start up your application.\n- Once it is loaded, trigger some events (Flow panel gets updated when an event is triggered).\n- Focus the document window and press **ctrl-g** to open the flow panel.\n\n## Dispatch tracking (Optional)\nIf you want to track the flow of `dispatch` and `dispatch-sync`, you need to use re-frame-flow's custom `dispatch` and `dispatch-sync`. ClojureScript does not provide `*ns*` at runtime, so these functions implemented as custom **macros**. Which means you can't pass around like they are functions.\n\n- You need to move `re-frame-flow` dependency from dev to **prod**\n- Update your **dev** `closure-defines` inside **shadow-cljs.edn**\n    - ```clojure\n        :dev\n         {:compiler-options\n          {:closure-defines\n           {re-frame-flow.trace.dispatch-enabled? true}}}\n      ```\n- Update your views (or any namespace that uses `dispatch`)\n    - ```clojure\n      (ns app.views\n       (:require [re-frame-flow.macros :refer-macros [dispatch dispatch-sync]]\n        ...))\n      ```\n\n## Live Demo\n\n- [Re-frame Flow Demo](https://ertugrulcetin.github.io/re-frame-flow-demo/index.html)\n\n## Running the example\n- `git clone git@github.com:ertugrulcetin/re-frame-flow.git`\n- `npm install`\n- `lein watch`\n- Open http://localhost:8280\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fertugrulcetin%2Fre-frame-flow","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fertugrulcetin%2Fre-frame-flow","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fertugrulcetin%2Fre-frame-flow/lists"}