Skip to main content

Resume Prompt — Property #1 Frontend Hero Work

Paste the block below into a fresh Claude Code session whose working directory is C:\CLProjects\HMP.

The prompt picks up after the 2026-05-06 backend exhaustion session, which closed every backend P0 from the property-1 launch readiness audit (87 of ~73 items shipped across 10 batches). Backend code is launch-ready pending Wave 4 sign-off. The remaining gap is exclusively frontend hero work (~14 eng-days) plus Wave 4 release engineering (~20 eng-days, separate ops team).


Paste this:​

I'm resuming a property-1 launch readiness implementation. This session focuses on the FRONTEND HERO WORK — backend P0 is fully closed.

Read these five files to ground yourself in the prior work:

1. hmp-docs/docs/platform-registry/property-1-launch-review-2026-05-06.md (audit verdict — 13 flow reviews, RED/AMBER/GREEN, 73 P0 findings)
2. hmp-docs/docs/platform-registry/property-1-launch-roadmap-2026-05-06.md (5-wave 8-week plan — frontend items live in W2 Track C + W3 Track C/D)
3. hmp-docs/docs/platform-registry/property-1-implementation-progress-2026-05-06.md (87 items shipped — THIS is the authoritative punch list. §3 has the still-pending items.)
4. hmp-web-dashboard/CLAUDE.md (dashboard conventions — KeyNova theme, HeaderZone pattern, shadcn/ui, Satoshi font, relative /api paths)
5. hmp-mobile-apps/CLAUDE.md (RN app structure for the housekeeping PhotoUpload item)

DO NOT re-do anything those files mark as complete. Trust them.

# Starting state (already done — do NOT redo)

ALL 16 repos are clean: local master is in sync with the prior batches.
Confirmed local-master HEADs at session-end 2026-05-06:

hmp-frontdesk-service 9f8b290
hmp-reservation-service f1ae0fd
hmp-housekeeping-service f00ca84
hmp-payment-service 8d546f0
hmp-pos-service ed14685
hmp-guest-service 5f0eceb
hmp-auth-service 2fb17d0
hmp-analytics-service fa423c9
hmp-channel-service 196e7c2
hmp-property-service 656ca2d
hmp-api-gateway 0a7ad92
hmp-shared-packages 1340765
hmp-infrastructure 025edf1
hmp-web-dashboard 5c81d42 ← UNTOUCHED in backend work; this is what the frontend session edits
hmp-docs c958511
hmp-notification-service 5ad1a5f

Nothing was pushed to remote. Prior session's branches all merged --no-ff to LOCAL master.

# Backend P0 surface — DO NOT TOUCH

Every backend P0 from the audit is closed. The progress doc §1 lists 87 items
across 10 passes. If a frontend implementation seems to need a backend tweak,
read the matching backend code FIRST — the gate, endpoint, schema column,
event topic, or DTO field is almost certainly already there. Examples:

- Refund modal needs payment-service refund endpoint → already shipped
- Saved-views frontend needs /reports/v2/saved-views → already shipped
- Verify-email landing needs POST /auth/verify-email → already shipped
- Split-pay form needs CheckOutDto.payments[] → already shipped (W1.A.7 backend)
- ID photo S3 needs presigned-PUT helper → storage.service.ts has SSE + helper
- MenuItem admin UI needs hsnCode + gstRate columns → schema shipped (W2.A.2 backend)

# Remaining work — frontend hero (~14 eng-days)

PRIORITY ORDER (high audit value first, matches roadmap §4 W2 + §5 W3):

GROUP A — TAPE CHART HERO (8 eng-days, sustained focus):
W2.C.1 Wire BarContextMenu + CellContextMenu into v2 shell at
hmp-web-dashboard/src/components/modules/front-desk/tape-chart-v2/tape-chart-v2-shell.tsx:339-372.
Right-click bar → menu opens; click action → mutation fires.
W2.C.2 Replace 'coming in Phase 2' placeholder toasts at lines 365-372
with real handler dispatch (check-in / check-out / cancel).
W2.C.3 Replace v2 chart-grid.tsx body with v1 virtualized renderer
(reuse src/components/modules/front-desk/tape-chart/virtual/virtual-row-renderer.tsx).
Acceptance: 100×30 grid renders in ≤ 1s on a mid-tier laptop.
W2.C.4 Add Reservation.version Int @default(0) for optimistic concurrency +
If-Match header on drag handlers. Test: simultaneous drag → second
write rejected with 412.
W2.C.5 Restore BulkActionToolbar in v2 + OOO range-block action.
W2.C.6 20-spec Playwright suite: drag-move, drag-extend, walk-in click,
context-menu cancel, conflict reject, overlap rejection, virtualization
perf assertion. e2e/tape-chart-*.spec.ts.

