Skip to content

A scalable, distributed real-time collaborative drawing board application built with Akka and WebSockets.

License

Notifications You must be signed in to change notification settings

EpamLifeSciencesTeam/paintchat

 
 

Repository files navigation

PaintChat

Build Status Join the chat at https://gitter.im/kevinchabreck/paintchat AUR

A distributed chatroom with support for real-time collaborative drawing. Think MS Paint meets Google Docs!

Live demo

Read the whitepaper

Features

  • run as a single instance or as multiple clustered nodes
  • consistent, persistant state
  • dynamically add/remove nodes at any time
  • out of the box service discovery and load balancing with zero configuration

paintchat screenshot

Getting started

Download and install Docker for Mac or Windows.

Run a local PaintChat instance

Run in this directory:

$ docker-compose up

Connect to the PaintChat cluster

Point your browser to http://paintchat.localhost:8080/

tip: open in multiple tabs for realtime collaborative drawing

Advanced usage

Running docker-compose up will create 3 containers on your machine:

  • paintchat: a paintchat server node
  • traefik: a traefik instance for dynamic load balancing
  • cassandra: a cassandra db instance for data persistence

You can run multiple instances of the paintchat service together as a cluster. Add additional nodes using the docker-compose scale command:

$ docker-compose scale paintchat=3

This will increase the total number of paintchat nodes in the cluster to 3. To confirm, click the Dashboard button in the toolbar - you should now see that the cluster size has increased from 1 to 3.

paintchat screenshot

You can reduce the cluster size in the same way:

$ docker-compose scale paintchat=1

This will reduce the number of paintchat instances in the cluster to 1.

note: traefik will detect changes to the topology of the system and adjust its list of upstream hosts automatically - no configuration required!

About

A scalable, distributed real-time collaborative drawing board application built with Akka and WebSockets.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 40.3%
  • Scala 31.5%
  • CSS 16.5%
  • HTML 10.5%
  • Shell 1.2%