Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature Request] Adding Excalidraw plugin #357

Open
danymat opened this issue Nov 26, 2024 · 2 comments
Open

[Feature Request] Adding Excalidraw plugin #357

danymat opened this issue Nov 26, 2024 · 2 comments

Comments

@danymat
Copy link

danymat commented Nov 26, 2024

Hello,

Thanks for adding the plugins option, I just enabled it and added the Cyberchef plugin to test, works wonderfully.

We would really like the support of a self-hosted excalidraw (https://github.com/excalidraw/excalidraw) plugin that we use daily for taking notes and creating maps of our pentests.

I just saw that you have two options for the plugins:

  1. General plugin (that is to say, plugins in the home directory)
  2. By-project plugins (which is inside each project, such as showed on the call http:///project//plugins/)

Btw, I'm still not sure which excalidraw implementation to consider:

  1. Non real-time collaboration -> easy to install and setup (like cyberchef), data stays in local storage (could be a first approach) (https://docs.excalidraw.com/docs/@excalidraw/excalidraw/installation)
  2. Limited real-time collaboration -> creating a "lock" during editing by users, but other users could edit afterwards
  3. Full realtime colaboration -> more complex to implement, necessitates handling via server (https://docs.excalidraw.com/docs/@excalidraw/excalidraw/faq#does-this-package-support-collaboration-)

What do you think ?

@MWedl
Copy link
Contributor

MWedl commented Nov 26, 2024

Great idea. Here are some thoughts on how an excalidraw plugin could be implemented:

  1. Non real-time collaboration: This should be quite easy to implement, because of the existing npm package.
  2. Locking: This would require to add a custom lock mechanism (similar to design/template locks) and a per-project data storage for excalidraw. It would be useful if users can create/manage multiple diagrams per project and not just one diagram.
  3. Full realtime colaboration: Running the default excalidraw collab server via the plugin system is not supported. We would need to implement a custom collab adapter, data storage and multi-page support. For the custom collab integration, the plugin system needs to be extended to allow defining custom websocket handlers in plugins.

I think 2. and 3. will be tricky to implement.

  1. should be easy, but users probably need to export diagrams themselves and manually save them to notes.

@danymat
Copy link
Author

danymat commented Nov 26, 2024

Indeed, i share this reasoning.

  1. Should be quite easy and straightforward, but do you agree that each project will have it's own note ? (locally per user). It would be straight useful for each team member, but you lose the "collaboration" feature of excalidraw.
  2. This would be more difficult to implement (because of locking) but it could make excalidraw more useful for teams
  3. This one is, i guess, the most interesting for teams. Indeed, their collaboration server is not easily done, but i think it could be a game changer.

Some considerations however:

  • When you open excalidraw, you are greeted with only 1 infinite page. That means that if you implement a excalidraw per project, then each project will only get 1 infinite page. Depending on use-case and teams, they need to know this "limitation".
  • Same thing for the "global excalidraw" plugin that could be implemented on the home page: 1 infinite page, then you should be careful what to write in there.
  • A start could be made by non real-time collaboration, in order to set the plugin up, have a first feedback on the integration . Maybe the plugin would have to be more than just the excalidraw whiteboard and implement other features (e.g., having a feature to show a collection of excalidraw notes per project)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants