Frontend - Assignment - Real Time Collaborative Whiteboard
Frontend - Assignment - Real Time Collaborative Whiteboard
Problem Statement:
Create a web application using React that allows users to upload images and receive real-time predictions from a pre-
trained machine learning model. The application should be able to classify the uploaded images into multiple
categories.
Minimum Requirements:
Users can create a new whiteboard session or join an existing one.
The whiteboard should support drawing using different colors and brush sizes.
Implement the ability to undo/redo the last action on the whiteboard.
Users should be able to see the cursors of other connected users moving in real-time, indicating their
drawing actions.
Add an option to save the whiteboard content as an image or PDF file.
Implement authentication (user signup and login) to ensure that only authorized users can access the
whiteboard.
The application should be responsive and work on both desktop and mobile devices.
Must have:
Use React for front-end development.
The UX should look professional – see any white boarding tool from Microsoft for UX reference – bad
ux choices will have negative points
For real-time functionality, consider using WebSocket or a real-time database like PostGres SQL via a
docker container.
For drawing on the whiteboard, you can explore libraries like Fabric.js or Konva.js.
Implement secure authentication using a backend service of keycloak only. Please use keycloak via a
docker. User should only be allowed on home screen after login
Clean & fluidic layout – use bootstrap (5.0) only
Code must be written in TypeScript only, no JS code will be accepted
Error-free, Readable, Simple & Clean code
Let me stress the previous point - Readable, Simple & Clean code
Bonus Points:
Allow users to collaborate through live chat while drawing on the whiteboard.
Implement an invitation system, where users can invite others to join their whiteboard session via
email.
Add the ability to export the whiteboard content as a video with a playback of the drawing actions.
Quick Hint:
You can use local storage to save the user preferences.