Skip to content

AbabilX/white_board

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽจ White Board

Infinite Drawing Canvas for Creative Minds

Flutter Dart

Platform License

An infinite, multi-page whiteboard application built with Flutter. Create, draw, erase, and annotate on an endless canvas with powerful drawing tools and seamless multi-platform support.

Features โ€ข Installation โ€ข Usage โ€ข Contributing


โœจ Features

๐ŸŽจ Drawing Tools

  • ๐Ÿ–Š๏ธ Pen Tool โ€” Draw with multiple colors and adjustable stroke width (2-15px)
  • ๐Ÿงน Eraser Tool โ€” Remove drawings with adjustable eraser size (15-200px)
  • โœจ Highlighter Tool โ€” Temporarily highlight areas with translucent effect (auto-fades)
  • โœ‹ Hand Tool โ€” Pan and navigate across the infinite canvas

๐ŸŽฏ Core Capabilities

  • โ™พ๏ธ Infinite Canvas โ€” Draw without boundaries
  • ๐Ÿ“„ Multi-Page Support โ€” Create and manage multiple drawing pages
  • ๐ŸŽจ Color Palette โ€” 6 preset colors (Black, Red, Green, Yellow, Blue, Teal)
  • ๐Ÿ” Advanced Zoom โ€” Pinch-to-zoom, slider controls (0.1x to 5x)
  • ๐Ÿ–ฑ๏ธ Custom Cursors โ€” Context-aware cursors for each tool
  • ๐Ÿ“ฑ Responsive Design โ€” Optimized UI with minimum size of 800x600

๐Ÿ–ฑ๏ธ Input & Interaction

  • ๐Ÿ–ฑ๏ธ Mouse and trackpad navigation
  • ๐Ÿ‘† Touch gestures (2-finger pan/zoom)
  • โšก Smooth drawing experience with real-time rendering
  • ๐ŸŽฏ Precision controls for professional work

๐Ÿš€ Getting Started

๐Ÿ“‹ Prerequisites

Before you begin, ensure you have the following installed:

Requirement Version Purpose
Flutter SDK 3.10.7+ Core framework
Dart SDK 3.10.7+ Programming language

Platform-Specific Requirements

๐ŸŽ macOS
  • Xcode (latest version)
  • CocoaPods (sudo gem install cocoapods)
๐ŸชŸ Windows
  • Visual Studio 2022 with "Desktop development with C++" workload
๐Ÿง Linux
# Ubuntu/Debian
sudo apt-get install clang cmake ninja-build pkg-config libgtk-3-dev
๐ŸŒ Web
  • Chrome, Edge, or Firefox (latest version)

๐Ÿ“ฆ Installation

Follow these simple steps to get White Board running on your machine:

# 1. Clone the repository
git clone https://github.com/AbabilX/white_board.git
cd white_board

# 2. Install dependencies
flutter pub get

# 3. Run the application
flutter run -d [platform]

Platform options:

  • macos โ€” macOS desktop app
  • linux โ€” Linux desktop app
  • windows โ€” Windows desktop app
  • chrome โ€” Web application

๐Ÿ—๏ธ Building for Production

Create optimized builds for distribution:

# Desktop Applications
flutter build macos    # macOS .app
flutter build linux    # Linux executable
flutter build windows  # Windows .exe

# Web Application
flutter build web      # Static web files

Build outputs:

  • macOS: build/macos/Build/Products/Release/
  • Linux: build/linux/x64/release/bundle/
  • Windows: build/windows/x64/runner/Release/
  • Web: build/web/

๐Ÿ“– Usage Guide

๐ŸŽฏ Quick Start

1. Drawing

โ†’ Select a color
โ†’ Choose pen tool
โ†’ Start drawing!

2. Navigation

โ†’ Use hand tool
โ†’ Two-finger pan
โ†’ Pinch to zoom

3. Pages

โ†’ Open drawer
โ†’ Add/switch pages
โ†’ Delete unwanted

๐ŸŽฎ Controls & Shortcuts

Action Method
Pan Canvas Two-finger scroll or Hand tool
Zoom In/Out Pinch gesture or Zoom slider
Draw Pen tool + Mouse/Touch
Erase Eraser tool + Drag
Highlight Highlighter tool (auto-fades after 2s)
Clear Page Trash icon in toolbar
Reset View Home icon in toolbar
Add Page Plus icon in drawer
Switch Page Click page in drawer

๐Ÿ› ๏ธ Toolbar Reference

Bottom Toolbar (from left to right):

  1. ๐Ÿ“ Stroke Width Slider โ€” Adjust tool size
  2. ๐Ÿงน Eraser โ€” Remove content
  3. ๐Ÿ–Š๏ธ Pen โ€” Draw mode
  4. โœ‹ Hand โ€” Pan mode
  5. โœจ Highlighter โ€” Temporary highlights
  6. ๐Ÿ—‘๏ธ Clear โ€” Clear current page
  7. ๐Ÿ  Reset โ€” Reset view to default
  8. ๐Ÿ” Zoom โ€” Show zoom controls

Top Toolbar:

  • ๐ŸŽจ Color Palette โ€” Choose from 6 colors
  • ๐Ÿ” Menu โ€” Access page drawer

๐Ÿ—๏ธ Architecture & Technical Details

๐Ÿ”ง Built With

