356 lines
9.7 KiB
Markdown
356 lines
9.7 KiB
Markdown
# PNGer Feature Roadmap
|
|
|
|
## Current Features ✅
|
|
|
|
- ✅ Basic image upload (file picker)
|
|
- ✅ Width/height resizing
|
|
- ✅ Aspect ratio control (inside/cover)
|
|
- ✅ Crop positioning (9 positions)
|
|
- ✅ Format conversion (PNG, WebP, JPEG)
|
|
- ✅ Quality adjustment (10-100)
|
|
- ✅ Direct download (no server storage)
|
|
- ✅ Docker deployment
|
|
- ✅ **Live Preview** - Real-time side-by-side comparison with file size analysis
|
|
- ✅ **Dark/Light Mode** - Theme toggle for better PNG transparency inspection
|
|
- ✅ **Modern UI** - Sleek design with smooth transitions and visual feedback
|
|
|
|
---
|
|
|
|
## Phase 1: Enhanced User Experience (Priority: HIGH)
|
|
|
|
### 1.1 Live Preview 🎯 ✅ **COMPLETED**
|
|
**Why**: Immediate visual feedback dramatically improves UX
|
|
**Effort**: Medium | **Impact**: High
|
|
|
|
- [x] Real-time preview of transformations before download
|
|
- [x] Side-by-side comparison (original vs transformed)
|
|
- [x] Show file size reduction/increase
|
|
- [x] Display actual dimensions of output
|
|
- [x] Preview updates on parameter change (debounced)
|
|
- [x] Dark/light mode for transparency inspection
|
|
|
|
**Technical approach:**
|
|
- ✅ Client-side preview using Canvas API for instant feedback
|
|
- ✅ Debounced updates (300ms) for smooth performance
|
|
- ✅ Base64 size estimation with color-coded savings indicator
|
|
|
|
### 1.2 Drag & Drop Interface 🎯 **NEXT PRIORITY**
|
|
**Why**: More intuitive than file picker
|
|
**Effort**: Low | **Impact**: Medium
|
|
|
|
- [ ] Drag & drop zone for image upload
|
|
- [ ] Visual feedback on drag over
|
|
- [ ] Support multiple files (batch processing)
|
|
- [ ] Show thumbnail of uploaded image
|
|
- [ ] Paste from clipboard support (Ctrl+V)
|
|
|
|
**Implementation notes:**
|
|
- Add drop zone with dashed border styling
|
|
- Listen for `dragover`, `dragleave`, `drop` events
|
|
- Extract files from `dataTransfer.files`
|
|
- Add paste event listener for clipboard images
|
|
|
|
### 1.3 Batch Processing
|
|
**Why**: Process multiple images at once
|
|
**Effort**: Medium | **Impact**: High
|
|
|
|
- [ ] Upload multiple images
|
|
- [ ] Apply same transformations to all
|
|
- [ ] Download as ZIP file
|
|
- [ ] Progress indicator for batch operations
|
|
- [ ] Individual vs global settings per image
|
|
|
|
---
|
|
|
|
## Phase 2: Advanced Image Operations (Priority: MEDIUM-HIGH)
|
|
|
|
### 2.1 Smart Presets 🎯 **HIGH VALUE**
|
|
**Why**: Common use cases made easy
|
|
**Effort**: Low | **Impact**: High
|
|
|
|
- [ ] **Web Thumbnail** (300x300, WebP, 75% quality)
|
|
- [ ] **Social Media** (1200x630 for OG images)
|
|
- [ ] **Profile Picture** (square crop, various sizes)
|
|
- [ ] **Email Friendly** (max 1MB, optimized)
|
|
- [ ] **Retina Display** (@2x, @3x multipliers)
|
|
- [ ] **Icon Set** (16, 32, 64, 128, 256px)
|
|
- [ ] Custom preset saving
|
|
|
|
**Implementation notes:**
|
|
- Add preset dropdown in UI
|
|
- Store presets as JSON configs
|
|
- Quick-apply button for each preset
|
|
- LocalStorage for custom user presets
|
|
|
|
### 2.2 Image Optimization
|
|
**Why**: Reduce file size without quality loss
|
|
**Effort**: Low | **Impact**: High
|
|
|
|
- [ ] **Auto-optimize** button (best compression/quality ratio)
|
|
- [ ] Lossless PNG optimization
|
|
- [ ] Strip EXIF metadata (privacy + size)
|
|
- [ ] Progressive JPEG encoding
|
|
- [ ] Show compression statistics
|
|
|
|
### 2.3 Additional Transformations
|
|
**Why**: More creative control
|
|
**Effort**: Medium | **Impact**: Medium
|
|
|
|
- [ ] Rotation (90°, 180°, 270°, custom)
|
|
- [ ] Flip (horizontal/vertical)
|
|
- [ ] Grayscale conversion
|
|
- [ ] Blur effect (with intensity)
|
|
- [ ] Sharpen filter
|
|
- [ ] Brightness/contrast adjustment
|
|
- [ ] Border/padding addition
|
|
|
|
---
|
|
|
|
## Phase 3: Utilitarian Power Features (Priority: MEDIUM)
|
|
|
|
### 3.1 Image Analysis
|
|
**Why**: Understand your images
|
|
**Effort**: Low | **Impact**: Medium
|
|
|
|
- [ ] Display image metadata (dimensions, format, color space)
|
|
- [ ] File size analysis (before/after)
|
|
- [ ] Color palette extraction
|
|
- [ ] Dominant color detection
|
|
- [ ] Transparency detection
|
|
- [ ] Aspect ratio calculator
|
|
|
|
### 3.2 Custom Crop Tool
|
|
**Why**: Precise control over cropping
|
|
**Effort**: High | **Impact**: Medium
|
|
|
|
- [ ] Visual crop selector (drag handles)
|
|
- [ ] Aspect ratio lock
|
|
- [ ] Freeform cropping
|
|
- [ ] Rule of thirds grid overlay
|
|
- [ ] Zoom for precision
|
|
|
|
### 3.3 Watermarking
|
|
**Why**: Brand/protect images
|
|
**Effort**: Medium | **Impact**: Medium
|
|
|
|
- [ ] Text watermark with custom font
|
|
- [ ] Image watermark overlay
|
|
- [ ] Position control (9 positions + custom)
|
|
- [ ] Opacity adjustment
|
|
- [ ] Repeat pattern option
|
|
|
|
### 3.4 Image Comparison Tool
|
|
**Why**: A/B test different settings
|
|
**Effort**: Medium | **Impact**: Low-Medium
|
|
|
|
- [ ] Compare 2-4 versions side-by-side
|
|
- [ ] Slider to reveal differences
|
|
- [ ] Quality vs file size comparison
|
|
- [ ] Export comparison settings
|
|
|
|
---
|
|
|
|
## Phase 4: Workflow & Automation (Priority: LOW-MEDIUM)
|
|
|
|
### 4.1 API Access
|
|
**Why**: Integrate with other tools
|
|
**Effort**: Low | **Impact**: Medium
|
|
|
|
- [ ] Generate API keys in UI
|
|
- [ ] Rate limiting per key
|
|
- [ ] Usage statistics dashboard
|
|
- [ ] Webhook support for async processing
|
|
- [ ] OpenAPI/Swagger documentation
|
|
|
|
### 4.2 Templates & Workflows
|
|
**Why**: Reusable transformation pipelines
|
|
**Effort**: Medium | **Impact**: Medium
|
|
|
|
- [ ] Save transformation pipelines
|
|
- [ ] Chain multiple operations
|
|
- [ ] Share templates via URL
|
|
- [ ] Import/export templates (JSON)
|
|
- [ ] Community template gallery
|
|
|
|
### 4.3 History & Favorites
|
|
**Why**: Quick access to common tasks
|
|
**Effort**: Low | **Impact**: Low
|
|
|
|
- [ ] Recent transformations (local storage)
|
|
- [ ] Favorite presets
|
|
- [ ] Quick re-apply last settings
|
|
- [ ] Clear history button
|
|
|
|
---
|
|
|
|
## Phase 5: Extended Format Support (Priority: LOW)
|
|
|
|
### 5.1 More Input Formats
|
|
**Effort**: Low-Medium | **Impact**: Medium
|
|
|
|
- [ ] AVIF support (next-gen format)
|
|
- [ ] TIFF support
|
|
- [ ] SVG to raster conversion
|
|
- [ ] ICO (favicon) generation
|
|
- [ ] PDF to image (first page)
|
|
- [ ] GIF frame extraction
|
|
|
|
### 5.2 Advanced Output Options
|
|
**Effort**: Medium | **Impact**: Low
|
|
|
|
- [ ] Multi-size export (responsive images)
|
|
- [ ] Generate `<picture>` tag HTML
|
|
- [ ] Create image sprites
|
|
- [ ] Generate CSS for backgrounds
|
|
|
|
---
|
|
|
|
## Phase 6: Enterprise Features (Priority: LOW)
|
|
|
|
### 6.1 User Accounts (Optional)
|
|
**Why**: For managed deployments
|
|
**Effort**: High | **Impact**: Situational
|
|
|
|
- [ ] User authentication
|
|
- [ ] Per-user quotas
|
|
- [ ] Saved presets sync
|
|
- [ ] Usage analytics
|
|
- [ ] Team collaboration
|
|
|
|
### 6.2 Cloud Storage Integration
|
|
**Why**: Direct save to storage
|
|
**Effort**: High | **Impact**: Low-Medium
|
|
|
|
- [ ] S3/MinIO upload
|
|
- [ ] Cloudflare Images integration
|
|
- [ ] Google Drive export
|
|
- [ ] Dropbox integration
|
|
|
|
---
|
|
|
|
## Recommended Next Steps 🚀
|
|
|
|
### Sprint 1 (Week 1): Immediate UX Wins
|
|
**Focus**: Make the tool more intuitive and powerful
|
|
|
|
1. **Drag & Drop Upload** (Phase 1.2) - 2-3 hours
|
|
- Drop zone with visual feedback
|
|
- Clipboard paste support
|
|
- Multiple file selection
|
|
|
|
2. **Smart Presets** (Phase 2.1) - 3-4 hours
|
|
- 6-8 common presets (web, social, profile, etc.)
|
|
- Quick-apply buttons
|
|
- Custom preset saving
|
|
|
|
3. **Keyboard Shortcuts** - 1-2 hours
|
|
- Ctrl+V to paste image
|
|
- Enter to process
|
|
- Ctrl+D to download
|
|
- ? to show shortcuts help
|
|
|
|
**Total effort**: ~8-10 hours | **Impact**: Very High
|
|
|
|
### Sprint 2 (Week 2): Power User Features
|
|
**Focus**: Add functionality for advanced users
|
|
|
|
4. **Additional Transformations** (Phase 2.3) - 4-6 hours
|
|
- Rotate, flip, grayscale
|
|
- Sharpen, blur filters
|
|
- Backend Sharp API extensions
|
|
|
|
5. **Image Analysis** (Phase 3.1) - 2-3 hours
|
|
- Metadata display panel
|
|
- Color palette extraction
|
|
- Transparency detection
|
|
|
|
6. **Auto-Optimize** (Phase 2.2) - 2-3 hours
|
|
- Smart quality detection
|
|
- Format recommendation
|
|
- One-click optimization
|
|
|
|
**Total effort**: ~10-12 hours | **Impact**: High
|
|
|
|
### Sprint 3 (Week 3+): Polish & Advanced
|
|
**Focus**: Batch processing and custom tools
|
|
|
|
7. **Batch Processing** (Phase 1.3) - 6-8 hours
|
|
- Multiple file upload
|
|
- Queue management
|
|
- ZIP download
|
|
|
|
8. **Custom Crop Tool** (Phase 3.2) - 8-10 hours
|
|
- Interactive crop overlay
|
|
- Visual drag handles
|
|
- Aspect ratio controls
|
|
|
|
---
|
|
|
|
## Quick Wins (Low Effort, High Impact) ⚡
|
|
|
|
### Immediate Improvements (< 2 hours each)
|
|
1. ✅ ~~**Live Preview**~~ - Phase 1.1 (COMPLETED)
|
|
2. 🎯 **Drag & Drop** - Phase 1.2 (START HERE!)
|
|
3. 🎯 **Smart Presets** - Phase 2.1
|
|
4. 🎯 **Keyboard Shortcuts** - UX Polish
|
|
5. 🎯 **Copy to Clipboard** - UX Polish
|
|
6. **Image Analysis** - Phase 3.1
|
|
7. **Auto-optimize** - Phase 2.2
|
|
|
|
### UX/UI Polish (1-3 hours each)
|
|
- [x] Dark mode support ✅
|
|
- [ ] Keyboard shortcuts (Ctrl+V paste, Enter to process)
|
|
- [ ] Copy image to clipboard
|
|
- [ ] Undo/redo support
|
|
- [ ] Mobile-responsive design improvements
|
|
- [ ] Toast notifications for actions
|
|
- [ ] Image format auto-detection suggestions
|
|
- [ ] Loading progress bars instead of spinners
|
|
|
|
---
|
|
|
|
## Technical Debt & Infrastructure
|
|
|
|
### Code Quality
|
|
- [ ] Add unit tests (backend)
|
|
- [ ] Add E2E tests (Playwright)
|
|
- [ ] TypeScript strict mode
|
|
- [ ] ESLint + Prettier configuration
|
|
- [ ] CI/CD pipeline (GitHub Actions or Gitea Actions)
|
|
- [ ] Code coverage reporting
|
|
|
|
### Performance
|
|
- [ ] Image processing queue (for heavy operations)
|
|
- [ ] Redis caching for repeated transforms
|
|
- [ ] CDN integration
|
|
- [ ] WebP/AVIF auto-detection based on browser support
|
|
- [ ] Lazy loading for UI components
|
|
- [ ] Service worker for offline support
|
|
|
|
### Security
|
|
- [ ] Rate limiting (prevent abuse)
|
|
- [ ] File type validation (magic bytes check)
|
|
- [ ] Max file size enforcement (configurable)
|
|
- [ ] CORS configuration
|
|
- [ ] CSP headers
|
|
- [ ] Input sanitization audit
|
|
|
|
### Monitoring
|
|
- [ ] Prometheus metrics endpoint
|
|
- [ ] Error tracking (Sentry integration)
|
|
- [ ] Performance monitoring
|
|
- [ ] Usage analytics (privacy-focused)
|
|
|
|
---
|
|
|
|
## Community Ideas
|
|
|
|
Have suggestions? Open an issue on the repository:
|
|
- Feature requests
|
|
- Bug reports
|
|
- Use case discussions
|
|
- Performance improvements
|
|
|
|
**Maintainer**: jason
|
|
**Repository**: https://git.alwisp.com/jason/pnger
|
|
**Last Updated**: 2026-03-08 |