Employee Engagement Platform
B2B SaaS for Gamified Employee Engagement
React Native mobile app with RTK Query + Redux Persist for offline-first caching, 5 Firebase integrations (Analytics, FCM, Remote Config, Dynamic Links, Firestore), and 30+ Hygen code generators. React web dashboard with 19 Ducks feature modules, atomic design component library, React Query + Redux Toolkit dual state management, and Recharts data visualizations.
Key Features
- React Native 0.68 mobile app with TypeScript, Reanimated 2 animations, and i18n (5 languages)
- RTK Query with custom extractRehydrationInfo for offline-first Redux Persist integration
- 5 Firebase services: Analytics events, FCM push, Remote Config feature flags, Dynamic Links, Firestore sync
- 30+ Hygen templates reducing component creation from 15 minutes to 30 seconds
- React web dashboard with atomic design (atoms/molecules/organisms/templates) and Storybook
- Ducks pattern with Entity Adapter for normalized O(1) state lookups across 19 feature modules
Tech Stack
Mobile
Web Frontend
Services
Tools
Challenges & Solutions
Offline-First Mobile Caching
Employee engagement app needed instant access to cached data on app restart — loading screens on every launch hurt adoption for factory workers with intermittent connectivity.
Custom RTK Query extractRehydrationInfo integrates with Redux Persist for seamless cache restoration. refetchOnMountOrArgChange: 30 ensures stale data refreshes automatically. Tag-based invalidation keeps cache consistent without manual management.
19 Feature Modules at Scale
Web dashboard grew to 19 features (polls, shoutouts, rewards, insights, etc.) with interconnected state — needed consistent patterns without creating a maintenance burden.
Ducks pattern with Entity Adapter for normalized state. Each feature self-contained with slice, thunks, selectors, and adapter. State reset on logout clears client state while preserving admin configuration. 30+ Hygen templates enforced consistent patterns across the team.
Cross-Platform Deep Linking
Email confirmation, team invites, and password reset flows needed to work across iOS, Android, and web with different URL schemes and app states.
Built resolver pattern combining Branch.io and Firebase Dynamic Links. Central Links.resolver.ts parses URLs, routes to appropriate handler (email-confirmation, invite, reset-password), and navigates to the correct screen regardless of app state.