Files
xtremflow/docs/archive/DEVELOPER_INTEGRATION_CHECKLIST.md
MichaelandClaude Fable 5 60d3f42901 feat: security hardening, streaming overhaul, design polish, tests
Security:
- Replace unsalted SHA-256 password hashing with bcrypt (lazy rehash on login)
- Add authenticated /api/xtream-api gateway: Xtream credentials are injected
  server-side and never sent to the frontend; /api/playlists no longer
  returns passwords
- Redact credentials from all logs (login body, proxy/FFmpeg/scheduler URLs)
- Add auth to recordings, EPG, season-passes and streaming routes
  (HttpOnly session cookie for hls.js; loopback bypass for local FFmpeg)
- Lock player postMessage to same-origin in both directions
- Vendor and pin hls.js 1.6.7 / mpegts.js 1.7.3 (drop CDN @latest)
- Fix rate limiter (client IP was never resolved), add login rate limit,
  restrict CORS, add CSP Report-Only, block private-IP SSRF targets,
  fix path traversal in recording log retrieval, chmod 777 -> 770
- Remove dead HiveService (seeded admin/admin into IndexedDB with SHA-256)
- Fix authMiddleware not populating 'user' context (getPlaylist ignored the
  logged-in user; admin purge always returned 403)

Streaming:
- New FfmpegSessionManager: process registry, idle reaper (4 min live /
  15 min VOD), orphan cleanup at startup, clean SIGTERM shutdown,
  fast-fail with stderr instead of 30 s timeout
- Quality selection (source/high/medium/low) for live and VOD; source mode
  streams with -c:v copy (zero transcoding); selector wired into the player
- Concurrent recordings (MAX_CONCURRENT_RECORDINGS, default 2); conflicts
  retry on the next tick instead of silently failing
- Lower live latency (HLS window 20 -> 10 segments, liveSync 10 -> 3)
- Fix recording log lookup (.mp4 vs .mkv mismatch)

Design:
- Replace hardcoded colors with AppColors tokens (12 files)
- web/theme.css syncs HTML players with the Flutter palette
- DPAD/keyboard navigation (arrow-key focus, player shortcuts)
- Tooltips on player icon buttons, Semantics on content cards
- Remove 7 dead widgets broken since the Stitch merge

Quality:
- bin/test/: 21 unit tests (bcrypt, redaction, traversal, SSRF, recording
  conflicts) plus a quality-selector widget test
- GitHub Actions CI (analyze + test + build web)
- Archive stale status docs into docs/archive/

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 10:07:18 +02:00

9.9 KiB

XtremFlow Theme Redesign - Developer Checklist

Pre-Integration Verification ✓

  • All theme files created and compiled
  • Color palette complete (50+ colors)
  • Typography system defined (15 styles)
  • Animations configured (5 durations + 4 curves)
  • Core widgets redesigned/created (8 widgets)
  • Documentation complete (3100+ lines)
  • Mobile theme configured
  • Glassmorphism effects implemented
  • Responsive grid system ready
  • Accessibility requirements met

Files Created

Theme Foundation

  • ✅ lib/core/theme/app_colors.dart - Color system
  • ✅ lib/core/theme/app_theme.dart - Theme data + typography
  • ✅ lib/mobile/theme/mobile_theme.dart - Mobile variant

New Widgets

  • ✅ lib/core/widgets/glass_container.dart - GlassContainer + GlassCard
  • ✅ lib/core/widgets/hero_carousel.dart - Redesigned carousel
  • ✅ lib/core/widgets/tv_channel_grid.dart - Responsive grid + horizontal list
  • ✅ lib/core/widgets/tv_modern_card.dart - Content card widget
  • ✅ lib/core/widgets/tv_nav_widgets.dart - Navigation system (4 widgets)

Redesigned Widgets

  • ✅ lib/features/iptv/widgets/channel_card.dart - Channel card redesign
  • ✅ lib/core/widgets/hero_carousel.dart - Full redesign

Documentation

  • ✅ DESIGN_SYSTEM.md - Complete design guide (1500+ lines)
  • ✅ THEME_INTEGRATION_GUIDE.md - Integration manual (600+ lines)
  • ✅ THEME_REDESIGN_SUMMARY.md - Executive summary (400+ lines)
  • ✅ THEME_VISUAL_SUMMARY.txt - Visual overview with ASCII art

Next Steps for Developers

