Skip to main content

EP-021: Mobile Apps — Phase 1 Hardening

Phase 1 hardening sprint, 2026-04. Branch in hmp-mobile-apps. Not yet pushed.

The mobile apps got a full KeyNova branding pass in Phase 1 (D5) and gained a shared HeaderZone component plus a centralized theme tokens package. The branding work covers all four apps (HK, manager, F&B, guest) and 14 screens. None of the apps gained any real backend integration this sprint — that's still Phase 2 scope.


D5 — Mobile App KeyNova Branding​

Branch: feat/mobile-keynova-branding (in hmp-mobile-apps)

What was changed​

App identity:

  • All four app.json files renamed:
    • KeyNova Housekeeping
    • KeyNova Manager
    • KeyNova F&B
    • KeyNova Guest
  • Bundle identifiers updated (com.keynova.housekeeping, etc.)
  • App icons set to KeyNova placeholder

Shared package: @hmp/shared-ui (new)

  • theme.ts — Midnight Sovereign color palette, Satoshi font sizes/weights, spacing scale
  • HeaderZone.tsx — KeyNova-branded header used at the top of every screen. Replaces the ad-hoc <View> headers each screen had before.
  • KeyNovaLogo.tsx — placeholder logo (View + Text composition; real asset TBD)
  • BottomNav.tsx — shared bottom navigation
  • All four apps now consume the package via Yarn workspaces

Per-app screens updated (14 total):

AppScreens
HousekeepingTaskListScreen, TaskDetailScreen, RoomScreen, ProfileScreen
ManagerDashboardScreen, ReportsScreen, NotificationsScreen, ProfileScreen
F&BKotBoardScreen, OrderListScreen, TableLayoutScreen
GuestStayScreen, ServicesScreen, FeedbackScreen

Text scrubbing:

  • 0 instances of "HMP" in any of the four apps after the pass
  • All "Hotel Management Platform" references replaced with "KeyNova"
  • App store descriptions updated in app.json description fields

Files touched​

Approximately 40 files across hmp-mobile-apps:

  • apps/housekeeping/app.json + 4 screens
  • apps/manager/app.json + 4 screens
  • apps/fnb/app.json + 3 screens
  • apps/guest/app.json + 3 screens
  • packages/shared-ui/ (new package, ~10 source files)
  • Workspace package.json updated

Tests​

The mobile apps don't have a Jest suite yet (Phase 2 scope). Visual verification was done on Expo Go for each screen against the design reference.


Open Follow-Ups​

These are explicitly carved out of D5 and tracked in project_phase2-phase3-scope.md:

  • Logo asset handoff from design team. KeyNovaLogo is a React Native View+Text composition. Real PNG/SVG (probably also a Lottie variant for splash) is pending.
  • Satoshi font loading via expo-font. All apps currently fall back to system fonts. The shared theme tokens specify Satoshi by name, but the font files aren't bundled. Needs an expo-font integration sprint.
  • Live API integration. All four apps still use mock data fixtures. Hooking them up to the real backend (auth, reservations, tasks, KOTs) is the largest remaining mobile work item.
  • Testing infrastructure. No Jest/Detox setup yet. Phase 2 scope.

Summary​

StoryStatus beforeStatus afterNotes
US-021-001 (Mobile branding)Not StartedBuiltD5: full KeyNova rebrand across 4 apps
US-021-002 (Shared theme)Not StartedBuiltD5: @hmp/shared-ui package shipped
US-021-003 (Header component)Not StartedBuiltD5: HeaderZone shared component
US-021-004 (HK live API)Not StartedNot StartedPhase 2
US-021-005 (Manager live API)Not StartedNot StartedPhase 2
US-021-006 (F&B live API)Not StartedNot StartedPhase 2
US-021-007 (Guest live API)Not StartedNot StartedPhase 2

Story-level status promotions: 3 (US-021-001, -002, -003 → Built). The remaining 10 stories are unaffected by Phase 1 and remain Phase 2 scope. Epic completion moves from 0% to ~23%.