The web version of Jami.
The repo is structured as 4 subprojects:
client
: the web front-end made with Reactserver
: the back-end server made with Express.js, which starts a daemon instancecommon
: the common code used by bothclient
andserver
daemon
: a submodule containing the Jami daemon
-
Linux
-
-
Build from source with the following instructions: https://swig.org/svn.html
Note: you will need have Bison installed. On Ubuntu, this can be installed using
sudo apt install bison
.git clone https://github.com/swig/swig.git cd swig ./autogen.sh ./configure make sudo make install
-
-
Install the required dependencies: https://docs.jami.net/build/dependencies.html
Note: for Ubuntu, the minimally needed dependencies are:
sudo apt install git build-essential cmake automake autoconf autopoint libtool pkg-config libdbus-1-dev libva-dev libvdpau-dev libasound2-dev libpulse-dev libudev-dev libexpat1-dev ssnasm yasm yasm nasm
-
Compile the dependencies:
cd daemon/contrib mkdir native cd native ../bootstrap make -j$(nproc)
-
Install
node-gyp
to build the daemon with Node.js bindings:npm install -g node-gyp
-
Compile the daemon with Node.js bindings:
cd ../.. ./autogen.sh ./configure --with-nodejs make -j$(nproc)
-
Create a symlink to
jamid.node
inserver
:cd ../server ln -s ../daemon/bin/nodejs/build/Release/jamid.node jamid.node cd ..
npm install
This will install the relevant dependencies for all subprojects and configure Git hooks.
Start both the client and server:
LD_LIBRARY_PATH="${PWD}/daemon/src/.libs" npm start
You can also start the client and server individually:
npm start --workspace client
LD_LIBRARY_PATH="${PWD}/daemon/src/.libs" npm start --workspace server
Open http://localhost:3000 in your browser to view the app.
npm run build
LD_LIBRARY_PATH="${PWD}/daemon/src/.libs" npm run start:prod
npm run lint
Lint and fix files:
npm run lint:fix
npm run format
npm run clean
You may instead wish to use a Docker container for development.
This allows you to avoid having to install all the dependencies needed to build the daemon on your computer. The container is meant for development: it uses bind mounts to mount the source code from your computer into the container, so that the container rebuilds the project whenever changes are made locally.
-
Build the Docker image for the daemon:
docker-compose build jami-daemon
-
Build the Docker image for Jami web:
docker-compose build
-
Run the Docker container:
docker-compose up
-
Build the Docker image for the daemon:
cd daemon docker build --build-arg config_args="--with-nodejs" -t jami-daemon . cd ..
-
Build the Docker image for Jami web:
docker build --target development --t jami-web .
-
Run the Docker container:
docker run -it \ -p 3000:3000 \ -p 5000:5000 \ --volume ${PWD}/client/src:/web-client/client/src \ --volume ${PWD}/server/src:/web-client/server/src \ --volume ${PWD}/client/.env.development:/web-client/client/.env.development \ --volume ${PWD}/server/.env:/web-client/server/.env \ jami-web