A comprehensive icon generation and management tool for creating platform-specific icons
Features β’ Installation β’ Usage β’ Contributing β’ Support
- About
- Features
- Technology Stack
- Prerequisites
- Installation
- Running the Application
- Building for Production
- Usage Guide
- Project Structure
- Configuration
- Contributing
- Code of Conduct
- Support
- Roadmap
- License
- Acknowledgments
- About Roboticela
Roboticela Iconify is a modern, cross-platform desktop application designed to simplify the process of creating and managing icons for various platforms and frameworks. Built with Tauri, React, and TypeScript, it provides developers and designers with powerful tools to generate platform-specific icons from a single source image.
Whether you're building iOS apps, Android applications, web PWAs, desktop applications, or cross-platform frameworks, Iconify helps you create all the required icon sizes and formats with customizable styling options.
- β Free and Open Source - Licensed under AGPL-3.0
- β Cross-Platform - Works on Linux, Windows, and macOS
- β Fast & Lightweight - Built with Tauri and Rust for maximum performance
- β Multi-Platform Support - Generate icons for iOS, Android, Web, Desktop, and more
- β Customizable - Control background color, scale, position, and border roundness
- β Real-Time Preview - See your icons on device mockups before generating
- β Batch Generation - Generate all required icon sizes at once
- β Modern UI - Beautiful, responsive design with dark mode support
- β Actively Maintained - Regular updates and community support
- Background Color - Choose any color for your icon background
- Scale Control - Adjust icon size from 0% to 500%
- Position Control - Fine-tune icon position with X and Y coordinates
- Border Roundness - Customize corner radius for rounded icons
- Real-Time Preview - See changes instantly as you adjust settings
- iOS - iPhone and iPad app icons (all required sizes)
- watchOS - Apple Watch app icons
- Apple TV - tvOS app icons
- macOS - Mac application icons
- ICNS Format - Native macOS icon format support
- Android - Standard Android app icons (all densities)
- Android TV - TV-optimized icons
- Wear OS - Smartwatch icons
- PWA - Progressive Web App icons
- Browser Extensions - Extension icons for Chrome, Firefox, Edge
- React - React app favicons and icons
- Vue - Vue.js app icons
- Angular - Angular app icons
- Next.js - Next.js optimized icons
- Electron - Electron application icons
- Tauri - Tauri application icons (with proper folder structure)
- Native Desktop - Windows native application icons
- Qt - Qt framework icons
- Java (JavaFX/Swing) - Java desktop application icons
- Flutter Desktop - Flutter desktop app icons
- ZIP Download - Download all icons for a platform as a single ZIP file
- Organized Structure - Icons organized by platform and size
- Multiple Formats - PNG, ICO, and ICNS format support
- Progress Tracking - Real-time progress indicator during generation
- Image Upload - Drag and drop or select image files
- Device Mockups - Preview icons on realistic device frames
- Theme Support - Light and dark mode
- Responsive Design - Works on various screen sizes
- Smooth Animations - Powered by Framer Motion
- React 19 - Modern UI library with latest features
- TypeScript 5.9 - Type-safe JavaScript
- TailwindCSS 4 - Utility-first CSS framework
- Framer Motion 12 - Animation library
- React Colorful - Color picker component
- Lucide React - Icon library
- JSZip - ZIP file generation
- Vite 7 - Lightning-fast build tool
- Tauri 2 - Desktop application framework
- Rust - Systems programming language
- @fiahfy/icns - ICNS format generation
- npm - Node package manager
- ESLint - Code linting
- TypeScript ESLint - TypeScript-specific linting
Before installing, ensure you have the following:
π‘ For detailed installation instructions and complete dependency lists, see INSTALL_DEPENDENCIES.md
sudo apt update
sudo apt install libwebkit2gtk-4.1-dev \
build-essential \
curl \
wget \
file \
libxdo-dev \
libssl-dev \
libayatana-appindicator3-dev \
librsvg2-devsudo dnf check-update
sudo dnf install webkit2gtk4.1-devel \
openssl-devel \
curl \
wget \
file \
libappindicator-gtk3-devel \
librsvg2-develsudo pacman -Syu
sudo pacman -S webkit2gtk \
base-devel \
curl \
wget \
file \
openssl \
appmenu-gtk-module \
gtk3 \
libappindicator-gtk3 \
librsvgxcode-select --install- Install Microsoft Visual Studio C++ Build Tools
- Install WebView2 (usually pre-installed on Windows 10/11)
git clone https://github.com/Roboticela/iconify.git
cd iconifyUsing npm:
npm installcd src-tauri
cargo build
cd ..Run the application in development mode with hot-reload:
npm run tauri devThis will:
- Start the Vite development server for the frontend
- Build and run the Tauri application
- Enable hot-reload for both frontend and backend changes
To test the frontend without Tauri:
npm run devThen open http://localhost:5173 in your browser.
Before building for production, ensure you have:
- All dependencies installed - See INSTALL_DEPENDENCIES.md for detailed platform-specific setup
- Node.js 20+ and npm installed
- Rust and Cargo installed
- Platform-specific build tools (WebKit2GTK for Linux, MSVC for Windows, Xcode for macOS)
To verify your setup:
node --version
npm --version
rustc --version
cargo --versionBuild for your current platform:
npm run build
npm run tauri buildThis will:
- Build the frontend (React + Vite)
- Compile the Rust backend
- Bundle the application with Tauri
- Generate platform-specific installers
Desktop builds:
src-tauri/target/release/ # Executables
src-tauri/target/release/bundle/ # Installers
npm run tauri build -- --debugnpm run tauri buildnpm run tauri build -- --verboseAll builds automatically generate SHA256 checksums for integrity verification:
# Build with automatic checksum generation
npm run tauri build # Desktop (Windows, macOS, Linux)Each build artifact gets:
- Individual
.sha256checksum file - Combined
CHECKSUMS.txtmanifest
Manually generate checksums:
npm run checksumsVerify downloads:
# Linux/macOS
sha256sum -c iconify.dmg.sha256
# Windows (PowerShell)
Get-FileHash iconify.exe -Algorithm SHA256For detailed code signing, notarization, and security information, see SIGNING.md.
Frontend build fails:
# Clear cache and reinstall
rm -rf node_modules dist
npm install
npm run buildRust compilation errors:
# Update Rust toolchain
rustup update
# Clean Rust build cache
cd src-tauri
cargo clean
cd ..Missing dependencies:
- See INSTALL_DEPENDENCIES.md for complete dependency lists
Before releasing:
- Update version in
package.jsonandsrc-tauri/tauri.conf.json - Update
CHANGELOG.mdwith release notes (if exists) - Test the application thoroughly in development mode
- Run
npm run tauri buildfor all platforms - Verify checksums are generated
- Test installers on target platforms
- Run security audits:
npm auditandcargo audit - Update documentation if needed
- Launch the Application - Open the built application or run in dev mode
- Select an Image - Click the image selector area to upload your source image
- Choose a Platform - Select the target platform from the header dropdown
- Customize Your Icon - Adjust background color, scale, position, and border roundness
- Preview - View your icon on device mockups in real-time
- Download - Generate and download all required icon sizes as a ZIP file
- Click the color picker to choose a background color
- Use the hex input for precise color values
- The background appears behind your icon image
- Adjust the scale slider (0% to 500%) to resize your icon
- 100% means the icon fills the available space
- Values below 100% create padding around the icon
- Values above 100% can crop the icon (use with position controls)
- Position X - Move icon horizontally (0% = left, 100% = right)
- Position Y - Move icon vertically (0% = top, 100% = bottom)
- Useful for fine-tuning icon placement, especially with scaled icons
- Adjust corner radius in pixels
- 0px = square corners
- Higher values = more rounded corners
- Platform-specific recommendations:
- iOS: 0px (iOS handles rounding automatically)
- Android: 0px (Android handles rounding automatically)
- Web: Varies by platform requirements
- Generates all required sizes for iPhone and iPad
- Includes ICNS format for macOS compatibility
- Icons are automatically rounded by iOS, but you can preview with custom roundness
- Generates icons for all density buckets (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi)
- Android automatically applies adaptive icon masks
- Square icons recommended (Android handles the shape)
- Generates favicon and PWA icon sizes
- Includes multiple formats for browser compatibility
- Follows PWA best practices for icon sizes
- Generates icons in the proper
src-tauri/icons/folder structure - Includes all required sizes for Windows, macOS, and Linux
- Ready to use in your Tauri project
- Select Platform - Choose your target platform from the header
- Customize - Adjust all settings to your preference
- Click Download - The download button generates all icons
- Wait for Generation - Progress bar shows generation status
- Extract ZIP - Unzip the downloaded file to access all icon sizes
The ZIP file contains:
- All required icon sizes for the selected platform
- Proper folder structure (for platforms like Tauri)
- Icons named according to platform conventions
iconify/
β
βββ src/ # React frontend source
β βββ components/ # React components
β β βββ AppHeader.tsx # Header with platform selector
β β βββ ImageSelector.tsx # Image upload component
β β βββ InfoAndColorSelector.tsx # Settings panel
β β βββ PreviewContainer.tsx # Preview area
β β βββ Devices.tsx # Device mockup components
β β βββ ThemeColorPicker.tsx # Color picker
β β βββ ui/ # UI components (buttons, dropdowns)
β β
β βββ contexts/ # React contexts
β β βββ ImageSettingsContext.tsx # Icon generation settings
β β βββ PlatformContext.tsx # Platform selection state
β β βββ ThemeContext.tsx # Theme state management
β β
β βββ lib/ # Utility libraries
β β βββ iconGenerator.ts # Icon generation logic
β β βββ downloadHandler.ts # ZIP download handling
β β βββ utils.ts # Helper functions
β β
β βββ assets/ # Static assets
β β βββ CompanyLogo.png # Roboticela logo
β β
β βββ App.tsx # Main app component
β βββ App.css # App styles
β βββ main.tsx # React entry point
β
βββ src-tauri/ # Tauri/Rust backend
β βββ src/
β β βββ main.rs # Tauri entry point
β β βββ lib.rs # Tauri commands (if any)
β β
β βββ icons/ # Application icons
β βββ capabilities/ # Tauri security capabilities
β βββ Cargo.toml # Rust dependencies
β βββ build.rs # Build script
β βββ tauri.conf.json # Tauri configuration
β
βββ public/ # Public static assets
β βββ Favicon.svg # Favicon
β
βββ .gitignore # Git ignore rules
βββ index.html # HTML entry point
βββ package.json # Node.js package config
βββ tsconfig.json # TypeScript config
βββ vite.config.ts # Vite configuration
βββ LICENSE # AGPL-3.0 license
βββ README.md # This file
The src-tauri/tauri.conf.json file contains Tauri-specific settings:
- App identifier and version
- Window size and title
- Security capabilities
- Bundle configuration
- Platform-specific options
Modify this file to customize the application behavior.
Currently, no environment variables are required. All configuration is handled through the UI.
We welcome contributions from the community! Whether you're fixing bugs, adding features, improving documentation, or spreading the word, every contribution matters.
- Report Bugs - Open an issue on GitHub with detailed information
- Suggest Features - Share your ideas for new features or improvements
- Write Code - Submit pull requests with bug fixes or new features
- Improve Documentation - Help make the docs clearer and more comprehensive
- Share the Project - Star the repository and tell others about it
-
Fork the Repository
# Click the "Fork" button on GitHub, then clone your fork git clone https://github.com/YOUR-USERNAME/iconify.git cd iconify
-
Create a Feature Branch
git checkout -b feature/amazing-feature # or git checkout -b fix/bug-description -
Make Your Changes
- Write clean, readable code
- Follow existing code style and conventions
- Add comments where necessary
- Test your changes thoroughly
-
Commit Your Changes
git add . git commit -m "Add: Brief description of your changes"
Commit message prefixes:
Add:- New featureFix:- Bug fixUpdate:- Improvement to existing featureDocs:- Documentation changesStyle:- Code style changes (formatting, etc.)Refactor:- Code refactoringTest:- Adding or updating testsChore:- Maintenance tasks
-
Push to Your Fork
git push origin feature/amazing-feature
-
Open a Pull Request
- Go to the original repository on GitHub
- Click "New Pull Request"
- Select your fork and branch
- Provide a clear description of your changes
- Reference any related issues
- Use functional components with hooks
- Use TypeScript for type safety
- Follow React best practices
- Use TailwindCSS utility classes for styling
- Keep components small and focused
- Write descriptive variable and function names
- Follow Rust conventions and idioms
- Use
cargo fmtfor formatting - Use
cargo clippyfor linting - Handle errors properly
- Write documentation comments for public APIs
Before submitting a pull request:
- Test your changes in development mode
- Build the application and test the production build
- Test on multiple platforms if possible
- Verify no existing functionality is broken
- Check for console errors or warnings
- A maintainer will review your PR
- They may request changes or ask questions
- Make any requested updates
- Once approved, your PR will be merged
- Your contribution will be credited
We are committed to providing a welcoming and inclusive environment for all contributors, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
Positive Behavior:
- Being respectful and inclusive
- Being patient and welcoming to newcomers
- Accepting constructive criticism gracefully
- Focusing on what's best for the community
- Showing empathy towards others
Unacceptable Behavior:
- Harassment, trolling, or derogatory comments
- Personal or political attacks
- Publishing others' private information
- Any conduct inappropriate in a professional setting
Instances of unacceptable behavior may be reported to the project maintainers. All complaints will be reviewed and investigated promptly and fairly. Maintainers have the right to remove, edit, or reject comments, commits, code, issues, and other contributions that don't align with this Code of Conduct.
Need help? We're here for you!
For bug reports, feature requests, or technical issues:
π Open an Issue
When reporting a bug, please include:
- Operating system and version
- Application version
- Steps to reproduce the issue
- Expected vs actual behavior
- Screenshots (if applicable)
- Error messages or logs
- π GitHub: Roboticela/iconify
- β Star the Project: Show your support by starring the repository!
Q: Is this application free to use?
A: Yes! It's completely free and open-source under the AGPL-3.0 license.
Q: Can I use this for commercial purposes?
A: Yes, but you must comply with the AGPL-3.0 license terms. Any modifications made to the software that is used over a network must be made available to users.
Q: What image formats are supported?
A: The application supports common image formats including PNG, JPEG, SVG, and WebP.
Q: Can I customize the generated icons?
A: Yes! You can adjust background color, scale, position, and border roundness through the UI.
Q: What if I find a security vulnerability?
A: Please report security issues responsibly by opening a GitHub issue or contacting the maintainers directly.
- Batch Processing - Generate icons for multiple platforms at once
- Icon Templates - Pre-configured templates for common use cases
- Export Formats - Additional format support (SVG, WebP)
- Icon Library - Built-in library of common icons
- History - Save and recall previous icon configurations
- Presets - Save and share custom icon presets
- CLI Tool - Command-line interface for automation
- Plugin System - Extensible platform support
- Cloud Sync - Optional cloud backup of configurations
- Multi-language Support - Internationalization (i18n)
v0.1.0 (Current)
- Initial release
- Multi-platform icon generation
- Customizable icon settings
- Real-time preview
- ZIP download functionality
- Dark mode support
See Releases for detailed changelog.
This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
β You CAN:
- Use the software for any purpose
- Study how the software works and modify it
- Distribute copies of the software
- Distribute modified versions of the software
- Use the software commercially
- Disclose your source code when distributing
- Include the original license and copyright notice
- State any changes made to the original code
- Make your modified source code available under AGPL-3.0
- If you run a modified version on a server/network, provide source access to users
β You CANNOT:
- Hold the authors liable for damages
- Use the authors' names for promotion without permission
The AGPL-3.0 license is similar to GPL-3.0 but adds an important provision: if you modify this software and make it available over a network (e.g., as a web service), you must also make the complete source code available to users of that service.
Full License Text: See the LICENSE file for complete terms and conditions.
We chose the AGPL license to ensure that improvements to this software remain open and available to the community, even when the software is used as a service. This protects the rights of end users and promotes collaboration.
This project wouldn't be possible without these amazing open-source projects and communities:
- Tauri - For the incredible desktop application framework
- React - For the powerful UI library
- Rust - For performance and safety
- Vite - For lightning-fast development experience
- TailwindCSS - For beautiful, utility-first styling
- Framer Motion - For smooth animations
- React Colorful - For color picking
- JSZip - For ZIP file generation
- @fiahfy/icns - For ICNS format support
- Lucide React - For comprehensive icon sets
- TypeScript - For type safety
- All the contributors who have helped improve this project
- The open-source community for inspiration and support
- Users who provide feedback and report issues
- Free Software Foundation - For promoting software freedom
- GitHub - For hosting and collaboration tools
- All the developers who contribute to open-source
Roboticela is dedicated to creating high-quality, open-source software solutions that empower developers and designers.
To build innovative, accessible, and privacy-focused software that respects user freedom and promotes open collaboration.
This Iconify tool is proudly developed and maintained by Roboticela. We believe in:
- π Open Source - Transparency and community collaboration
- π Privacy - Your data belongs to you
- π Innovation - Modern technologies and best practices
- π Accessibility - Software for everyone, everywhere
- π Sustainability - Building for the long term
- π GitHub: github.com/Roboticela
- π§ Email: contact@roboticela.com
- π Project Repository: github.com/Roboticela/iconify
Check out our other open-source projects on our GitHub profile. We're always working on new ideas and welcome collaboration!
If you find our projects useful:
- β Star our repositories on GitHub
- π Report bugs and suggest features
- π€ Contribute code or improve documentation
- π£ Spread the word and share with others
Thank you for using Roboticela Iconify. We hope it helps streamline your icon generation workflow and contributes to your project's success.
Built with β€οΈ by Roboticela
Β© 2025 Roboticela. Licensed under AGPL-3.0.
β If you find this project useful, please consider giving it a star on GitHub! β