A modern, feature-rich drawing application built with React, TypeScript, and Vite. Create digital artwork with an intuitive interface featuring customizable brushes, an eraser tool, and real-time drawing capabilities.
-
๐๏ธ Brush Tool: Customizable brush with adjustable:
- Color picker for unlimited color options
- Brush width (15px - 70px)
- Opacity control (0% - 50%)
-
๐งน Eraser Tool: Powerful eraser with:
- Grab cursor for intuitive erasing
- Same size controls as brush for consistency
- Full opacity erasing for complete removal
- Modern Design: Glass-morphism effects with smooth animations
- Responsive Layout: Works seamlessly on desktop and mobile devices
- Visual Feedback:
- Dynamic cursor changes based on tool selection
- Active tool highlighting with gradient backgrounds
- Hover effects and smooth transitions
- Canvas Boundaries: Clear visual distinction between drawing area and interface
- TypeScript: Full type safety for better development experience
- Component Architecture: Clean, modular component structure
- Real-time Drawing: Smooth, responsive drawing experience
- Cross-browser Compatible: Works on all modern browsers
- Node.js (v18 or higher)
- npm or yarn
-
Clone the repository
git clone https://github.com/yourusername/doodle-doo.git cd doodle-doo -
Install dependencies
npm install
-
Start development server
npm run dev
-
Open in browser Navigate to
http://localhost:5173(or the port shown in terminal)
- Open the application in your browser
- Select the Brush Tool (default) to start drawing
- Choose your preferred color, brush size, and opacity
- Click and drag on the canvas to draw
- Click the ๐งน Eraser button in the toolbar
- Your cursor will change to a grab hand
- Click and drag to erase content
- The cursor will show "grabbing" while actively erasing
- Color Picker: Click to select any color
- Width Slider: Adjust brush thickness (15-70px)
- Opacity Slider: Control transparency (0-50%)
- Currently in development - planned features coming soon!
doodle-doo/
โโโ src/
โ โโโ components/
โ โ โโโ CanvasPage.tsx # Main canvas and drawing logic
โ โ โโโ Menu.tsx # Tool controls and settings
โ โ โโโ Menu.css # Styling for controls
โ โโโ App.tsx # Main application component
โ โโโ App.css # Global and canvas styling
โ โโโ index.css # CSS variables and base styles
โ โโโ main.tsx # Application entry point
โโโ docs/ # Documentation and screenshots
โโโ public/ # Static assets
โโโ package.json # Dependencies and scripts
- Frontend: React 18 with TypeScript
- Build Tool: Vite
- Styling: CSS3
- Icons: Native emoji support
- Package Manager: npm
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Run ESLint
npm run lint
# Run type check
npm run tsc --noEmit- New tools can be added to the
Menu.tsxcomponent - Canvas logic is handled in
CanvasPage.tsx - Styling follows the existing CSS variable system
- TypeScript for type safety
- Functional components with hooks
- CSS variables for consistent theming
- Responsive design principles
Cursor not changing when switching tools:
- Ensure JavaScript is enabled
- Try refreshing the page
- Check browser console for errors
Canvas not responding to mouse events:
- Make sure you're clicking within the canvas boundaries
- Check that the canvas is properly loaded
- Try resizing the browser window
Performance issues:
- Clear browser cache
- Ensure you're using a modern browser
- Close other resource-intensive applications
- Keyboard shortcuts for tool switching
- Undo/Redo functionality
- Save/Load drawings
- Multiple brush types (round, square, spray)
- Layer support
- Export options (PNG, JPEG, SVG)
- Touch support for tablets
- Color palette presets
- Shape tools (line, circle, rectangle)
- Dark mode support
- Collaborative drawing
- Drawing history
- Custom brush creation
- Advanced color picker
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Dinuka Liyanage - Initial work - Dinuka Liyanage
- React team for the amazing framework
- Vite for the lightning-fast build tool
- The open-source community for inspiration and tools
Happy Drawing! ๐จ
