Features
- i18n: Arabic and English via
react-i18next; translations insrc/locales/ - RTL/LTR: Layout direction follows app language (Arabic = RTL). Use
useIsRTL()oruseLayoutDirection()in components - Language switch: Stored in AsyncStorage; a native Alert prompts the user to restart the app when direction changes (required on iOS)
- Auth: Better Auth with Convex; email/password and optional social sign-in. Session-based routing: index redirects to (main) when signed in, (auth) when not; (main) is protected, (auth) is public
- Navigation: Expo Router with
Stack.Protectedfor private/public screens and RTL-aware slide animations; see.cursor/rules/performance.mdcfor patterns - Haptics:
useHapticFeedback()hook and ButtonhapticTypefor tap feedback (e.g. selection on iOS) - No toasts: Auth errors shown as inline labels; language restart uses Alert
- TOON:
@toon-format/toonis used for Token-Oriented Object Notation (TOON) encoding/decoding of LLM prompt responses into avatar motion timelines (token-efficient format)
Source captured: 2026-10-11