GROUP B — DASHBOARD UI (5 eng-days):
W2.A.3 Refund modal at hmp-web-dashboard/src/app/(dashboard)/front-desk/folio/[id]/page.tsx
Backend endpoint exists in payment-service. 1.5d.
W3.D.1 Reports v2 saved-views frontend completeness — backend endpoints all
ready under /api/reports/v2/saved-views/*. 2d.
W2.A.2 MenuItem admin UI + seed migration — admin menu page renders the new
hsnCode + gstRate columns. 1.5d.
W3.E.7 Verify-email landing page — POST to /auth/verify-email with the
token from the welcome email; show success/expired/invalid states.
0.5d.
W1.A.7 Dashboard split-pay form — extends the checkout drawer to accept
payments[] array. Backend DTO + service shipped (W1.A.7 backend).
1.5d.

GROUP C — MOBILE + S3 (3 eng-days):
W3.C.6 Mobile housekeeping <PhotoUpload taskId> in hmp-mobile-apps RN code.
1d.
W1.B.1 ID photo S3 presigned upload — replace data: URL flow at
hmp-web-dashboard/src/app/(dashboard)/front-desk/check-in/[id]/keynova.tsx:444-446, 966
+ DTO at hmp-frontdesk-service/src/checkin/dto/checkin.dto.ts:152-159.
storage.service.ts has the SSE + helper method already. 2d.

# Conventions (still apply)

- Branch: audit/W2.C.X-tape-chart-<slug> or audit/W2.A.3-refund-modal etc.
- Commit format: audit(W*): <message>
- Tests-before-fix per gold-standard charter at
hmp-docs/docs/platform-registry/property-1-gold-standard-fix-plan-2026-04-28.md
- Default theme is KeyNova (Midnight Sovereign palette + Satoshi font).
HeaderZone is the standard page-header component; KpiCard is the
standard metric card on dark zones. shadcn/ui components stay
structurally untouched — only styling/tokens change.
- Do NOT pass NEXT_PUBLIC_API_URL at build time. Frontend uses relative /api.
- Test convention: Vitest with jsdom (src/**/*.{test,spec}.{ts,tsx});
Playwright for e2e (e2e/*.spec.ts). Run from hmp-web-dashboard root.

# Browser-paired requirement

Frontend work that touches UI behaviour (anything beyond a 1-line
typography fix) MUST be verified in a browser before claiming done.
Type-check + Vitest pass != UI works. Use the dev server (`npm run dev`
on port 3020) and walk through the golden path + 2 edge cases per
component. If a browser is not available, say so explicitly rather
than claiming success.

# Workflow

- Start by reading the five files above. Acknowledge them.
- Pick the highest-priority Tape Chart sub-item (W2.C.1) — pair-write
a Vitest spec alongside, then verify in the browser.
- Update property-1-implementation-progress-2026-05-06.md as items close.
- When 4 items are done (or a Tape Chart milestone like "context menus
fully wired" lands), pause and let me review.
- LOCAL master only — feature branches → tests pass → merge --no-ff.
No remote push. No QA deploy.

# What NOT to do

- Do NOT touch any backend service code unless an explicit gap is
discovered (which would surprise me — backend is exhausted).
- Do NOT add new xPrisma casts; see
hmp-docs/docs/platform-registry/xprisma-migration-plan-2026-05-06.md
for the canonical replacement (PropertyServiceClient / GuestServiceClient
/ ReservationServiceClient).
- Do NOT rebuild components from scratch when shadcn/ui equivalents
exist. The dashboard CLAUDE.md lists the standard primitives.

Begin.

Notes for the operator​

  • Pre-flight before any deploy: the backend session queued 16 schema migrations across multiple services. Run the duplicate-detection SQL from property-1-implementation-progress-2026-05-06.md §4 before any prisma migrate deploy is run on a shared environment.

  • Memory: the saved memory entry at C:\Users\AjayNavgale\.claude\projects\C--CLProjects-HMP\memory\project_2026-05-06-property-1-backend-exhausted.md carries the same context. The new session's auto-loaded MEMORY.md index will surface it.

  • Resume prompt is self-contained. It re-anchors any new Claude session in the prior backend work via five reference files. No additional context loading needed.

  • W2.A.4 PineLabs batch settlement is the lone owner-decision item not on either remaining track. 4d to implement OR explicit descope. Decide before launch.