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.jsonfiles renamed:KeyNova HousekeepingKeyNova ManagerKeyNova F&BKeyNova 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 scaleHeaderZone.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):
| App | Screens |
|---|---|
| Housekeeping | TaskListScreen, TaskDetailScreen, RoomScreen, ProfileScreen |
| Manager | DashboardScreen, ReportsScreen, NotificationsScreen, ProfileScreen |
| F&B | KotBoardScreen, OrderListScreen, TableLayoutScreen |
| Guest | StayScreen, 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.jsondescriptionfields
Files touched
Approximately 40 files across hmp-mobile-apps:
apps/housekeeping/app.json+ 4 screensapps/manager/app.json+ 4 screensapps/fnb/app.json+ 3 screensapps/guest/app.json+ 3 screenspackages/shared-ui/(new package, ~10 source files)- Workspace
package.jsonupdated
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.
KeyNovaLogois 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-fontintegration 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
| Story | Status before | Status after | Notes |
|---|---|---|---|
| US-021-001 (Mobile branding) | Not Started | Built | D5: full KeyNova rebrand across 4 apps |
| US-021-002 (Shared theme) | Not Started | Built | D5: @hmp/shared-ui package shipped |
| US-021-003 (Header component) | Not Started | Built | D5: HeaderZone shared component |
| US-021-004 (HK live API) | Not Started | Not Started | Phase 2 |
| US-021-005 (Manager live API) | Not Started | Not Started | Phase 2 |
| US-021-006 (F&B live API) | Not Started | Not Started | Phase 2 |
| US-021-007 (Guest live API) | Not Started | Not Started | Phase 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%.