This project leverages powerful Flutter packages and modern architecture:

Package Version Purpose
Flutter Latest Cross-platform UI framework
GetX 4.7.3 State management & routing
window_manager 0.5.1 Desktop window controls
flutter_custom_cursor 0.0.4 Custom cursor support
hugeicons 1.1.4 Beautiful icon library
flutter_svg 2.2.3 SVG rendering
dotted_border 3.1.0 Stylish borders

๐Ÿ“ Project Structure

white_board/
โ”‚
โ”œโ”€โ”€ lib/
โ”‚   โ”œโ”€โ”€ main.dart                              # Application entry point
โ”‚   โ””โ”€โ”€ src/
โ”‚       โ””โ”€โ”€ home/
โ”‚           โ”œโ”€โ”€ board/
โ”‚           โ”‚   โ”œโ”€โ”€ board.dart                 # Main canvas widget
โ”‚           โ”‚   โ””โ”€โ”€ widget/
โ”‚           โ”‚       โ”œโ”€โ”€ board_drawer.dart      # Page navigation drawer
โ”‚           โ”‚       โ””โ”€โ”€ page.dart              # Individual page container
โ”‚           โ”‚
โ”‚           โ”œโ”€โ”€ drawing_path/
โ”‚           โ”‚   โ””โ”€โ”€ drawing_path.dart          # Path data model & enums
โ”‚           โ”‚
โ”‚           โ”œโ”€โ”€ painter/
โ”‚           โ”‚   โ””โ”€โ”€ board_custom_painter.dart  # Custom canvas painter
โ”‚           โ”‚
โ”‚           โ””โ”€โ”€ pointers/
โ”‚               โ””โ”€โ”€ mouse_pointers.dart        # Cursor asset manager
โ”‚
โ”œโ”€โ”€ assets/
โ”‚   โ””โ”€โ”€ cursors/                               # Custom cursor images
โ”‚
โ”œโ”€โ”€ test/                                      # Unit & widget tests
โ””โ”€โ”€ pubspec.yaml                               # Project dependencies

๐Ÿงฉ Key Components

Board Widget

The main canvas widget that handles:

  • Tool selection and management
  • Gesture recognition (pan, zoom, draw)
  • State management for drawing operations
  • Integration with InteractiveViewer
DrawingPath Model

Data structure for storing drawing strokes:

  • Color information
  • Stroke width
  • Path type (pen, eraser, highlighter)
  • Point coordinates
PaintingPage

Container managing multiple drawing paths per page:

  • Layer management
  • Path collection
  • Page-specific state
BoardCustomPainter

Custom painter responsible for:

  • Rendering paths on canvas
  • Applying visual effects
  • Optimized drawing performance
MousePointers Singleton

Centralized manager for custom cursor assets:

  • Cursor loading and caching
  • Platform-specific cursor handling
  • Dynamic cursor switching

๐ŸŽจ Design Philosophy

  • Simplicity First โ€” Intuitive interface with minimal learning curve
  • Performance โ€” Optimized rendering for smooth drawing experience
  • Cross-Platform โ€” Write once, run everywhere
  • Extensible โ€” Clean architecture for easy feature additions

๐Ÿค Contributing

We welcome contributions from the community! Whether it's bug fixes, new features, or documentation improvements, your help is appreciated.

How to Contribute

  1. Fork the repository
  2. Create a feature branch
    git checkout -b feature/AmazingFeature
  3. Commit your changes
    git commit -m 'Add some AmazingFeature'
  4. Push to the branch
    git push origin feature/AmazingFeature
  5. Open a Pull Request

Contribution Guidelines

  • ๐Ÿ› Bug Reports: Include steps to reproduce, expected behavior, and screenshots if applicable
  • โœจ Feature Requests: Open an issue first to discuss major changes
  • ๐Ÿ“ Code Style: Follow existing code conventions and formatting
  • โœ… Testing: Ensure your changes don't break existing functionality
  • ๐Ÿ“– Documentation: Update relevant documentation for new features

Development Setup

# Clone your fork
git clone https://github.com/YOUR_USERNAME/white_board.git

# Add upstream remote
git remote add upstream https://github.com/AbabilX/white_board.git

# Create a branch
git checkout -b feature/my-feature

# Make changes and test
flutter test
flutter analyze

# Commit and push
git commit -am "Description of changes"
git push origin feature/my-feature

๐Ÿ“„ License

This project is currently unlicensed. Please contact the repository owner for licensing information before using this software in production or commercial applications.


๐ŸŒŸ Acknowledgments

Special thanks to:

  • ๐Ÿ’™ Flutter Team โ€” For the amazing cross-platform framework
  • ๐Ÿ“ฆ Package Maintainers โ€” For their excellent open-source libraries
  • ๐ŸŽจ HugeIcons โ€” For the beautiful icon set
  • ๐Ÿ‘ฅ Contributors โ€” Everyone who has contributed to this project

๐Ÿ“ฌ Contact & Support

Project Link: github.com/AbabilX/white_board

Found a bug? Open an issue

Want to contribute? See contributing guidelines


โญ Star this project if you find it helpful!

Made with โค๏ธ using Flutter

This project is under active development. Features and documentation may change.

About

An infinite, multi-page whiteboard application built with Flutter. Create, draw, erase, and annotate on an endless canvas with powerful drawing tools and seamless multi-platform support.

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors