Table of Contents
Whiteboard is a collaborative app that allows you to instantly collaborate with your friends, family, or coworkers to brainstorm and share ideas. Other than the standard features you'd expect, our digital whiteboard includes the following distinguishing features:
- Whiteboard Sharing
- Whiteboard Persistence
- AI Image Generation
- Chat
- Emoji Reactions/Pings
- Dark Mode
- Component Locking
- Compose for Desktop (UI library)
- Ktor Client Core + Ktor Client OkHttp (HTTP Networking)
- Krossbow (Kotlin STOMP client)
- Mockito (Mocking for tests)
- Kamel Image (Async image fetching from URL)
- Spring Boot
- Spring Web (HTTP)
- Spring WebSocket (STOMP server implementation comes included)
- Spring Data Jpa
- Spring Security
- Spring Test
- xerial:sqlite-jdbc (database driver so we can connect to SQLite DB)
- auth0's java-jwt (allows us to create JWTs)
- Gwenn's SQLite Dialect (Spring Data/Hibernate/JPA interop with SQLite)
Download the installer corresponding to your system and use it to install Whiteboard
Below is a demonstration of the following features:
- Creating and Sharing a Whiteboard
- Drawing with Path, Shapes, Text, Editing Attributes, and Resizing/Moving Elements
- AI Image Generation
- Zooming, Panning, Cutting, Copying, and Pasting
- Component Locking (What Others Will See when an Image is Locked)
- Chat
- Pings
- Teleporting to Another User's Cursor
- Dark mode
Features that aren't demonstrated are listed below:
- Shortcuts
- Quit
CMD/Control Q
- Hide
CMD/Control H
- Dark Mode
CMD/CONTROL M
- Zoom In
CMD/Control +
- Zoom Out
CMD/Control -
- Cut
CMD/Control X
- Copy
CMD/Control C
- Paste
CMD/Control V
- Delete
Backspace
- Select
V
- Pan
D
- Pen
P
- Square
U
- Circle
C
- Text
T
- Eraser
X
- Quit
- Database Persistence
Troubleshooting:
- Switching to localhost: For development purposes, users switch to a backend service hosted on localhost via the menu bar settings.
- Valid Usernames: Must be 8-20 characters long, no _ or . at the beginning or end, no __ or _. or ._ or .. inside. We allow letters, numbers, underscores, and periods.
- Running two instances of the application on the same computer: We use Java's Persistence API to store user credentials. When there are two instances of the app running at the same time, one instance's credentials get overwritten. This causes undefined behaviour with our features. To test multiplayer, please use two or more computers.
Note for Earlier Versions:
The earlier versions of our app depend on the server to login. However, the server APIs have changed and so has the host. Henceforth you will be unable to login to earlier versions and use the app. In some versions you are able to login, however, the WebSocket APIs are different and as a result the functionality does not work.
version 1.0.0: released 02/17/2023 (Sprint 1)
version 1.1.0: released 03/10/2023 (Sprint 2)
version 1.2.0: released 03/24/2023 (Sprint 3)
version 1.3.0: released 04/10/2023 (Sprint 4)
Distributed under the MIT License. See LICENSE
for more information.
- Avesta Barzegar: a3barzeg@uwaterloo.ca,
- York Wei: y269wei@uwaterloo.ca
- Mikail Rahman: am5rahma@uwaterloo.ca,
- Edward Wang: e97wang@uwaterloo.ca
- Jeff Avery
- Caroline Kierstead
- Xiaoyan Xu
- Mattie Nejati
- Shahpar Khan
- Wen Cui
- Xueguang Ma