Skip to content
Rohan-ShridharPublic

About

Pixel art application with adjustable grids and import-export image feature

Topics

Resources

Code of conduct

Contributing

Stars

13 stars

Watchers

2 watching

Forks

Repository files navigation

GridCraft 🎨

GitHub Issues or Pull Requests GitHub Issues or Pull Requests

A React-powered pixel art tool that lets you paint on a customizable grid (16Γ—16, 32Γ—32, 64Γ—64, or 128Γ—128) with the full RGB color spectrum.

Why GridCraft? 🎯

Built with React, GridCraft demonstrates how modern component-based architecture can create interactive, stateful applications without complexity. It's a lightweight, accessible alternative to heavy art software that showcases clean React patterns and efficient state management.

Features ✨

  • Multiple Grid Sizes - Draw on a 16Γ—16, 32Γ—32, 64Γ—64, or 128Γ—128 canvas depending on your project
  • Full RGB Color Support - Choose any color using an intuitive RGB color picker
  • Export as PNG - Download your creations to save and share
  • Right-Click to Draw - Intuitive drawing mechanism using right mouse button
  • Color Selection - Easily select and switch between different colors
  • Undo/Redo - Never lose your work with full undo/redo support
  • Erase Mode - Quickly correct mistakes with the eraser tool
  • Clear Canvas - Start fresh with a single click
  • Real-time Updates - See your changes instantly as you draw

Keyboard Shortcuts

Shortcuts work while the drawing grid is visible:

Action Shortcut
Undo Ctrl + Z
Redo Ctrl + Y
Paint brush A
Fill enclosed cells B
Fill transparent cells C
Clear canvas D
Eraser E

Live Demo πŸš€

Experience GridCraft here: GridCraft Live

User Manual

Need step-by-step usage instructions? Read the GridCraft Manual.

Repository Structure πŸ“

rohan-shridhar-gridcraft/
β”œβ”€β”€ README.md                               # Project overview and usage documentation
β”œβ”€β”€ CODE_OF_CONDUCT.md                      # Community code of conduct
β”œβ”€β”€ CONTRIBUTING.md                          # Contribution guidelines
β”œβ”€β”€ google53f3f4f7aefc7ea4.html             # Verification file for Google indexing
β”œβ”€β”€ index.html                              # Main HTML entry point for the app
β”œβ”€β”€ LICENSE                                 # MIT license details
β”œβ”€β”€ Manual.md                               # Step-by-step user guide
β”œβ”€β”€ package.json                            # Project scripts and dependencies
β”œβ”€β”€ vercel.json                             # Vercel deployment configuration
β”œβ”€β”€ vite.config.js                          # Vite configuration for local dev/build
β”œβ”€β”€ public/                                 # Static public assets
β”‚   └── fonts/                              # Custom font files
β”‚       └── Minecraft.otf                  # Game-like font used in the UI
β”œβ”€β”€ src/                                    # Application source code
β”‚   β”œβ”€β”€ App.jsx                             # Main app state management and UI composition
β”‚   β”œβ”€β”€ Contributors.jsx                    # Contributors section component
β”‚   β”œβ”€β”€ ErrorPage.jsx                       # Error page fallback component
β”‚   β”œβ”€β”€ Footer.jsx                          # Footer content and links
β”‚   β”œβ”€β”€ Grid.jsx                            # Pixel grid rendering and drawing logic
β”‚   β”œβ”€β”€ Header.jsx                          # Header/navigation component
β”‚   β”œβ”€β”€ index.css                           # Global styles and layout
β”‚   β”œβ”€β”€ main.jsx                            # React app entry point
β”‚   β”œβ”€β”€ Menu.jsx                            # Toolbar/menu controls
β”‚   β”œβ”€β”€ toastMessages.js                    # Toast notifications for user feedback
β”‚   └── Tools.jsx                           # Drawing tools and controls
└── .github/                                # GitHub project metadata
    └── ISSUE_TEMPLATE/                     # Issue templates for bug reports and features
        β”œβ”€β”€ bug_report.md                   # Bug report issue template
        └── feature_request.md              # Feature request issue template

Project Structure

Technical Implementation πŸ”§

  • React 18 (CDN) - Loaded via unpkg, no build step required
  • In-Browser JSX Transpilation - Babel Standalone converts JSX syntax to JavaScript at runtime
  • Component Architecture - Modular design with seven specialized components:
    • App.jsx - Root component managing core state and download logic
    • Grid.jsx - Renders the drawing grid (16Γ—16 up to 128Γ—128) and handles cell painting
    • Tools.jsx - Drawing tools (color picker, eraser, undo/redo, clear)
    • Menu.jsx - Download button and high-level controls
    • Header.jsx & Footer.jsx - Layout components
    • main.jsx - React entry point with createRoot
  • State Management - React hooks for grid state, color selection, and undo/redo history
  • PNG Export System - Multi-step process for high-quality exports:
    1. Temporarily removes grid borders and gaps for clean output
    2. Uses html2canvas with scale: 8 for high-resolution captures
    3. Maintains transparent background with backgroundColor: null
    4. Restores original styling after capture
    5. Triggers download via dynamically created anchor tag
  • Undo/Redo System - History tracking with past, present, future state pattern
  • Event Handling - Mouse event listeners for right-click drawing
  • Props Communication - Download function passed from App to Menu (<Menu downloadImage={downloadImage} />)

How to Contribute

Checkout CONTRIBUTING.md for instructions.

Contributors

Thanks to these amazing people who contributed ❀️

Guidelines

  • Keep pull requests focused on a single feature or fix
  • Test your changes locally before submitting
  • Update documentation if your changes affect usage
  • Be respectful and constructive in discussions
  • If adding a new feature, consider adding a brief explanation of why it's useful

License πŸ“„

This project is licensed under the MIT License - see the LICENSE file for details.

About

Pixel art application with adjustable grids and import-export image feature

Topics

Resources

Code of conduct

Contributing

Stars

13 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages