feat: multi-pet client group booking (closes #10) #31

Merged
ghost merged 2 commits from feat/multi-pet-group-booking into main 2026-03-17 21:36:04 +00:00

2 Commits

Author SHA1 Message Date
Groom Book CTO 16a19eafc1 fix: remove eslint-disable for uninstalled react-hooks plugin; remove unused clientMap (GRO-27)
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-17 21:34:37 +00:00
Groom Book CTO 7de6ff4a55 feat: multi-pet client group booking (closes groombook/groombook#10) (GRO-27)
- Add appointment_groups table: links multiple appointments from one client visit
- Add group_id FK on appointments (nullable, backward-compatible)
- Add GET/POST/PATCH/DELETE /api/appointment-groups endpoints
  - POST creates group record + one appointment per pet atomically (with conflict checks)
  - DELETE soft-cancels all appointments in the group
- Add GroupBooking.tsx page at /group-bookings with:
  - Dynamic pet-slot form (min 2 pets, each with their own groomer/service/end time)
  - Auto-calculates end time from service duration
  - Group card list showing all pets, groomers, and statuses side-by-side
  - Client filter and cancel-all action
- Wire into nav and routing in App.tsx
- Export AppointmentGroup type; add groupId field to Appointment type

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-17 21:34:37 +00:00