Git Product home page Git Product logo

collabserver-server's Introduction

Collab Server

license Build Status

master dev
Build Status Build Status

Overview


Server for realtime collaboration on any CollabData from collab-data-crdts project.

  • User point of view: a Collaborative room is a current instance of collaboration where several users are working on the same Data. The data itself is any implementation of CollabData interface with a set of Operation implemented (See collab-data-crdts).
  • In server: the server doesn't know anything about the concrete data implementation. A room only store the list of operations applied since the beginning. The server deals with the broadcasting system and ensure that all users in a room receive each operations.

Getting Started


  1. Clone project with submodules
    • Clone with recursive: git clone --recursive https://github.com/CollabServer/collabserver-server.git
    • To pull changes from submodules, uses: git pull --recurse-submodules=on
    • For further informations about submodules, check the official Git documentation
  2. Build the server
    • Be sure you have all the requirements
    • Build collabserver-server (See build instructions)
  3. Start the server
    • Open a console and run the collabserver executable
    • Logs are displayed here
    • Ctrl+C to stop server
  4. Connect users

Features


  • Users
    • Connection
    • Disconnection
    • Enter room
    • Leave room
    • Create room
    • Delete room
  • Room
    • Room ID (to join the room of collaboration)
    • Add user
    • Remove user
    • Has user
    • Broadcast operation to all users

Build (CMake)


# Build and start the server
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
make run # This start the CollabServer

# Or using build script
./build.sh
cd build
make run
# Build the tests
mkdir build
cd build
cmake -DCOLLABSERVER_SERVER_TESTS=ON ..
make
make runAllTests

# Or use the build script
./build.sh
CMake option Description
COLLABSERVER_SERVER_TESTS (ON / OFF) Set ON to build unit tests
CMAKE_BUILD_TYPE Debug, Release, RelWithDebInfo, MinSizeRel

Generate Documentation


  1. Install Doxygen
  2. Run doxygen Doxyfile
  3. Files are placed in doc folder

Contribution


Feel free to ask me any question, share your ideas or open an issue. I started this project during my master thesis at University of Montreal. Format uses clang-format with the Google Coding style https://google.github.io/styleguide/cppguide.html (see .clang-format for further information). Make sure you autoformat on save (see https://clang.llvm.org/docs/ClangFormat.html)

collabserver-server's People

Contributors

geekymoose avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

amdfxlucas

collabserver-server's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.