A powerful, decentralized pixel art creator and animator with blockchain integration on Base chain
Pixelminter is a sophisticated pixel art creation platform that combines traditional digital art tools with modern blockchain technology. Built on Base chain, it allows artists to create, animate, and mint their pixel art as NFTs while participating in collaborative daily painting sessions through BasePaint integration.
π¨ BasePaint Integration: If you own a BasePaint brush from basepaint.xyz, Pixelminter enables you to interact directly with the daily collaborative canvas. You can create animations within the BasePaint ecosystem, bringing your pixel art to life on the shared daily canvas that the entire community contributes to.
- Multi-Tool Support: Brush, eraser, bucket fill, line tool, and move tool
- Layer System: Unlimited layers with opacity, visibility, and drag-and-drop reordering
- Advanced Brush: Customizable sizes (1-10px) with color picker and custom palettes
- Grid System: Toggleable pixel grid for precision drawing
- Multi-Frame Animation: Unlimited frames with onion skinning and adjustable opacity
- Playback Controls: Play, pause, skip with adjustable FPS (1-30)
- Export Options: High-quality GIF generation and download
- Base Chain Native: Built specifically for Base ecosystem
- BasePaint Brush Compatibility: Use your BasePaint.xyz brushes to paint on daily collaborative canvases
- Animated BasePaint Contributions: Create animated sequences directly on the daily BasePaint canvas
- Daily Canvas Interaction: Participate in the community-driven daily painting sessions
- NFT Minting: Mint individual pixel art pieces as NFTs
- Advanced Wallet Integration: OnchainKit-powered wallet with identity management and multi-wallet support
- Undo/Redo System: Complete history management with keyboard shortcuts
- Canvas Controls: Smooth zoom and image upload for reference work
- Cross-Platform: Responsive design with touch support for mobile creation
- State Persistence: Automatic saving and cache management
- GIF.js for client-side GIF generation
- Canvas API for high-performance pixel rendering
- Custom rendering engine optimized for pixel art
- Node.js 18.x or higher
- npm or yarn package manager
- Web3 wallet (Coinbase Wallet recommended)
- Clone the repository
git clone https://github.com/your-username/Pixelminter.git
cd Pixelminter- Install dependencies
npm install- Set up environment variables
cp .env.example .env
# Configure your environment variables- Run the development server
npm run dev- Open your browser
Navigate to
http://localhost:3000
npm run build
npm start- Add Frames: Click the "+" button to add new animation frames
- Set FPS: Adjust the frames per second for your animation speed
- Use Onion Skinning: Enable to see previous frames while drawing
- Preview: Use play controls to preview your animation
- Export: Download your animation as a GIF file
- Connect Wallet: Use the wallet connection button in the top right
- BasePaint Integration: Encode your art and paint on daily canvases
- Mint NFTs: Convert your pixel art into tradeable NFTs
- View on Base: Check your creations on Base block explorer
| Shortcut | Action |
|---|---|
Ctrl/Cmd + Z |
Undo |
Ctrl/Cmd + Y |
Redo |
Ctrl/Cmd + F |
Flip canvas horizontally |
Arrow Keys |
Shift frame content in direction |
Spacebar |
Play/pause animation |
- Grid Size: 16x16 to 128x128 pixels
- Canvas Size: 256x256 pixel resolution
- Zoom Levels: 0.3x to 3x magnification
- Background: Toggle daily reference images
- Frame Rate: 1-30 FPS
- Onion Skin Opacity: 0-100%
- Auto-save: Enabled by default
Pixelminter integrates with BasePaint, a collaborative art protocol where:
- Artists contribute pixels to daily canvases using their BasePaint brushes
- Animation Support: Create animated pixel art directly on the daily BasePaint canvas
- Brush Requirements: Own a BasePaint brush from basepaint.xyz to participate
- Contributions are tracked on-chain with pixel-by-pixel precision
- Revenue is shared among contributors based on their participation
- Each day features a new collaborative canvas for the community
BasePaint Contract: 0xBa5e05cb26b78eDa3A2f8e3b3814726305dcAc83
## π Development
### Project Structure
Pixelminter/ βββ src/ β βββ components/ # React components β β βββ ui/ # Reusable UI components β β βββ PixelArt.tsx # Main canvas component β β βββ ToolPanel.tsx # Drawing tools β β βββ SidePanel.tsx # Settings and layers β βββ hooks/ # Custom React hooks β β βββ canvas/ # Canvas-related hooks β β βββ animation/ # Animation utilities β β βββ tools/ # Tool-specific logic β βββ types/ # TypeScript definitions β βββ abi/ # Smart contract ABIs β βββ styles/ # Global styles βββ pages/ # Next.js pages βββ public/ # Static assets
### Key Components
- **`PixelArt.tsx`**: Main application component managing state and canvas
- **`PixelArtUI.tsx`**: UI layout and component composition
- **`CanvasComponent.tsx`**: High-performance canvas rendering
- **`AnimationControls.tsx`**: Animation playback and export
- **`LayerPanel.tsx`**: Layer management interface
- **`ConnectWalletButton.tsx`**: OnchainKit wallet integration with BasePaint brush detection
- **`EnhancedWallet.tsx`**: Multiple wallet UI variants (modal, island, advanced)
- **`OnchainProviders.tsx`**: Wagmi and OnchainKit provider configuration
- **`MintBPButton.tsx`**: BasePaint integration with OnchainKit transactions
- **`MintPixelminterButton.tsx`**: NFT minting with OnchainKit transaction components
### State Management
The application uses a custom state manager (`usePixelArtStateManager`) that handles:
- Canvas state and pixel data
- Layer management
- Animation frames
- History for undo/redo
- Blockchain integration data
## π’ Deployment
### Vercel (Recommended)
1. Connect your GitHub repository to Vercel
2. Configure environment variables
3. Deploy automatically on push to main
### Manual Deployment
```bash
npm run build
npm run export
# Deploy the `out` directory to your hosting provider
We welcome contributions! Please follow these steps:
- 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
- Follow TypeScript best practices
- Maintain test coverage above 80%
- Use conventional commit messages
- Update documentation for new features
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Key points about GPL v3:
- β Freedom to use: Run the program for any purpose
- β Freedom to study: Access and modify the source code
- β Freedom to share: Distribute copies to help others
- β Freedom to improve: Distribute modified versions
β οΈ Copyleft: Any distributed modifications must also be GPL v3β οΈ Source requirement: Must provide source code with distributions
- Website: pixelminter.xyx
- Base Explorer: basescan.org
- BasePaint: basepaint.xyz
- Base Team for the amazing L2 infrastructure
- BasePaint for collaborative art inspiration
- Coinbase for OnchainKit and wallet tools
- Open Source Community for the incredible tools and libraries
- Twitter: @pixelminter
- Email: sebas.2023@gmail.com
- GitHub Issues: Report bugs or request features
Built with β€οΈ for the BasePaint digital art community