A web-based application for creating custom game cartridge icons with gradients, system presets, and artwork overlays. Design beautiful retro-inspired gaming icons with an intuitive interface and real-time preview.
- Gradient Customization: Create custom color gradients with multiple color stops and reorderable colors
- System Presets: Pre-built preset configurations for different gaming systems
- Custom Icons: Use emoji or upload custom icon images
- Artwork Upload: Add game artwork as overlays with zoom control
- Real-time Preview: See changes instantly in high-quality preview
- Download Export: Export your designs as PNG images at 1024x1024 resolution
- Responsive Design: Works seamlessly on desktop and mobile devices
- Modern UI: Built with Radix UI components and Tailwind CSS
- Framework: React 18+ with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS + shadcn/ui components
- UI Library: Radix UI for accessible components
- Rendering: HTML Canvas for cartridge rendering
- Icons: Lucide React icons
- Package Manager: Bun
- Linting: ESLint with TypeScript support
- Forms: React Hook Form for form management
- Node.js 18+ or Bun installed
- Git
- Clone the repository:
git clone <repository-url>
cd iisu-icon-maker- Install dependencies:
bun install
# or with npm
npm install- Start the development server:
bun run dev
# or with npm
npm run devThe application will be available at http://localhost:5173 (or the port shown in your terminal).
bun run dev- Start development server with hot module reloadingbun run build- Build for productionbun run build:dev- Build with development mode enabledbun run preview- Preview the production build locallybun run lint- Run ESLint to check code quality
src/
├── components/ # React components
│ ├── ui/ # Radix UI component wrappers (shadcn/ui)
│ ├── ControlsPanel.tsx
│ ├── PreviewPanel.tsx
│ ├── GameCartridgeBuilder.tsx
│ ├── GradientControls.tsx
│ ├── ImageUpload.tsx
│ ├── IconInput.tsx
│ └── PresetSelector.tsx
├── pages/ # Page components
│ ├── IconMaker.tsx # Main application page
│ ├── Index.tsx
│ └── NotFound.tsx
├── hooks/ # Custom React hooks
│ ├── use-cartridge-renderer.tsx
│ └── use-mobile.tsx
├── services/ # Business logic
│ └── presetService.tsx
├── types/ # TypeScript type definitions
├── data/ # Static data
└── lib/ # Utility functions
public/
├── systems/ # System artwork and icons
│ ├── artwork/
│ ├── colors/
│ └── icons/
- Select or Create a Preset: Choose from pre-built system presets or customize your own
- Customize Colors: Pick colors or use the gradient editor to create custom color combinations
- Choose Icon: Select from emoji or upload a custom image
- Add Artwork: Optionally upload game artwork to be displayed on the cartridge
- Preview & Export: See the real-time preview and download your design as PNG
- PreviewPanel: Displays the real-time preview of the cartridge icon
- ControlsPanel: Main interface for all customization options
- GameCartridgeBuilder: Renders the cartridge design using HTML Canvas
- GradientControls: Manages color gradient selection and ordering
- PresetSelector: Browse and apply system presets
- ImageUpload: Handle artwork upload and processing
The application supports multi-stop gradients. Colors can be:
- Selected from preset gradients
- Customized individually
- Reordered by dragging
- Toggled with any number of color stops
bun run buildThis creates an optimized production build in the dist/ directory.
bun run previewThis serves the production build locally for testing before deployment.
Configuration available in tailwind.config.ts for customizing the design system.
Project configuration in:
tsconfig.json- Base configurationtsconfig.app.json- App-specific settingstsconfig.node.json- Build-time settings
Build and dev server configuration in vite.config.ts.
- Create a feature branch from
main - Make your changes
- Ensure code passes linting:
bun run lint - Commit and push changes
- Create a pull request
This application works on all modern browsers that support:
- ES2020+ JavaScript
- Canvas API
- File API
- CSS Grid and Flexbox
This project is part of the iisu gaming project by Chaotics Labs.
- Built with shadcn/ui components
- Icon set from Lucide React
- Styling with Tailwind CSS