✏️ Distributed Shared Whiteboard
Published:

Project Timeline
August 2019 - October 2019
Github: https://github.com/ZhangzihanGit/Distributed-Shared-Whiteboard-Application
Project Description
A shared whiteboard desktop application that allows multiple users to draw shapes and chat at the same time. Users need to log in/sign up to join a whiteboard session, all passwords are encrypted using the SHA512
algorithm. Multiple whiteboards could be created, and the user is able to choose whatever whiteboard to join.
The project used Java 8 as the backend language, JavaFX as the frontend framework, and used a three-tier Client/Server architecture. It separated the client – whiteboard server – data server. Java RMI was used as the communication method between the whiteboard server and data server, the request sends from the client were remotely called in the whiteboard server as well. To synchronize each client, MQTT was used to provide a subscribe/publish protocol. The whiteboard server was used as an intermediate agent to accept messages from each client and publish the messages to all other subscribers.
Tech Stack
- Backend: Java
- Frontend GUI: JavaFX
- Communication protocol:
- Java RMI: all communication between whiteboard server and data server, clients send request to whiteboard server
- MQTT: whiteboard server publish updates to all subscribed clients
- Access control: manager has all the rights to create/delete/close a whiteboard session, as well as save shaps and import files. The manager also has the right to manage the access of visitors
Usage
Step 1
git clone <https://github.com/ZhangzihanGit/Distributed-Shared-Whiteboard-Application.git
Step 2
cd Distributed-Shared-Whiteboard-Application/runnable-jar
Step 3
Run the data server:
java -jar dataServer.jar -ip <network_ipv4_address> -p <port_number>
Example:
java -jar dataServer.jar -ip localhost -p 1111
Step 4
Run the whiteboard server:
java -jar wbServer.jar -ip <network_ipv4_address>
Example:
java -jar wbServer.jar -ip localhost
Step 5
Run the client application:
java -jar client.jar
Demo
Whiteboard Server GUI






Client GUI






