Skip to main content

Golden Lotus Mobile Status Audit - 2026-05-24

Scope: mobile app repo at mobileApp, compared against current code and nearby backend/admin state. This is a point-in-time audit; older docs remain historical.

Repo State

  • Branch: main
  • Remote: origin/main
  • Status at audit start: clean after push
  • Latest relevant commit before this docs audit: b6bcd3e feat: add lucky wheel and grouped booking services

Current App Surface

Implemented route groups:

  • Auth: login, register, forgot password.
  • Tabs: home, voucher, point, rank, account.
  • Booking: location/service, time, info, cart, history/detail.
  • Services: list and detail.
  • Branch/map.
  • Offers/vouchers: list, detail, redeem, QR.
  • Membership/profile: QR, point history, edit, settings, privacy, invite.
  • Notifications.
  • Social feed/create/profile.
  • Lucky Wheel.
  • News/article detail.

API Integration Status

The app currently calls Golden Lotus Shop API for:

  • Auth config, password auth, registration, forgot password, logout and profile.
  • Mobile home CMS, banners, articles, events and branch-aware home content.
  • Public branches and spa services.
  • Booking policy, form options, availability, create booking, history and detail.
  • Membership tiers, point summary and point ledger.
  • Voucher packages, my voucher redemptions, redemption mutation and signed QR payload.
  • Event registration.
  • Notification inbox, mark read, mark all read and device registration.
  • Referral summary.
  • Social feed, my social profile and create post.
  • Payment methods and app preferences.
  • Lucky Wheel active wheel, my state, history and spin mutation.

Mock mode still exists by design for local/offline development:

  • EXPO_PUBLIC_USE_MOCK=true uses feature mocks where supported.
  • Staging/production should set EXPO_PUBLIC_USE_MOCK=false.

Mobile Booking Status

Current code:

  • Reads booking policy through lotusMobileBootstrap.bookingPolicy.
  • Reads public branches and service catalog.
  • Uses grouped service display in features/booking/screens/LocationScreen.tsx.
  • Normalizes service category labels in features/services/api.ts for user-facing groups such as Massage Body and Massage Foot.
  • Sends booking note/contact/service/time through booking API.
  • Uses history/detail screens for customer booking records.

Known follow-up:

  • The category grouping is currently client-side normalization. If business wants canonical category groups from the backend, expose a stable group field from the service/product variant API instead of deriving from SKU/name.
  • Boundary QA is still needed for max advance days, timezone edge cases and max party size.

Lucky Wheel Status

Current code:

  • Route: app/lucky-wheel.tsx.
  • Feature: features/lucky-wheel/*.
  • API operations: lotusActiveLuckyWheel, lotusMyLuckyWheelState, lotusMyLuckyWheelSpins, spinLotusLuckyWheel.
  • Spin result comes from server; UI animation is presentation only.
  • Uses idempotency key and refreshes membership/voucher/profile related queries.
  • Notification link type LUCKY_WHEEL opens /lucky-wheel.

Known follow-up:

  • Real-device UAT for animation/result, limited spins, voucher/point awards and unauthenticated state.
  • Native QA for long prize labels and small screens.

Push Notification Status

Current code:

  • features/notifications/useRegisterPushDevice.ts registers a device after auth.
  • EXPO_PUBLIC_PUSH_TOKEN_PROVIDER=expo uses Expo push token.
  • EXPO_PUBLIC_PUSH_TOKEN_PROVIDER=firebase uses Android native device token and falls back to Expo on non-Android platforms.
  • Notification navigation supports booking, voucher, event, campaign/content and Lucky Wheel targets.

Known follow-up:

  • Real device UAT with valid Firebase and/or Expo provider credentials.
  • Token refresh/background notification handling should be tested in release builds.

Environment Status

Current defaults in core/config/env.ts:

  • apiUrl: https://web-golden.azns.vn
  • shopApiUrl: https://web-golden.azns.vn/shop-api
  • useMock: true
  • useLotusAuthApi: true
  • useLotusBookingApi: true
  • pushTokenProvider: expo

Docs updated in this audit:

  • docs/ENVIRONMENT.md
  • docs/API_BACKEND_GAPS.md
  • docs/PROJECT_TRACKING.md

Main Gaps Before Production

  • Provider credentials and UAT: Firebase/Expo push, email/SMS, payment gateway.
  • Social auth/OTP provider decisions: Google, Apple and SMS OTP remain product and provider work, not just mobile UI.
  • POS/staff QR scan verification for voucher/member QR.
  • Performance/UAT with real campaign, notification, booking and voucher data sizes.
  • iOS native build and push behavior still need dedicated Xcode/device QA.

Verification Commands

Run from mobileApp:

npm run lint
npx tsc --noEmit
npm run test:smoke

Optional web smoke:

npx expo start --web --port 8082 --host localhost