# StreamFlow Logo & PWA Icons ## 🎨 Brand Colors **Primary Gradient:** - Start: `#a855f7` (Purple) - End: `#3b82f6` (Blue) **Theme Colors:** - Light Mode Primary: `#a855f7` - Dark Mode Primary: `#a855f7` - Secondary: `#3b82f6` --- ## 📱 PWA Icons (Rounded) All icons feature rounded corners for modern PWA aesthetics: ### Available Sizes (SVG) - ✅ 72x72 (rounded: 16px) - ✅ 96x96 (rounded: 21px) - ✅ 128x128 (rounded: 28px) - ✅ 144x144 (rounded: 32px) - ✅ 152x152 (rounded: 34px) - ✅ 192x192 (rounded: 42px) - ✅ 384x384 (rounded: 84px) - ✅ 512x512 (rounded: 112px) **Location:** `/frontend/public/icons/icon-{size}.svg` **Format:** SVG with purple-blue gradient background, white play button with flow lines --- ## 🖼️ Icon Features 1. **Gradient Background** - Purple to blue diagonal gradient 2. **Play Button** - Clean white triangle (95% opacity) 3. **Flow Lines** - Dynamic curved lines suggesting streaming motion (40% opacity) 4. **Rounded Corners** - Approximately 22% radius of total size 5. **Maskable** - Safe zone for all platform icon cropping --- ## 🌐 Web App Usage ### Favicon - **File:** `/frontend/public/favicon.svg` - **Size:** 32x32px - **Type:** SVG - **Usage:** Browser tab icon ### Manifest Icons All icons referenced in `/frontend/public/manifest.json`: ```json { "icons": [ { "src": "/icons/icon-192x192.svg", "sizes": "192x192", "type": "image/svg+xml", "purpose": "any maskable" } ] } ``` ### HTML Meta Tags ```html ``` --- ## 📦 Android APK Icons For Android builds (Capacitor/Cordova): ### Resource Directories ``` android/app/src/main/res/ ├── mipmap-mdpi/ic_launcher.png (48x48) ├── mipmap-hdpi/ic_launcher.png (72x72) ├── mipmap-xhdpi/ic_launcher.png (96x96) ├── mipmap-xxhdpi/ic_launcher.png (144x144) ├── mipmap-xxxhdpi/ic_launcher.png (192x192) └── mipmap-anydpi-v26/ic_launcher.xml (adaptive) ``` ### Adaptive Icon (Android 8+) Uses rounded SVG icons with safe zone for various launcher shapes. **Conversion Command:** ```bash # Install ImageMagick or use online converter for size in 72 96 144 192; do inkscape -w $size -h $size \ frontend/public/icons/icon-${size}x${size}.svg \ -o android/res/mipmap-*/ic_launcher.png done ``` --- ## 🐧 Linux AppImage Icons For Electron AppImage builds: ### Icon Path **Source:** `/frontend/public/icons/icon-512x512.svg` **Electron Config:** ```json { "build": { "linux": { "icon": "frontend/public/icons/icon-512x512.svg", "category": "AudioVideo" } } } ``` ### Desktop Entry ```ini [Desktop Entry] Name=StreamFlow Exec=streamflow Icon=streamflow Type=Application Categories=AudioVideo;Video;Player; ``` --- ## 🔐 2FA / Security Icons For future 2FA implementation: ### Logo Component **File:** `/frontend/src/components/Logo.jsx` **Usage:** ```jsx import Logo from './components/Logo'; // In component // 2FA QR code header // Sidebar // Notification icon ``` ### 2FA Badge Icon Can overlay small shield icon on Logo component for security contexts. --- ## 🎭 Logo Variations ### Current Implementation - **Main Logo:** Gradient play button with flow lines - **Favicon:** Simplified 32x32 version - **Component:** React component with dynamic sizing ### Future Variants (if needed) - **Monochrome:** White version for dark backgrounds - **Outline:** Line-only version for minimal contexts - **Badge:** Small circular variant without text --- ## 📐 Design Specifications ### Play Button - **Position:** Centered - **Triangle Points:** Left-aligned, pointing right - **Fill:** White (#ffffff) at 95% opacity ### Flow Lines - **Style:** Curved bezier paths - **Stroke:** White 2-4px (scales with size) - **Opacity:** 40% - **Purpose:** Suggest streaming/flow motion ### Corner Radius - Formula: `size * 0.22` (22% of icon size) - Examples: - 72px → 16px radius - 192px → 42px radius - 512px → 112px radius --- ## 🚀 Quick Commands ### View Icons ```bash # Open all icons in browser cd frontend/public/icons python3 -m http.server 8080 # Visit: http://localhost:8080 ``` ### Validate PWA Icons ```bash # Check manifest cat frontend/public/manifest.json | jq .icons # Test with Lighthouse lighthouse http://localhost:12345 --view ``` ### Generate PNG from SVG (if needed) ```bash # Install rsvg-convert sudo apt install librsvg2-bin # Convert all sizes for svg in frontend/public/icons/*.svg; do png="${svg%.svg}.png" rsvg-convert "$svg" -o "$png" done ``` --- ## ✅ Checklist **PWA Setup:** - [x] SVG icons created (8 sizes) - [x] Rounded corners applied - [x] Manifest.json updated - [x] Favicon created - [x] HTML meta tags updated - [x] Theme colors updated to purple-blue - [x] Logo component created **Android APK (Future):** - [ ] Convert SVG to PNG for mipmap directories - [ ] Create adaptive icon XML - [ ] Test on various Android launchers - [ ] Verify safe zone compliance **Linux AppImage (Future):** - [ ] Set icon path in electron-builder config - [ ] Generate .desktop file - [ ] Test icon on Ubuntu/Fedora/Arch - [ ] Verify system tray icon **2FA Integration (Future):** - [ ] Add Logo to 2FA setup page - [ ] Create security badge variant - [ ] Add to email templates - [ ] Include in authenticator app QR codes --- ## 🎨 Color Palette Reference ```css /* CSS Variables for Brand Colors */ :root { --purple-500: #a855f7; --purple-400: #c084fc; --purple-600: #9333ea; --blue-500: #3b82f6; --blue-400: #60a5fa; --blue-600: #2563eb; } /* Gradient */ background: linear-gradient(135deg, #a855f7 0%, #3b82f6 100%); ``` --- ## 📱 Platform-Specific Notes ### iOS Safari - Uses `apple-touch-icon` meta tag - Recommended: 180x180 PNG (use 192x192 SVG) - Background color from manifest.json ### Android Chrome - Uses manifest.json icons - Supports maskable icons (all icons have `purpose: "any maskable"`) - Adaptive to device launcher style ### Desktop PWA - Uses largest available icon (512x512) - SVG format ensures crisp rendering at any scale - Favicon used for browser tab ### Electron/AppImage - Linux: 512x512 recommended - Windows: .ico format (multi-resolution) - macOS: .icns format (if needed) --- ## 🔄 Updates & Maintenance ### Changing Logo Colors Edit gradient stops in all SVG files: ```xml ``` ### Adjusting Corner Radius Update `rx` attribute in `` elements: ```xml ``` ### Version Control When updating logo: 1. Update all SVG files in `/frontend/public/icons/` 2. Update `favicon.svg` 3. Update `Logo.jsx` component 4. Increment `CACHE_NAME` in `service-worker.js` 5. Update manifest.json if needed --- **Logo Status:** ✅ Production Ready **Last Updated:** December 10, 2025 **Format:** SVG (Scalable Vector Graphics) **License:** Proprietary (StreamFlow IPTV Application)