Engage is a React Native habit tracker built with Expo. It focuses on daily task completion, streak tracking, reflective journaling, and local-first backup/restore.
- Expo SDK 55
- React Native 0.83
- React 19.2
- Expo Router
- SQLite via
expo-sqlite - Zustand
- NativeWind with Tailwind CSS v3
- Jest and React Native Testing Library
- Maestro for iOS E2E tests
- Node.js 22.20.0
- pnpm 10.33.4 through Corepack
- Xcode 16.1 or newer for React Native 0.83 iOS builds
- Maestro for E2E testing
corepack enable
pnpm installpnpm start
pnpm ios
pnpm android
pnpm webpnpm lint is configured with --max-warnings 0, so warnings fail the command.
pnpm lint
pnpm typecheck
pnpm test
pnpm test:coverage
pnpm exec expo install --check
pnpm audit --audit-level=moderateThe recommended iOS E2E flow uses a release build with React Native DevTools disabled.
pnpm build:e2e
pnpm test:e2e:productionUseful maintenance commands:
pnpm build:e2e:clean
pnpm test:e2e:clean
pnpm test:e2e:production:single maestro/ios/app-launch.yamlDeployment scripts are wrapped by scripts/deploy.js.
pnpm deploy:check
pnpm deploy:version
pnpm deploy:build
pnpm deploy:submit
pnpm deploy:fullapp/ Expo Router screens and tab navigation
components/ Shared Gluestack UI primitives
constants/ Theme and design-system tokens
docs/ Static support and privacy pages
maestro/ios/ Maestro E2E flows
src/components/ App feature components
src/hooks/ App hooks
src/services/ SQLite, repositories, backup, offline services
src/stores/ Zustand app store
src/types/ Domain types
src/utils/ Date, statistics, and business logic helpers
- Keep native package versions compatible with Expo SDK 55. Use
pnpm exec expo install --checkbefore merging dependency updates. - Keep Tailwind on v3 while using NativeWind 4.x.
- Keep task assignment and completion separate:
completed=falsemeans assigned,completed=truemeans done.