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=trueuses 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.tsfor user-facing groups such asMassage BodyandMassage 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_WHEELopens/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.tsregisters a device after auth.EXPO_PUBLIC_PUSH_TOKEN_PROVIDER=expouses Expo push token.EXPO_PUBLIC_PUSH_TOKEN_PROVIDER=firebaseuses 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.vnshopApiUrl:https://web-golden.azns.vn/shop-apiuseMock:trueuseLotusAuthApi:trueuseLotusBookingApi:truepushTokenProvider:expo
Docs updated in this audit:
docs/ENVIRONMENT.mddocs/API_BACKEND_GAPS.mddocs/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