Usage documentation is located at https://docs.flur.ee.
Fluree is an immutable, temporal, ledger-backed semantic graph database that has a cloud-native architecture.
This repository is a stateless database as a library and designed to be utilized in conjunction with the Fluree Ledger which maintains all state. This database can be run in containers and dynamically scale to any desired load, can be embedded inside of your applications (Clojure, NodeJS for now) or can run as a stand-alone JVM service.
This database can also be built as a web-worker, and be embedded inside the browser. Thus far, a React Wrapper (Beta) has been developed that allows you to create real-time apps by wrapping your React components with queries (GraphQL or FlureeQL).
It is also possible to run Fluree in a "serverless" manner, whereby utilizing Fluree SmartFunctions to embed data security along side your data (Data Defending Itself), you can have a permissioned application with just a single-page application (i.e. React) and Fluree Ledgers, but no application server.
Fluree includes time travel, allowing you to instantly query as of any historical moment in time, and even allows the ability to stage proposed transactions to time travel into the future, to a hypothesized version of your data.
The best way to get started with Fluree is to go to the Getting Started page at https://flur.ee/getstarted/.
All contributors must complete a Contributor License Agreement.
brew install clojure/tools/clojure
pacman -S clojure
brew install node
pacman -S nodejs
brew install borkdude/brew/babashka
scoop install babashka
NOTE: use make -j
to run tasks in parallel.
make deps
- install all local dependencies
make compile
- locally compile necessary classes (required for Clojure development)
make
- make everything below
make jar
- make Java JAR file
make nodejs
- make JavaScript Fluree DB for Node
make browser
- make JavaScript Fluree DB for browsers
make webworker
- make JavaScript Fluree DB for web worker
make install
- install jar file into local .m2/maven
make clean
- clean all build directories/files
make test
- run all automated tests belowmake cljtest
- run all CLJ testsmake cljstest
- run CLJS tests in headless Chrome & NodeJSmake cljs-browser-test
- run CLJS tests in headless Chrome
npm install -g karma-cli
make cljs-node-test
- run CLJS tests in NodeJSmake nodejs-test
- run node package in nodemake browser-test
- run browser package in headless ChromeThis applies to CLJ tests only, not CLJS.
clojure -X:cljtest :kaocha.filter/focus [focus-spec]
...where focus-spec
can be a test namespace or a fully-qualified deftest
var. Note that the square brackets around the focus-spec
must be present in
the command, they are NOT there to indicate "optional" or "placeholder" in the
example.
This feature comes from the test runner kaocha which has additional features.
In order to get a Node or web browser CLJS REPL running, you need to do the following:
npx shadow-cljs watch flureenjs
(or flureedb
for a browser REPL)node out/nodejs/flureenjs.js
in a separate shellhttp://localhost:9630/
in your browser
.shadow-cljs/nrepl.port
(shadow/repl :flureenjs)
(or :flureedb
for a browser
REPL)(js/parseInt "42")