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.
**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.