Shared Whiteboards is a distributed application designed to allow users to collaborate on shared whiteboards. The main features we developed are:
- Whiteboard Management: Allows users to create, edit, and delete whiteboards.
- Real-Time Collaboration: Enables multiple users to draw, erase, and view updates on whiteboards in real time.
- Action Broadcasting: Uses Erlang processes to broadcast actions like adding or removing strokes across nodes, ensuring data consistency.
- Undo/Redo Actions: Supports undoing and redoing actions on the whiteboard via a managed stack structure.
- WebSocket Communication: Facilitates real-time communication between the client and server using WebSockets.
- Load Balancing: Implements custom load balancing strategies with NGINX.
- NGINX: Employed as a proxy server to ensure proper load balancing.
- Erlang: Erlang servers manage whiteboard activities through WebSocket communication. These servers handle everything from user authentication using JWTs for secure sessions to the real-time updating of whiteboard content.
- Glassfish: Serves as the Jakarta EE Application Server.
- MySQL: Utilized for storing persistent data such as user credentials and whiteboard metadata.
- Mnesia Database: Integrated within Erlang nodes to store whiteboard-specific data like access permissions, user connections, and action logs.
distributed_shared_whiteboard_demo.mp4
You can refer to this README file for all the necessary instructions.
