← All projects
React Native 0.79.6React 19TypeScriptRedux ToolkitTanStack QueryNativeWindSkiaOpenTelemetry 2025+

Selfie+

Mobile loyalty app for the Selfie Time ecosystem — Instagram Stories sharing, QR transactions, vouchers, points, promo games, and end-to-end telemetry.

Overview

React Native mobile app for the Selfie Time loyalty program, shipped across iOS + Android. Covers 20 feature domains: auth, profile, vouchers, points/badges, transactions, gallery, sharing, news feeds, surveys, queue, scan, promo games, app updates, and FAQ/legal. Recently led the upgrade to React Native 0.79.6 New Architecture (bridgeless) + React 19, with full OpenTelemetry instrumentation (custom AxiosOTelInterceptor + MobileOTelService) and Firebase Crashlytics.

Architected around a feature-folder structure (src/features/<domain>/) with co-located screens, hooks, and data slices. State is split: Redux Toolkit + Redux Persist (AsyncStorage) for session/user, TanStack Query v5 for server state with query-key cache invalidation. Deep links via selfietime.id://.

Key Features

Auth & Onboarding

  • Google, Apple, Facebook social login + email registration with verification
  • Forgot password, name alphabet validation, profile-completion prompt
  • Registration with location + outlet selection

Profile

  • My Profile redesign with QR code user ID
  • User info edit (name/email/phone/DOB/city/province)
  • Delete account flow (iOS gated), About us screen

Notifications

  • FCM integration with token sync to DB; Notifee migration (replaced legacy push-notification)
  • Local + scheduled notifications, per-notification read/unread, realtime badge
  • Voucher expiry reminders at 9 AM, background message handling

Vouchers & Loyalty

  • My Voucher: valid/invalid, sold-out state, grayscale expired, valid-from dates
  • Buy Voucher + BuyVoucherDetail with query invalidation + birthday voucher logic
  • Birthday gift: 7-day claim window, next-voucher chain, claims tracking
  • Request refund form (WhatsApp deep-link)

Points, Badges & Rewards

  • PointSaya + PointTransactionHistory (auto-refresh, pull-to-refresh)
  • PointsDetail with badge icons, locking logic, carousel
  • Redeem history hook; point expiry info + movement history (in flight)

Transactions & Gallery

  • Transaction history with status filter, pin, membership flag
  • TransactionDetail: locked/unlocked photos, gallery open, voucher calc, video support
  • Image + video download (URL validate, MIME, CameraRoll save, armeabi-v7a fallback)
  • Gallery lightbox w/ video; VideoThumbnail + thumbnail caching
  • Transaction feedback/survey modal (good/bad, employee attribution)
  • Bundle transactions (cross-sell child image queries)

Sharing / Instagram Stories

  • Native iOS Instagram Stories sharing module
  • StoryComposition: Simple (cross-platform) + ViewShot (Skia background capture)
  • Background image + watermark share utils, FileProvider on Android

News Feeds & Content

  • NewsFeed (all / video / gallery / articles)
  • BlogDetail + YouTube viewer with autoplay + shorts-like overlay
  • Instagram feed list + open-in-instagram
  • TiptapHtmlRenderer for rich content

Queue / Antrian

  • Queue page + QueueDetail UI + QueueMonitor
  • MyQueue animated status badge, focus-aware polling, haptic feedback

Scan / QR

  • ScanQR screen + bottom tab for transaction validation

Camera & Photo Tools

  • Image cropper, camera (Android foreground/focus gate)
  • Color matrix grayscale for expired images

Promo Games

  • THR Catcher: full game engine (GameCanvas/GameItem), level auto-advance, balance/HUD, claim-reward API, debug logger
  • Ocean Catcher: assets + integration (merged)
  • Claw Game 17an: in flight (unmerged)

App Update Policy

  • Version checking + block updater if newer
  • Soft update prompt + blocking gate with version headers (in flight)

FAQ / Legal / Terms

  • FAQ screen with dropdown, Privacy Policy + Terms of Usage, refund timeframes

Telemetry & Observability

  • OpenTelemetry: AxiosOTelInterceptor + MobileOTelService + CriticalOperations
  • Dev-only logger utility (replaces console.*)
  • ErrorBoundary + Crashlytics + global error handler

Tech Stack

  • React Native 0.79.6 (New Architecture / bridgeless) + React 19 + TypeScript
  • Redux Toolkit + Redux Persist (AsyncStorage); TanStack Query v5 for server state
  • React Navigation v7 (native-stack + bottom-tabs + material-top-tabs)
  • NativeWind v4 (Tailwind CSS), React Hook Form + Zod
  • Skia for image processing; react-native-image-crop-picker, view-shot, video, share
  • Notifee + Firebase (FCM, Crashlytics, Analytics, Messaging)
  • AppsFlyer attribution; react-native-maps + Geolocation
  • OpenTelemetry end-to-end (custom interceptor + service)
  • Jest tests, patch-package, ProGuard, 16KB Android page-size support

Role

Fullstack Developer at PT Intinya Technology. Own upgrades, performance work, and feature implementation end-to-end across 20 feature domains. Coordinate with UI/UX team on design implementation and with backend on the Laravel/Go services that power the app.