singodiyashubham87 / Draw-it-out

An online Whiteboard application built using ReactJS & TailwindCSS utilising the HTML5 Canvas & the JavaScript Canvas API.
https://draw-it-out.vercel.app
MIT License
79 stars 160 forks source link

[FEAT] Collaborative Drawing #248

Closed Saikat123Dev closed 3 months ago

Saikat123Dev commented 4 months ago

Collaborative Drawing Feature Request

Overview:

Introduce a collaborative drawing feature to enhance the interactive and social aspects of the online drawing app. This feature will enable multiple users to collaborate in real-time, allowing them to draw together on the same canvas simultaneously. By facilitating collaboration, users can engage in creative activities, share ideas, and work together on artistic projects, fostering a sense of community within the app.

Key Features:

Real-time Collaboration:

Enable multiple users to draw together on the same canvas in real-time. Changes made by one user should be instantly visible to all other users collaborating on the canvas.

User Presence Indication:

Provide visual indicators to show the presence of other users currently active on the canvas. This could include displaying avatars or usernames of collaborators, along with their cursor movements in real-time.

Drawing Synchronization:

Ensure synchronization of drawing actions across all connected clients. Any strokes, shapes, or annotations made by one user should be accurately replicated on the canvases of other collaborators without delay.

Undo/Redo Support:

Implement support for undo and redo actions in collaborative drawing sessions. Users should be able to undo their own drawing actions and view the history of changes made by all collaborators.

Collaborator Interaction:

Facilitate communication and interaction between collaborators within the drawing app. Include features such as chat functionality, allowing users to exchange messages, share feedback, and coordinate their drawing activities.

Benefits:

Implementation Considerations:

github-actions[bot] commented 4 months ago

Hi there! Thanks for opening this issue. We appreciate your contribution to this open-source project. We aim to respond or assign your issue as soon as possible. In the meantime you can star the repo and read the contributing.md

Saikat123Dev commented 4 months ago

Please assign me for this feature update @singodiyashubham87 for ssoc24

singodiyashubham87 commented 4 months ago

@Saikat123Dev Adding this feature will make the canvas drawing experience slow, do you have a solution for that?

Saikat123Dev commented 4 months ago

@singodiyashubham87 We can scale it using Redis . Scaling a collaborative drawing system using Redis as a reverse proxy can help distribute the load across multiple instances and improve performance and reliability. By leveraging Redis as a reverse proxy and utilizing its features for session management, real-time updates, presence tracking, and caching, we can effectively scale our collaborative drawing system to support a growing user base while maintaining performance and reliability.

singodiyashubham87 commented 4 months ago

This app was supposed to not use the backend anytime, If we use all this then it will take so much time & also a complete transition of the application, I don't think it's feasible when already there are so many contributors working on so many issues every day.

singodiyashubham87 commented 3 months ago

Closing due to inactivity.