# 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)