A collaborative graph editor for organizing, communicating, and analyzing data in graph form.
It is licensed under the GNU AGPL v3, see LICENSE for more details.
Patches or pull requests are welcome but we require a contributor license agreement, see TBU
Database:
- Neo4J DB server >= 2.1.5 - http://neo4j.com/download/
Server:
- Python 2.7 or 3.4
- Apache Ant >= 1.9.0
- Python dependencies as described in
requirements.txt
Client
- currently bundled, but listed in bower.json
For rebuilding client css from scss saource files you will need:
- sass (scss tool)
Build dependencies:
- ant
- make
# apt-get install
ant
python-pip
ruby-sass
use pip to install all requirements
$ pip install -r requirements.txt
Use npm for javascript (client) requirements, currently for development (testing) only, all other external dependencies are part of the repository:
$ npm install
To run Rhizi locally:
- Run neo4j locally on the default 7474 port
neo4j console
orneo4j server
after installing neo4j: we use 2.2.1 from http://neo4j.com - Launch run-local.sh:
$ ./run-local.sh
Or perform the following by hand:
- Invoke the local deployment Ant target:
ant -f ./build.ant deploy-local
- Run rhizi-server.py:
$ cd deploy-local && python bin/rz_server.py --config-dir=etc
Command line use documentation can be viewed with: :$ python rz_server.py -h
Rhizi configuration is currently documented in code, see src/server/rz_server.py#Config
Through the sign up page you can add users.
This is possible through the src/local/rz_cli_tool as follows: ./src/local/rz_cli_tool.py --config-dir res/etc --user-db-path res/user_db.db --email [email protected] --role-add admin
Build currently uses Apache Ant(http://ant.apache.org/) and make
To update the css files you need sass. To rebuild the css files issue make from the top level directory:
$ make
For dev mode(debbuging, manual file load) use ?debug=1
at end of URL: e.g. file://rhizifolder/html.index?debug=1
Client testing:
$ npm install $ karma start
- use underscore as delimiter in var name, eg:
pkg_foo_bar
- assume use of modern browsers
- indent files using 4 space characters
- apply alphabetical ordering whenever possible: selectors, directives, etc.
- use a combination of CSS classes / IDs to draw common/unique styling, eg.
class=form-Foo_input-field id=email-field
- minimize use of CSS directives, remove directives which have no effect
- avoid using browser-specific CSS directives when hand-writing CSS code
- Clean Neo4J instances are auto-initialized by the rhizi server
- to reset the DB manually: $ neo4j-shell -file res/neo4j/reset-db__clean.cypher
Test code makes use of Python's unittest - run by invoking them with python, or by creating a launch configuration in your IDE of choice.
Note: server test-cases do not yet support pre-run DB state validation and are likely to leave DB side-effects.
Taks a look at src/server-tests/test_util__rzdoc#DBO_RDG__skill_graph
as a starting point for random data generation.
mingw doesn't have python support, so using mingw (I want a unix native python)
- www.cygwin.com setup-x86_64.exe
- use correct mirror (i.e. mirror.isoc.org.il)
- defaults (c:\cygwin64)
- python + gvim + vim + python-six + git + git-completion + tig + ruby + ruby-sass + make + gcc-core + autoconf + automake
- start cygwin shell
- cd to directory of install
- git clone or extract tarball
- cd rhizi
- install neo4j from neo4j.com community eddition (neo4j-community_windows_2_1_6.exe)
- install python prerequisites:
- download get-pip.py from http://pip.pypa.io/en/latest/installing.html
- $ python get-pip.py
- install JDK: java SE development Kit 8 jdk-8u31-windows-x64.exe
- install ant: winant.googlecode.com/files/winant-install-v7.exe
- specify JDK install directory, i.e. C:\Program Files\Java\jdk1.8.0_31
- Current ant bug: /usr/bin/rhizi is translated by ant to \usr\bin\rhizi and so it fails to find rhizi.
- solution 1: replace /usr/bin/rhizi with rhizi, it will find rhizi in PATH
- solution 2: ?
- pip install flask
- pip install gevent-websocket
- pip install gevent never completes setup.py stage
- solution 1: pip install cython git+git://github.com/surfly/gevent.git#egg=gevent
- didn't complete.
- pip install gevent never completes setup.py stage
Deployment, that is installation on a different server that has none of the development prerequisites installed, takes two forms currently:
- development mode, in which flask handles all resource serving, including client/server code, resources & fragments
- reverse proxy mode, in which a reverse proxy, eg. Apache is used to serve all static content
These modes impost a slightly different resource layout, and require the following values to be correcly set/injected:
- app.js:
fragment_d_path
, handled by jinja - rhizi-server.conf:
fragment_d_path
- rhizi-server.conf:
template_d_path
-
obtain a server configuration by either adjusting res/etc/rhizi-server.conf.example or reusing an already active one.
-
the following configuration keys will likely need changing: DEBUG, SECRET_KEY, root_path, access_control, etc.
-
let targetDomain be the target domain (i.e. rhizi.example.com)
-
place configuration at res/production-patch-set/${targetDomain}/rhizi-server.production.conf
-
use the build.ant deploy-remote target:
- adjust targetDomain path: should point at the configuration's file dir
- adjust remoteDeployServer to point at the target server
-
use res/debian/rhizi.init to run rhizi as a system process: rz_server.py will need chmod'ing to +x
-
Deploying: $ ant -v -f build.ant -DremoteDeployServer=rhizi.example.com -Drsync_module=/srv/www/rhizi.example.com deploy-remote
$ targetDomain="cri.rhizi.net" $ mkdir res/production-patch-set/${targetDomain} $ scp rz-1:/etc/rhizi/rhizi-server.conf res/production-patch-set/${targetDomain}/rhizi-server.production.conf
This is the only way to merge a number of documents right now. Here is how:
It is installed by default to /srv/www//tools/rz-doc, lets call that rz-doc for short.
rz-doc --list-names
- will show all available documents. uses default config in /etc/rhizi/rhizi-server.conf, can be overridden with --config-dir
rz-doc --list-names > merge.file
rz-doc --merge-file merge.file --merge-target "All Documents"
creates a new doc called "All Documents" with the contents of all rzdocs in merge.file.
[url]/api/rzdoc/[doc-title]/delete