Table of Contents
Developed a collaborative web application utilizing the MERN stack (MongoDB, Express.js, React, and Node.js). The platform allows multiple users to sketch various objects on a shared whiteboard, including squares, circles, lines, and text. It supports real-time collaboration and includes role-based access controls to manage user permissions effectively. This project demonstrates proficiency in full-stack development, real-time communication technologies, and secure access management.
The following technologies and tools have been equipped to develop this project -
- MERN: MongoDB, Express, ReactJS, Node JS
- SocketIO
- Rough JS
To get a local copy up and running follow these simple example steps.
- Node JS should be installed as prerequisites
- npm
npm install npm@latest -g
- MongoDB Setup
- Run front end Application with
cd frontend npm install npm start - Run backend application with
cd server npm install npm start
- Authentication & Authorization: Registration and login are required with proper validation to access the boards and features.
- Multiple Whiteboards: Users can create and manage more than one whiteboard, and share them with other users.
- Role-Based Access: Access to each board is role-based, enabling specific features for users based on their roles.
- Multiple Drawing Tools: The whiteboard supports various shapes and tools, including rectangles, circles, text, and pencils.
- Real-Time Collaboration: All activity on the whiteboard canvas is updated in real-time for all members viewing the board, using Socket.IO events.
- Export Options: Users can export the whiteboard content as an image or PDF.
database for CoSketch having below 3 documents and its respective structure mentioned below,
- Users
{
"_id": {
"$oid": "661be3fab29b01e73b199d14"
},
"email": "veet2@gmail.com",
"username": "veet2124",
"password": "$2b$12$lNXnUpFuIyR42ZyxlQj9NOHqAGVMjlAE3gNjcqTQGwGLEdZYTVUk.",
"firstName": "Veet",
"role": "ADMIN",
"lastName": "Moradiya",
"createdAt": {
"$date": {
"$numberLong": "1713103843726"
}
},
}- boards
{
"_id": {
"$oid": "663763bf42ff898ab7b92989"
},
"boardTitle": "Test Board Members API",
"boardDescription": "Test Board created via API with members",
"members": [ // array of members with role
{
"memberId": {
"$oid": "661bf4e5d6b91517e3136997"
},
"memberRole": "OWNER",
"lastAccessedAt": null,
"_id": {
"$oid": "663763bf42ff898ab7b9298a"
}
},
],
"createdAt": {
"$date": {
"$numberLong": "1714906047611"
}
},
"updatedAt": {
"$date": {
"$numberLong": "1714906047611"
}
}
}- boardcontents
{
"_id": {
"$oid": "663a551d81b106ac6e38ea45"
},
"boardId": {
"$oid": "6626a1062377ee6823c8a12d"
},
"boardElements": [] // array of board elements
}- More options for board menu
- logging in backend application with log file.
- Dockerize front end and backend application with DockerFile and simulate deployment using docker based deployment














