Mobile · 2025
CuChat — React Native Social Gaming Messenger
Persian (RTL) social + gaming messenger for iOS/Android: private chat, voice/video calls, friends, online multiplayer games, wallet/VIP/gifts, and push notifications—backed by a Laravel API with realtime WebSockets.
- React Native
- Expo (SDK 54)
- TypeScript
- Expo Router
- NativeWind
- TanStack Query
- Laravel Echo / Reverb
- WebRTC
- Expo Notifications
- Secure Store
- AsyncStorage
- Jest
- RTL / Persian

Overview
What was built
Built a cross-platform social gaming and messaging app with Expo and TypeScript.
Features include real-time chat, WebRTC voice/video calls, online multiplayer games with matchmaking, wallet/VIP payments, gifts, offline message sync, biometric app lock, and Expo push notifications.
Talks to a Laravel API using a custom REST client with Bearer auth and Laravel Echo / Pusher (Reverb) realtime channels.
Architecture is feature-based (app / components / hooks / lib) with React Context + TanStack Query, Expo Secure Store / AsyncStorage, NativeWind (Tailwind), Expo Router, RTL-first UI, and Jest tests.
Challenges
Ship a coherent RTL-first social + gaming experience across iOS/Android; keep chat reliable offline; secure auth/tokens; and wire WebRTC calls + WebSocket presence without brittle realtime sync.
Solutions
Feature modules with shared hooks/lib; Bearer REST client + Echo/Reverb channels; offline chat outbox; Expo Secure Store + biometric lock; TanStack Query for server state; NativeWind RTL UI; WebRTC for calls; Expo Notifications; Jest for quality.