/whiteboard-app

Primary LanguageKotlinMIT LicenseMIT


Logo

Whiteboard

Table of Contents
  1. About The Project
  2. Getting Started
  3. Releases
  4. Usage
  5. License
  6. Contact
  7. Acknowledgments

About The Project

Product Name Screen Shot

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

(back to top)

Built With

  • 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)

(back to top)

Getting Started

Download the installer corresponding to your system and use it to install Whiteboard

(back to top)

Usage

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
  • 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.

(back to top)

Releases

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)

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

(back to top)

Acknowledgments

  • Jeff Avery
  • Caroline Kierstead
  • Xiaoyan Xu
  • Mattie Nejati
  • Shahpar Khan
  • Wen Cui
  • Xueguang Ma

(back to top)