A professional web application designed for Etsy sellers to generate properly sized digital prints in multiple aspect ratios and dimensions, all optimized at 300 DPI for high-quality printing.
- Upload & Process: Drag & drop or browse to upload your artwork (JPG, PNG, SVG)
- Multiple Sizes: Automatically generate all standard print sizes
- 300 DPI Quality: Professional resolution for high-quality printing
- Real-time Preview: See how your artwork looks in each size
- Batch Download: Download all sizes as a convenient ZIP file
- Individual Downloads: Download specific sizes as needed
- 2:3 Ratio: 4×6", 8×12", 12×18", 20×30"
- 3:4 Ratio: 6×8", 9×12", 12×16", 18×24"
- 4:5 Ratio: 8×10", 11×14", 16×20"
- 5:7 Ratio: 5×7", 10×14", 15×21"
- Custom: 11×14" (popular US frame size)
- Smart Cropping: Automatic crop optimization for each aspect ratio
- Crop Editor: Manual crop adjustment with zoom and positioning controls
- Progress Tracking: Real-time processing progress indicators
- Error Handling: Comprehensive validation and error messages
- Responsive Design: Works perfectly on desktop and mobile devices
- Frontend: React 18 with Vite
- Styling: Tailwind CSS
- State Management: Zustand
- Image Processing: HTML5 Canvas API
- File Handling: react-dropzone
- Downloads: JSZip + file-saver
- Icons: Lucide React
-
Clone the repository
git clone <repository-url> cd etsy-print-sizing-app
-
Install dependencies
npm install
-
Start development server
npm run dev
-
Open in browser Navigate to
http://localhost:3000
- Drag and drop your image file or click to browse
- Supports JPG, PNG, and SVG files up to 50MB
- Files are processed entirely in your browser (no server upload)
- View automatically generated previews for all print sizes
- Filter by aspect ratio to focus on specific formats
- Switch between grid and list view modes
- Click "Crop" on any size to open the crop editor
- Adjust positioning and zoom to perfect your composition
- Each size maintains its proper aspect ratio
- Download individual sizes or all sizes as a ZIP file
- Files are named with dimensions and DPI information
- All outputs are optimized at 300 DPI for professional printing
src/
├── components/
│ ├── FileUpload.jsx # Drag & drop file upload
│ ├── PreviewGrid.jsx # Grid of size previews
│ ├── SizeCard.jsx # Individual size preview card
│ ├── CropEditor.jsx # Manual crop adjustment tool
│ ├── DownloadManager.jsx # Download interface
│ └── ErrorBoundary.jsx # Error handling wrapper
├── hooks/
│ └── useFileDownload.js # Download functionality
├── store/
│ └── useAppStore.js # Zustand state management
├── utils/
│ ├── constants.js # Print sizes and settings
│ ├── sizeCalculations.js # Size conversion utilities
│ └── imageUtils.js # Image processing functions
├── App.jsx # Main application component
├── main.jsx # React entry point
└── index.css # Global styles
Edit src/utils/constants.js to modify supported print sizes:
export const PRINT_SIZES = {
'2:3': [
{ width: 4, height: 6, label: '4×6"' },
// Add more sizes...
],
// Add more aspect ratios...
};Adjust image quality in src/utils/constants.js:
export const QUALITY_SETTINGS = {
jpeg: 1.0, // 100% quality for JPEG
png: 1.0 // 100% quality for PNG
};npm run build- Netlify: Connect your Git repository for automatic deployments
- Vercel: Import project and deploy with zero configuration
- GitHub Pages: Use
gh-pagespackage for static hosting - Any Static Host: Upload the
distfolder contents
- Built with Tailwind CSS for easy customization
- Modify
tailwind.config.jsfor theme changes - Update
src/index.cssfor global styles
- Update colors in
tailwind.config.js - Modify header and footer in
src/App.jsx - Replace icons and logos as needed
- Chrome: 90+
- Firefox: 88+
- Safari: 14+
- Edge: 90+
- Client-Side Processing: All image processing happens in your browser
- No Server Upload: Images never leave your device
- No Data Collection: No analytics or tracking
- Secure: Uses modern web standards and security practices
- Fast Processing: Optimized algorithms for quick image generation
- Memory Efficient: Proper cleanup of image resources
- Progressive Loading: Lazy loading for better UX
- Responsive: Smooth performance on all device sizes
- 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
This project is licensed under the MIT License - see the LICENSE file for details.
- Built for the Etsy seller community
- Inspired by the need for professional print preparation tools
- Thanks to the open-source React ecosystem
Dmitriy Parhomenko
- Website: devraiks.com
- GitHub: @DmitriyParhomenko
- Project Repository: etsy-print-sizing-app
For support, feature requests, or bug reports:
- Create an issue on GitHub
- Check the documentation
- Review the code comments for implementation details
Made with ❤️ by Dmitriy Parhomenko for Etsy sellers who want professional-quality prints