flea/gro-2236-portal-service-cards
The Book New 'Select Services' cards read svc.price (dollars) and svc.duration, but GET /api/portal/services projects the canonical DB columns basePriceCents/durationMinutes. The mismatch rendered every card as $undefined price and an empty 'min'. Normalize the services payload at fetch time (basePriceCents -> price in dollars, durationMinutes -> duration), tolerating an already-normalized shape. Render price/duration via a formatServicePrice helper that returns null when absent, so the card gracefully hides the field instead of printing $undefined. Adds unit tests for normalizeService and formatServicePrice. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
web
GroomBook web app (extracted from groombook/app monorepo)
Description
Languages
TypeScript
99.5%
CSS
0.3%