Git Product home page Git Product logo

apps.whiteboard's Introduction

๐Ÿš€ Whiteboard App for Rocket.Chat ๐ŸŽจ

Enhance your collaborative experience with diagrams, drawings, and more using the Whiteboard Integration in Rocket.Chat. The Whiteboard App provides a seamless environment for real-time visual communication and brainstorming.

Whiteboard

How to Use the App

Create a Whiteboard

Through Slash Commands:

  • Use /whiteboard help for a helpful message.
  • Use /whiteboard list to list all created boards in the room.
  • Use /whiteboard new <board name> to create a new whiteboard.
  • Use /whiteboard delete <board name> to delete a whiteboard.

Through Action Buttons:

  • Click on the "Create Whiteboard" action button to generate a new whiteboard.

Action button

Using the Whiteboard

  • Click on the Edit board button, and you will be directed to a new whiteboard tab.

    image

  • User edits will be stored in real-time as an image preview in the message.

Image 1 Image 2
  • Click on the Settings button to modify the board name and make the board public/private.

image

Whiteboard App Policies

Local Setup Guide

Join our app's community from here ๐Ÿ’ป๐Ÿง‘โ€๐Ÿคโ€๐Ÿง‘๐Ÿš€.

Make sure you have a working Rocket.Chat server and Apps-Engine CLI for your machine. You can setup the server for your local machine from here and CLI from here.

  1. Navigate to the client folder:

    cd client
  2. Install all required packages:

    npm install
  3. Build the webpack bundle for the Excalidraw React app:

    npm run build
  4. Execute the build.js script to generate build scripts for excalidraw.ts and excalidrawContent.ts:

    npm run build:excalidraw
  5. Change directory to whiteboard and install all Rocket chat app packages :

    cd ../whiteboard/
    npm install
  6. Deploy your app locally

    rc-apps deploy --url http://localhost:3000 --username ${username} --password ${password}

    Your username and password are your local server's user credentials .Verify the successful build by accessing the /excalidraw endpoint in the Whiteboard app settings. You can access the React app through the provided URL.

Instead of running the above commands, you can simply use the shortcut commands

  1. Run the following command within the Apps.Whiteboard folder

    cd client \
    && npm install \
    && npm run build \
    && npm run build:excalidraw \
    && cd ../whiteboard/ \
    && npm install \
    && rc-apps deploy --url http://localhost:3000 --username ${username} --password ${password}
    
    

    Make sure to replace ${username} and ${password} with the actual username and password values of your local server's user credentials

  2. You can use the Makefile to run the server as well

    make YOUR_USERNAME=${username} YOUR_PASSWORD=${password}
    

    Make sure to replace ${username} and ${password} with the actual username and password values of your local server's user credentials. Alternatively, you can modify the Makefile directly by replacing the USERNAME and PASSWORD variables.

    Additional Commands:

    For build:

    make build YOUR_USERNAME=${username} YOUR_PASSWORD=${password}
    

    For deploy:

    make deploy YOUR_USERNAME=${username} YOUR_PASSWORD=${password}
    

Gitpod Setup Guide

Follow these steps to set up your development environment using Gitpod:

  1. Visit Gitpod Website:

    • Go to Gitpod and click on the dashboard.
  2. Login with GitHub:

    • Login to Gitpod using your GitHub account credentials.
  3. Create a New Workspace:

    • Click on the "New Workspace" button.
    • In the dropdown menu, select the repository you want to work on, specifically the Apps.Whiteboard repository that you've previously forked on GitHub.
  4. Continue and Wait:

    • Click "Continue" and give it some time to initialize your workspace.
  5. Start Coding:

    • After a few seconds, you'll see a fully-functional code editor in your browser.
    • Feel free to start coding, making changes, and contribute to the Apps.Whiteboard repository.

That's it! You are now set up and ready to contribute. If you encounter any issues or have questions, refer to the Gitpod documentation or reach out to the community for assistance.

Happy coding!

GSoC'23 Work: Whiteboard App Report

Explore our documentation and engage with the Rocket.Chat Apps community:

  • Rocket.Chat Apps TypeScript Definitions Documentation: Learn about Rocket.Chat Apps TypeScript definitions and how to use them.

  • Rocket.Chat Apps TypeScript Definitions Repository: Contribute and explore the open-source repository for Rocket.Chat Apps TypeScript definitions.

  • Example Rocket.Chat Apps: Find inspiration in a collection of example Rocket.Chat Apps, providing practical implementations.

  • Community Forums: Engage with the Rocket.Chat Apps community through our forums.

  • Community Chat Channel: Join the conversation in our community chat channel.

  • Apps Community Channel: Join the conversation in our app's community channel.

Feel free to explore, learn, and collaborate within the Rocket.Chat Apps ecosystem. Happy coding!

Contributors

Alt

apps.whiteboard's People

Contributors

brf153 avatar culturalprofessor avatar giridharan002 avatar jeffreythecoder avatar shiqimei avatar snowden-fu avatar sumitwarrior7 avatar umangutkarsh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

apps.whiteboard's Issues

Change board status dropdown error

WHen I am trying to change the board's status from public to private or vice versa, the dropdown does not close.
Screenshot from 2024-01-05 20-20-17

I am checking the terminal and the logs state App c986f058-d8d5-496f-9c1c-06e39a95b229 triggered an interaction but it doen't exist or doesn't have method executeViewClosedHandler
Screenshot from 2024-01-05 20-21-52

Admin only rights for editing and deleting boards

Only the room admin should be allowed to delete and edit the boards in the room along with the user who created the board. The other users can do the same only when granted permission by the admin or the creator.

Preview for User Information when hovered over the username.

Currently there is no preview when hovered over the name of the user who created the whiteboard.

