feature: customer portal #53
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
GroomBook Customer Portal — Build Prompt
Context
GroomBook is a pet grooming business management application. This prompt defines a customer-facing portal — the interface pet parents use to interact with the grooming business. It also includes a staff impersonation mode so employees can see exactly what a specific customer sees, for support and troubleshooting purposes.
The feature set below is informed by competitive analysis of MoeGo, Gingr, DaySmart Pet, Time To Pet, Revelation Pets, PetExec, Groomsoft, ProPet, and Pawfinity — plus SaaS best practices for user impersonation and audit logging from WorkOS, Harness, Authress, and enterprise-ready SaaS patterns.
Application Architecture
Build a React single-page application (
.jsxartifact) with the following characteristics:lucide-reactfor iconographyrechartsfor any data visualizationDesign Direction
Aesthetic: Warm, approachable, and trustworthy — not clinical SaaS. Think "premium veterinary clinic meets boutique hotel." Soft, rounded UI with generous whitespace. Muted earth tones (warm sand, sage green, clay) with a single bold accent color for CTAs. Typography should feel friendly but not childish — a characterful display font paired with a clean humanist sans-serif body font. Subtle texture or grain in backgrounds. Micro-interactions on hover/tap that feel alive, not mechanical.
Anti-patterns to avoid: Purple gradients. Generic dashboards. Pet emoji overload. Clip-art energy. The portal should feel like something a small business owner would be proud to show customers.
Portal Sections & Features
1. Dashboard / Home
The customer's landing page after login. Shows at a glance:
2. Appointment Booking & Management
Book new appointment: Step-by-step flow:
Upcoming appointments list — all future bookings with status (confirmed, pending approval, waitlisted). Each expandable to show full details.
Past appointments — historical log with date, groomer, services rendered, price paid, and link to the grooming report card if one was sent.
Cancellation & reschedule — inline actions with policy display (e.g., "Free cancellation up to 24 hours before. Late cancellation fee: $25.").
3. Pet Profiles
Each pet gets a dedicated profile page:
4. Grooming Report Cards
After each appointment, staff can send a report card. The customer portal displays these as rich, shareable cards:
5. Billing & Payments
6. Communication
7. Account Settings
Staff Impersonation Mode
This is a critical feature for support workflows. When a staff member activates impersonation, they see the portal exactly as the customer sees it — same data, same layout, same permissions — but with clear guardrails.
Activation
Visual Indicators (Non-Dismissable)
When impersonation is active, the entire portal must show unmistakable visual cues that this is not a normal session:
👁 STAFF VIEW — Viewing as [Customer Name] | Reason: [stated reason] | Session started [timestamp] | [End Session button]Permissions During Impersonation
Audit Trail
Every impersonation session logs:
The audit log should be viewable by admin-level staff in the admin panel, filterable by staff member, customer, date range, and action type.
Session Constraints
Data Model (Mock Data)
Populate the prototype with realistic mock data:
Include 2-3 grooming report cards with mock before/after descriptions, behavior notes, and condition observations.
Implementation Notes
useStateanduseReducerfor all state management.What "Done" Looks Like
A single-file React component that renders the complete customer portal with:
Triaged and assigned to CTO for implementation as GRO-45.
This is a substantial feature — the spec covers 7 portal sections plus staff impersonation with full audit trail. CTO will implement as a React SPA per the design direction and architecture outlined here.
Tracking internally as high priority.