commit | 6bbdacf71ac8f293cdba595f1afca2db26041bda | [log] [tgz] |
---|---|---|
author | Misha Krieger-Raynauld <mkriegerraynauld@gmail.com> | Tue Nov 29 21:45:40 2022 -0500 |
committer | Misha Krieger-Raynauld <mkriegerraynauld@gmail.com> | Tue Nov 29 23:09:00 2022 -0500 |
tree | adff1acdf09d82379b3c3508c148e272bfba6f1b | |
parent | 492e8404dc749f0c680e22d6257474fbdffc79ae [diff] |
Separate common interfaces from client-specific classes Changes: - Move client-specific classes to client/src/models - Extract common interface to standalone files in common/interfaces - Remove unused features from client-specific classes - These are features which were once used on the old server, but are now no longer needed - Remove getObject() method for Account, Contact, and Conversation - Remove lookups, registrationState and registeringName from Account - Remove resolving logic from Contact - Remove requests and listeners from Conversation (once used for Socket.IO and promises on server) - Rename services/Conversation.ts to services/conversationQueries.ts - Update imports Future work: - Create interface versions of Account, Contact, and Conversation - Create new interfaces to replace Records on server GitLab: #94 Change-Id: Ia51fe6ebeda44a30887d851a5564569dc290e5ed
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 both client
and server
daemon
: a submodule containing the Jami daemonLinux
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
in server
:
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