Phase 1: Review & Understanding (Est. 30 min)

  • Read THEME_INTEGRATION_GUIDE.md section "Quick Start"
  • Browse DESIGN_SYSTEM.md color palette section
  • Review typography examples in DESIGN_SYSTEM.md
  • Check widget showcase in THEME_INTEGRATION_GUIDE.md

Phase 2: Update Screens (Depends on scope)

For each screen in lib/features/iptv/screens/:

  • Replace old color references with AppColors.*

    // Old
    Color(0xFF6C63FF) → AppColors.primary
    Color(0xFFAAAAAA) → AppColors.textSecondary
    
  • Update text styles to use theme

    // Old
    style: TextStyle(fontSize: 20)
    
    // New
    style: Theme.of(context).textTheme.titleLarge
    
  • Replace spacing values with constants

    // Old
    padding: EdgeInsets.all(16)
    
    // New
    padding: EdgeInsets.all(AppTheme.spacing16)
    
  • Update animations to use theme durations

    // Old
    Duration(milliseconds: 300)
    
    // New
    AppTheme.durationMd
    
  • Replace old widgets with new ones

    // Old static cards → Use TvModernCard
    // Old channel cards → Use new ChannelCard
    // Hero section → Use HeroCarousel
    // Lists → Use TvHorizontalList or TvChannelGrid
    

Phase 3: Component Integration

For screens not yet using new widgets:

  • home_screen.dart - Add HeroCarousel + TvHorizontalList sections
  • browse_screen.dart - Switch to TvChannelGrid + TvTopNavBar
  • details_screen.dart - Use TvModernCard for related content
  • player_screen.dart - Update quality selector colors
  • settings_screen.dart - Update to new button styles
  • Mobile screens - Test responsive layouts

Phase 4: Testing Checklist

Testing Requirements:

  • Desktop Web

    • Homepage loads correctly
    • Colors match design system
    • Hover animations work smoothly
    • Text contrast is readable
    • Responsive grid adjusts columns
    • No visual glitches
  • Mobile Web/Android

    • Layout adapts to small screen
    • Bottom navigation visible
    • Touch targets ≥ 48px
    • Scrolling is smooth
    • No horizontal scroll
    • Text is readable
  • Tablet

    • Landscape layout proper
    • Grid shows 3-4 columns
    • Navigation accessible
    • Large text readable
  • Animations

    • Hover scale works (1.0 → 1.08)
    • Fade transitions smooth (200ms)
    • Loading spinners display
    • No jank at 60fps
  • Colors & Contrast

    • All text ≥ 4.5:1 contrast
    • Focus states visible
    • Gradients render smoothly
    • No color banding

Phase 5: Performance Optimization

  • Profile app with DevTools
  • Check frame rate (target 60fps)
  • Verify image caching works
  • Test scroll performance (large lists)
  • Check memory usage on low-end device
  • Disable shadows during scroll if needed

Phase 6: Deployment

Before deploying to production:

  • Run static analysis (flutter analyze)
  • Check all tests pass
  • Verify no compile warnings
  • Test on actual TV resolution (if possible)
  • Get design team approval
  • Create release notes

Common Implementation Examples

Using Colors

import 'lib/core/theme/app_colors.dart';

// Primary action
FloatingActionButton(
  backgroundColor: AppColors.primary, // Cyan
  child: Icon(Icons.play_arrow),
)

// Text hierarchy
Column(
  children: [
    Text('Title', style: TextStyle(color: AppColors.textPrimary)),
    Text('Subtitle', style: TextStyle(color: AppColors.textSecondary)),
    Text('Helper', style: TextStyle(color: AppColors.textTertiary)),
  ],
)

// Status indicator
Chip(
  backgroundColor: AppColors.success,
  label: Text('Available'),
)

Using Spacing

import 'lib/core/theme/app_theme.dart';

// Standard padding
Padding(
  padding: EdgeInsets.all(AppTheme.spacing16),
  child: content,
)

// Asymmetric spacing
Container(
  padding: EdgeInsets.symmetric(
    horizontal: AppTheme.spacing32, // 32px left/right
    vertical: AppTheme.spacing16,   // 16px top/bottom
  ),
  child: content,
)

// List spacing
ListView.separated(
  itemCount: items.length,
  separatorBuilder: (_, __) => SizedBox(height: AppTheme.spacing12),
  itemBuilder: (_, index) => ItemCard(items[index]),
)

Using Animations

