souenzzo
graph-demo
Clojure

A simple demo using pathom, fulcro and crux

Last updated Sep 15, 2024
51
Stars
8
Forks
0
Issues
0
Stars/day
Attention Score
4
Language breakdown
Clojure 99.9%
JavaScript 0.1%
โ–ธ Files click to expand
README

Friends Graph

A simple demo using fulcro, pathom and crux

Running (for clj devs)

Install npm deps

$ npm install

Start a REPL with dev profile

$ clj -A:dev

Call (user/-main) function. Wait the shadow-cljs build

Connect at localhost:8080

Running (for js devs)

Install npm deps

$ npm install

Start shadow-cljs via npm

$ npm start

Connect at localhost:8080

Running "production" jar

Install npm deps

$ npm install

Generate uberjar

$ lein uberjar

And run

java -jar target/graph-demo.jar

Connect at localhost:8080

React native (not working)

After get the web up'n'running, start the metro server

npm run rn-server

Then launch the app on emulator/app.

npm run rn-android

Hacking

src/
โ”œโ”€โ”€ dev
โ”‚ย ย  โ””โ”€โ”€ user.clj ## dev helper
โ””โ”€โ”€ main
    โ””โ”€โ”€ souenzzo
        โ””โ”€โ”€ graph_demo
            โ”œโ”€โ”€ client.cljs   ## fulcro sutff
            โ””โ”€โ”€ core.clj      ## http, pathom and crux stuff
deps.edn                      ## clj deps
package.json                  ## js deps

Fulcro components generate a query like this

[{[:user/id "foo"]  [:user/id
                     :user/color
                     {:user/friends [:user/id 
                                     :user/color 
                                     {:user/friends [:user/id]}]}]}]

Patohom resolver souenzzo.graph-demo.core/friends (bad name) will get "foo", turn into :user.id/foo, get the entity from crux, usually something like {:crux.db/id "foo" :user/friends [:user.id/var]} and return {:user/friends [{:user/id "bar"}]}

Pathom will flow the query recursively.

ยฉ 2026 GitRepoTrend ยท souenzzo/graph-demo ยท Updated daily from GitHub