React Native + Expo Router setup with strict TypeScript, path aliases, and dark-first configuration.
1.4 KiB
1.4 KiB
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 glassmorphismsrc/shaders/— SkSL fragment shaders (animations)src/hooks/— React hooks (animation, gyroscope, export)src/stores/— Zustand stores (wallpaper, settings)src/services/— Media access, ML pipelinesrc/theme/— Colors, glass constants, typography, spacingsrc/types/— TypeScript type definitionsmodules/— Expo native modules (Android WallpaperService, iOS Live Photo)
Conventions
- Imports:
@/alias poursrc/ - 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