# rhizi **Repository Path**: mirrors_shlomif/rhizi ## Basic Information - **Project Name**: rhizi - **Description**: Connective intelligence - **Primary Language**: Unknown - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2026-03-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Rhizi A collaborative graph editor for organizing, communicating, and analyzing data in graph form. [Screencast tutorial](https://www.youtube.com/watch?v=yRQtUPCzd3A) [Live demo](http://demo.rhizi.net/index) 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 # Dependencies Database: - Neo4J DB server >= 2.1.5 - http://neo4j.com/download/ Server: - Python 2.7 - Apache Ant >= 1.9.0 - Python dependencies as described in `requirements.txt` Client All of the following are already bundled but noted here for reference: - jquery - d3 - Bacon.js - underscore - feedback - https://github.com/ivoviz/feedback (it also bundles html2canvas) - FileSaver For rebuilding client css from scss saource files you will need: - sass (scss tool) Build dependencies: - ant - make # Installation ## Apt based systems: Debian / Ubuntu # apt-get install ant python-pip ruby-sass ## Generic 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 # Running instructions ## Running Rhizi Locally To run Rhizi locally: - Run neo4j locally on the default 7474 port neo4j console or neo4j 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 ## Configuration Rhizi configuration is currently documented in code, see src/server/rz_server.py#Config ## User addition Through the sign up page you can add users. ## Changing users roles 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 alon@rhizi.local --role-add admin # Development Build currently uses Apache Ant(http://ant.apache.org/) and [make](https://www.gnu.org/software/make/) To update the css files you need [sass](http://sass-lang.com/). 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 ## Coding Conventions - Ant Scripts - use underscore as delimiter in var name, eg: pkg_foo_bar ## Coding Conventions - CSS / SCSS - 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 ## Neo4J DB management - Clean Neo4J instances are auto-initialized by the rhizi server - to reset the DB manually: $ neo4j-shell -file res/neo4j/reset-db__clean.cypher ## Running server tests 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. ## Random data generation Taks a look at src/server-tests/test_util__rzdoc#DBO_RDG__skill_graph as a starting point for random data generation. ## Installing on windows (WIP) 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. # Deployment 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 ## Deployment Steps - 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 ### getting the current config file from the server: $ 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 # Tools ## rz-doc 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 1. rz-doc --list-names > merge.file 2. 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. ## API(WIP) [url]/api/rzdoc/[doc-title]/delete