# Lively — Live Wallpapers App ## Stack - React Native (Expo SDK 55+, New Architecture) - TypeScript strict - Expo Router v4 (file-based routing) - @shopify/react-native-skia v2.6+ (GPU shaders SkSL) - react-native-reanimated 3 (animation orchestration) - react-native-gesture-handler (touch/drag) - Zustand + MMKV (state + persistence) - expo-blur (glassmorphism blur backing) ## Architecture - `app/` — Expo Router screens (file-based) - `src/components/glass/` — Design system glassmorphism - `src/shaders/` — SkSL fragment shaders (animations) - `src/hooks/` — React hooks (animation, gyroscope, export) - `src/stores/` — Zustand stores (wallpaper, settings) - `src/services/` — Media access, ML pipeline - `src/theme/` — Colors, glass constants, typography, spacing - `src/types/` — TypeScript type definitions - `modules/` — Expo native modules (Android WallpaperService, iOS Live Photo) ## Conventions - Imports: `@/` alias pour `src/` - Named exports partout sauf screens (default export) - Shaders SkSL compilés via `Skia.RuntimeEffect.Make()` - Uniforms standard: resolution, time, intensity, speed + spécifiques - État global: Zustand, pas de Context API sauf providers Expo ## Design System - Dark-first, glassmorphism - Blur backing via expo-blur - Bordures `rgba(255,255,255,0.10)` 1px - Palette dans `src/theme/colors.ts` - Teintes dérivées des images utilisateur, pas de couleurs d'accent vives