scNavigator is a docker-compose application: server-side contains of multiple containers like webserver written in Kotlin and file system manager written in Python
Server side is built using ./gradlew build
(to get jars) and docker-compose
.
We have several main services:
- Nginx
- MongoDB
- Kotlin-based backend server
- Python-based h5-converter and file system manager
To build the application first run:
./gradlew build
This will run kotlin-based applications tests and builds.
Then run:
docker-compose build
(with sudo
if required)
this will build the whole multi-container application and also run python tests.
Frontend for Navigator is build with React + Redux which allows full control over the application state at any point. Frontend is build locally outside of docker-compose container. Building frontend outside of docker-compose container allows us fix client-side bugs and improve client-side behaviour without stopping/restarting docker-compose application.
You can build client side using npm utils:
cd ./scn_js
npm install
npm run build
If you want your datasets to show up in Navigator, you have to prepare them in a h5ad
format with some extra fields to uns
.
Prepare your datasets locally in one folder and make sure to change DATASET_PATH
in .env
to this folder you chose. Also make sure that TMP_PATH
from .env
exists: there Navigator will store datasets in internal format.
To run Navigator locally you will first need to build Navigator server-side. Then build client-side js code and then just start docker-compose. Be careful, docker-compose might require sudo privileges.
## building server-side
./gradlew build
docker-compose build
## building client-side
cd ./scn_js
npm install
npm run build
cd ..
## running multi-container
docker-compose up
## running multi-container detached
docker-compose up -d