Back to Projects

Employee Engagement Platform

B2B SaaS for Gamified Employee Engagement

Overview

Full-stack employee engagement platform spanning React Native mobile (Oxygen) and React web (Uptech) with shared API architecture. RTK Query with custom rehydration logic, 5 Firebase services, Branch.io deep linking, Axios interceptor architecture for auth/device headers, and 19 feature modules using Ducks pattern.

Key Features

  • React Native mobile + React web dashboard sharing API architecture and business logic
  • RTK Query + Redux Persist custom rehydration for instant cached data on app restart
  • 5 Firebase integrations spanning analytics, notifications, feature flags, and real-time sync
  • Branch.io + Firebase Dynamic Links resolver for email confirmation, invites, password reset
  • Dual reducer composition — client state resets on logout while admin config persists
  • Centralized Axios interceptors injecting auth tokens, device info headers, and auto-logout on 401

Tech Stack

Mobile

React Native 0.68TypeScriptRedux ToolkitRTK QueryRedux PersistReanimated 2

Web Frontend

React 17TypeScriptRedux ToolkitReact QueryMaterial UIRechartsStorybook

Services

Firebase AnalyticsFCMRemote ConfigDynamic LinksFirestoreBranch.io

Tools

HygenFormikReact Hook FormRollbari18next

Challenges & Solutions

Cross-Platform Deep Linking

Problem

Email confirmation, team invites, and password reset flows needed to work across iOS, Android, and web with different URL schemes and app states.

Solution

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.

Offline-First Mobile Caching

Problem

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.

Solution

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

Problem

Web dashboard grew to 19 features (polls, shoutouts, rewards, insights, etc.) with interconnected state — needed consistent patterns without creating a maintenance burden.

Solution

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.

Key Achievements

2 Platforms
React Native mobile + React web dashboard
Offline-First
RTK Query + Redux Persist custom rehydration
5 Firebase
Analytics, FCM, Remote Config, Dynamic Links, Firestore
19 Features
Ducks pattern with dual reducer composition