App Store
iOS
Android

Talking Hands Flipbooks

React NativeTypeScriptFirebaseRevenueCatHerokuLottieReanimatedAsyncStorage
Talking Hands Flipbooks

Talking Hands Flipbooks teaches sign language to children and adults through interactive games, an animated gesture dictionary, and illustrated stories — available on iOS and Android.

The core learning loop combines passive reference (dictionary + stories) with active recall (6 game types). Games aren’t cosmetic — each targets a different learning mechanism: the Memo Game tests visual recognition, the Spelling Game builds muscle memory for the manual alphabet, and the Hidden Object Game reinforces vocabulary in context.

The asset delivery system was a key engineering decision. The app ships with no embedded content — everything (Lottie animations, audio files, images) is downloaded to the device on first launch and updated incrementally. A delta sync mechanism checks server-reported updatedAt timestamps before re-downloading anything, keeping data usage minimal while ensuring content stays fresh.

Monetization uses RevenueCat with a single paid entitlement — premium content is consistently gated, and subscription state is synced by UID so it survives app reinstalls and device switches.

Highlights

  • 6 distinct game types: gesture quiz, guessing game, memory game, spelling game, hidden object, and manual letter practice
  • Animated gesture dictionary with Lottie animations, illustrations, and audio
  • Interactive stories with narrated audio and illustrated pages
  • Intelligent asset cache — delta sync based on timestamps reduces data usage
  • Full monetization with RevenueCat: paywall, premium entitlements, and UID-based login
  • Atomic Design component architecture applied consistently across the app
Technical details

Architecture

React Native 0.75 / TypeScript app with a global AppContextProvider managing user state, assets, and subscription status. Feature modules under a bottom-tab navigator. Two-layer cache: in-memory + RNFS disk cache with 4-day TTL delta sync against the Heroku REST API. RevenueCat handles all subscription logic.

**Framework:** React Native 0.75 + TypeScript. React Navigation 6 (Stack + Bottom Tabs). Atomic Design: atoms / molecules / organisms component hierarchy.

**State:** Global `AppContextProvider` — user auth, downloaded assets, and RevenueCat subscription entitlement in one context. No Redux or external state library.

**Asset pipeline:** On app launch, fetches a manifest from the Heroku API. Compares server `updatedAt` timestamps against locally cached versions. Downloads only changed assets. Stores to device filesystem via RNFS. Re-fetches after 4+ days even without server-reported changes.

**Monetization:** RevenueCat (`react-native-purchases`). Single `paid` entitlement gates premium content. Paywall presented at the appropriate content boundary. UID-based login syncs purchase state across device reinstalls.

**Firebase:** Auth (email/password, Google, Apple), Analytics, FCM push notifications, Dynamic Links.

**Games (6 types):** Gesture Quiz, Guessing Game (Memo), Spelling Game, Hidden Object Game, Manual Letter Game — each with independent game logic, local progress persistence via AsyncStorage, and visual/audio feedback.