import 'lib/core/theme/app_theme.dart';

// Fade transition
FadeTransition(
  opacity: animation,
  child: ContentWidget(),
)

// Scale animation
AnimatedScale(
  scale: isHovered ? 1.05 : 1.0,
  duration: AppTheme.durationMd,
  curve: AppTheme.curveDefault,
  child: Card(),
)

// Smooth page transition
Navigator.push(
  context,
  PageRouteBuilder(
    transitionDuration: AppTheme.durationLg,
    pageBuilder: (_, __, ___) => NextPage(),
    transitionsBuilder: (_, anim, __, child) =>
        ScaleTransition(scale: anim, child: child),
  ),
)

Using Widgets

// Hero carousel for featured content
HeroCarousel(
  items: featuredShows,
  autoPlay: true,
  height: 400,
)

// Channel grid
TvChannelGrid(
  children: channels.map((ch) => ChannelCard(...)).toList(),
  horizontalSpacing: 20,
  verticalSpacing: 20,
)

// Modern content card
TvModernCard(
  id: show.id,
  title: show.title,
  imageUrl: show.posterUrl,
  rating: '8.7/10',
  year: '2024',
  onPlayTap: () => play(show),
)

// Top navigation
TvTopNavBar(
  title: 'Browse',
  onSearch: () => showSearch(),
  notificationCount: 3,
)

Troubleshooting

Issue: Colors look wrong/washed out

Solution:

  • Ensure scaffoldBackgroundColor: AppColors.background in theme
  • Check for old color overrides in code
  • Verify OLED display settings (pure black should be visible)

Issue: Text is hard to read

Solution:

  • Use textPrimary for main content
  • Use textSecondary for secondary content (≥ 60% opacity)
  • Never use textTertiary on dark backgrounds
  • Check contrast ratio with tool

Issue: Cards don't have glass effect

Solution:

  • Use GlassContainer, not plain Container
  • Ensure BackdropFilter is not constrained
  • Check blur value (default 15.0)

Issue: Animations are jerky/laggy

Solution:

  • Use AppTheme.durationMd instead of hardcoded values
  • Avoid nested AnimationController
  • Profile with DevTools to find culprit
  • Reduce animation complexity on low-end devices

Issue: Responsive grid not adjusting

Solution:

  • Use TvChannelGrid for automatic behavior
  • Check MediaQuery.of(context).size.width breakpoints
  • Ensure Expanded parent for full width
  • Test on multiple screen sizes

Support Resources

Documentation Files

  1. THEME_INTEGRATION_GUIDE.md - How to use the theme
  2. DESIGN_SYSTEM.md - Complete reference guide
  3. THEME_REDESIGN_SUMMARY.md - What changed and why

Code Examples

  • See lib/features/iptv/widgets/channel_card.dart for complex widget
  • See lib/core/widgets/tv_modern_card.dart for card with states
  • See lib/core/widgets/hero_carousel.dart for animations

Quick Reference

// Colors
AppColors.primary        // Main action (Cyan)
AppColors.textPrimary    // Primary text (White)
AppColors.success        // Success state

// Spacing
AppTheme.spacing16       // 16px standard
AppTheme.spacing32       // 32px TV margins
AppTheme.spacing8        // 8px small spacing

// Animation
AppTheme.durationMd      // 300ms standard
AppTheme.curveDefault    // easeInOutCubic

// Radius
AppTheme.radiusMd        // 12px standard
AppTheme.radiusLg        // 16px cards
AppTheme.radiusFull      // 999px circles

Timeline Estimate

Phase Task Est. Time
1 Review documentation 30 min
2 Update 1-2 screens 1-2 hrs
3 Update remaining screens 2-4 hrs
4 Testing (desktop + mobile) 2-3 hrs
5 Bug fixes + refinement 1-2 hrs
6 Final QA + deployment 1 hr
Total 8-13 hrs

Sign-Off Checklist

Before considering this complete:

  • All screens reviewed and updated
  • All tests passing
  • Desktop version looks premium
  • Mobile version is responsive
  • Animations smooth and responsive
  • Color contrast WCAG AA compliant
  • Performance optimized (60fps target)
  • Documentation reviewed
  • Design team approval
  • Ready for production release

Project Status: 🟢 READY FOR INTEGRATION

Last Updated: 2026-03-26 Design System Version: 2.0 Apple TV Modern Quality Level: Production Ready ✅

Let's make XtremFlow look premium! 🚀