As an Apps.Whiteboard developer: I want to add a feature to preview the user information who owns the whiteboard.

SCREENSHOTS/SCREEN-RECORD:

preview.webm

Dropdown closing issue in settings modal.

BRIEF TITLE:

The dropdown selection is not getting closed after selecting an option from the Update Board Privacy dropdown. It is also not getting closed when clicking somewhere outside on the modal.

SCREENSHOTS/SCREENRECORD:

dropdown.webm

Command messages should only notify current user

Description:

For commands that serve individual purposes, such as /whiteboard help and /whiteboard list, the notification messages should only be visible to the current user running the commands.

Currently, all users in the room can see the messages.

Current behavior:

notify_room

Expected behavior:

Only the user running the commands can see the messages.

Browser fs access module error

Encountering an error upon selecting the "Open," "Save to," and "Export image" buttons, specifically related to the failure of the "node_modules_browser-fs-access_dist_file-open-002ab408_js" chunk.

image

Remove unused imports and variables

Some files have unused imports and variables. These can be removed to decrease the build performance and reduce file size.

  • ExecuteViewSubmitHandler.ts
  • ExecuteActionButtonHandler.ts
  • ExecuteBlockActionHandler.ts
  • commandUtility.ts
  • DeleteModal.ts

Repo activity section in Readme

Suggesting the addition of a "Repo Activity" section in the README.md to enhance the overall quality of the README file.

Not having permissions to directly modify the repository, so here are the steps to produce the Repo Activity section in readme file :-

  1. Navigate to https://repobeats.axiom.co/
  2. Sign in with the Github (Linked to the Rocket.chat/Apps.whiteboard repo)
  3. Got Manage Configs section or you can directly navigate to https://repobeats.axiom.co/configs
  4. Add the owner and repo there and save it to generate the link for Repo Activity section
  5. Copy the link and paste it to readme and commit, it will create the Repo Activity section in the readme

Sample Repo Activity image :
Screenshot from 2023-12-10 12-51-20

Permission System

We should enable permission control for the project. This requires a careful design the permission system.

/whiteboard create <whiteboard_name> command

The existing "/whiteboard new" command lacks flexibility as it only generates whiteboards with Untitled name.

Update the command to "/whiteboard create <whiteboard_name>", allowing users to name their whiteboards during creation. If no name is given, it defaults to creating an Untitled whiteboard

The overview of the "Whiteboard Integration" project

  • V1 eta 2023-07-30 Baisc MVP

    • Create Board using slashcommand (/whiteboard new) and messagebox context button Create Whiteboard)
    • Edit Borad and update the content to the attachment message preview_image
    • Fix the image uploading problem
    • source code integration (a more stable update method)
    • Basic Settings Modal, set Board Name and view all asset images
  • V2 eta 2023-08-15 Realtime collabration (#7 )

  • V3 eta 2023-08-31 Permission System (#6 ), Private Boards (via direct message)

  • V4 eta 2023-09-15 Boards Management (List all boards (notification), Remove boards (need admin permission), another context button Manage Boards)

  • eta 2023-09-15 Better UI details (slashcommand PreviewBlock #8 )

  • V5 eta 2023-10-05 Move entire sidebar feature of markboard to Apps.Whiteboard

    image

Board not rendering

Screenshot from 2024-01-05 20-05-00

I have recently setup my server again. THis time I have cloned the repo of Rocket.Chat and run the server using the command yarn dsv. I have deployed the whiteboard app in the server. Now, I am trying to make a new board using the command /whiteboard new but the board does not render.

[Feat] : Adding Linting to Whiteboard

Right now there are no commands for addressing linting issues in the app

This improvement aims to provide commands that facilitate lint issue detection and resolution.

Multiple Whiteboards with same name

Users can currently create multiple whiteboards with the same name in a room, which isn't intended for the application

This behavior needs to be addressed and resolved to ensure the proper functioning of the application.

Whiteboard naming bug

When attempting to modify the name of a whiteboard using the settings button, there are instances where the name fails to update.

For a clearer understanding of this issue, please refer to the attached video :

Screencast.from.07-12-23.02_11_48.PM.IST.mp4

Modify the Settings modal for Board and display text when renamed.

The current settings modal works like the following:

wb-new.webm

Modifications required:

  • A text should be displayed when board is renamed. -> ${board} is renamed to ${new-board}
  • The Settings Modal should contain pre-filled values of Board Name and Board Privacy when the modal is opened to edit settings.

Change Board Name not working properly

After changing the board name from Untitled Whiteboard, another board is being added to the persistance database rather than updating the previously rendered board.

VID-20231231-WA0002.mp4

PreviewBlock

Support preview block to provide a better user experience for users.

Add issue and pull request templates

Description

Currently, the repo lacks templates for new issues and PRs, leading to inconsistency in style and sometimes insufficient detail in submissions.

To guide contributions more effectively, it's helpful to introduce templates for both issues and PRs.

switching languages error

When changing languages in Excalidraw, there appears to be an issue where the language switch functionality is not functioning as expected.

Screenshot from 2023-11-29 20-45-18

This behavior is indicative of a potential bug that requires investigation and resolution.

Board Status Changing Bug

While changing status of a whiteboard without changing the name, the board status will not change and it will display an irrelevant message

Milestone 1: Enable creating & editing whiteboard in the Rocket.Chat

  • 1. implement slashcommand /whiteboard new -> create a board record in persistence -> send the rich block message (with a empty white background image and a Edit link);
  • 2. Rewrite /excalidraw to [GET] board/<boardId> route
  • 3. implement [POST] board/<boardId>/update, post board data and board png preview image whenever board changes in debounce;
  • 4. implement [GET] /board/<boardId>/get route (for gettting route data). in client, get the board data in useEffect(() => {}, []) and render the data to board.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.