Ziqi (Katrina) Ding

Back

Role: Solo Developer
Duration: 1 month
Category: Systems & Tools
Created:

Links

Tech Stack

Java RMI Swing Multi-threading

Tags

Java RMI Distributed Systems

RMI-Shared-Whiteboard — Multi-Room Collaborative Drawing (Java RMI)

🏆 University Project (High Distinction)

A multi-room shared whiteboard built with Java RMI and a client–server model. Any user can create a room (becoming the admin) and others join as clients to draw together in real time, chat live, manage participants, and export or persist the session. Includes room discovery, role-based controls, and image/export utilities.

Project Gallery

End-to-end quick demo
Lobby — create or join a room
Admin join request prompt
+4
View all

Why it Matters#

Remote collaboration needs more than chat: teams sketch ideas, annotate flows, and make decisions visually. This project demonstrates a distributed collaboration tool from first principles—synchronizing shared state across multiple clients with RMI callbacks, handling permissions and joins/leaves, and preserving session history—useful patterns for whiteboards, pair-design, or teaching tools.

Key Highlights#

Rooms & Roles#

  • Create/join rooms; discover available sessions.
  • Admin controls: approve join requests, remove participants, end meetings, clear board.
  • Participant flows: request access, join/exit with proper notifications.

Real-Time Collaboration#

  • Live drawing with shapes (lines, ovals, rectangles, text, freehand), color pickers, stroke widths, and optional author labels.
  • Built-in chatroom synchronized with the whiteboard session.

Persistence & Export#

  • Open / Save / Save As for drawings and chat history; export current canvas to an image.

Session Awareness#

  • View active users, detect disconnects, and keep room history consistent across clients.

Technical Foundation#

  • Language & Runtime: Java
  • Networking: Remote Method Invocation (RMI) with a registry (default 1099; configurable).
  • Architecture: Client–server; room creator acts as server/admin; clients join via RMI stubs.
  • Features demonstrated: distributed state sync, concurrency control, role-based actions, and serialization of drawing/chat data.