Wave Board is a virtual whiteboard application built with React and Canvas HTML, utilizing the Rough JS library for sketchy graphics. It includes tools for drawing lines, shapes, and text, with options for customization and functionalities like undo, redo, erase, and downloading the canvas as a PNG file.
- 🖌️ Draw freehand brush strokes
- 📏 Draw lines, rectangles, circles, and arrows
- ✏️ Add text annotations
- 🎨 Customize stroke color, stroke width, and fill color
- ↩️ Undo and redo actions
- 🧹 Erase elements
- 📥 Download the canvas as a PNG image
- 🌗 Toggle between light and dark modes
waveboard/
├── public/
├── src/
│ ├── components/
│ │ ├── Board/
│ │ │ ├── index.js
│ │ │ └── index.module.css
│ │ ├── Toolbar/
│ │ │ ├── index.js
│ │ │ └── index.module.css
│ │ ├── Toolbox/
│ │ │ ├── index.js
│ │ │ └── index.module.css
│ ├── store/
│ │ ├── board-context.js
│ │ ├── BoardProvider.js
│ │ ├── toolbox-context.js
│ │ ├── ToolboxProvider.js
│ ├── constants.js
│ ├── utils/
│ │ ├── element.js
│ ├── App.js
│ ├── App.css
│ └── index.js
├── .gitignore
├── package.json
└── README.md
- Clone the repository:
git clone https://github.com/yourusername/waveboard.git
- Navigate to the project directory:
cd waveboard
- install the dependencies:
npm install
- Start the development server:
npm start
In the project directory, you can run:
Runs the app in development mode. Open http://localhost:3000 to view it in the browser.
Builds the app for production to the build folder.
Launches the test runner in the interactive watch mode.
Ejects the project from create-react-app configuration. Use this only if you know what you are doing.
@testing-library/jest-dom @testing-library/react @testing-library/user-event classnames icons perfect-freehand react react-dom react-icons react-scripts roughjs web-vitals
ajv tailwindcss Folder Structure src/components/Board/index.js Handles the drawing logic and renders the canvas.
CSS module for styling the board component.
Contains the toolbar with drawing tools and actions.
CSS module for styling the toolbar.
Contains the toolbox for selecting colors and sizes.
CSS module for styling the toolbox.
Context for managing the board state.
Provider component for the board context.
Context for managing the toolbox state.
Provider component for the toolbox context.
Contains constants used throughout the application.
Utility functions for creating and managing board elements.
Main application component that renders the board, toolbar, and toolbox.
Wave Board is created and maintained by JEEVAN KUMAR KORRA