React Native + Expo Router setup with strict TypeScript, path aliases, and dark-first configuration.
37 lines
1.4 KiB
Markdown
37 lines
1.4 KiB
Markdown
# 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
|