Add frontend/modules/loyalty with types, API client, design system, feature pages and thin App Router routes under app/loyalty/. BFF proxy at app/api/loyalty/. Include loyalty frontend docs. Co-authored-by: Cursor <cursoragent@cursor.com>
4.2 KiB
4.2 KiB
Beauty API Connection Report
Date: 2026-07-26
Client: modules/beauty/services/beauty-business-api.ts
BFF: /api/beauty-business/* → :8011
Connection Architecture
Browser (beauty pages)
→ beautyBusinessApi (tenant + JWT)
→ Next.js BFF /api/beauty-business/[...path]
→ beauty-business-service :8011
No mock data. All list/create/mutation calls use beautyBusinessApi with X-Tenant-ID and Bearer token.
API Resources — Frontend Coverage
| API Resource | Methods in Client | UI Surfaces |
|---|---|---|
/health, /capabilities, /metrics |
GET | Hub, dashboards, monitoring |
organizations |
list, get, create, update, delete | Owner, admin |
branches |
list, get, create, update, delete | Owner, admin, booking forms |
customers |
list, get, create | Owner, admin, customer portal, booking |
staff |
list, get, create | Owner, admin, staff portal, schedules |
service-categories |
list, get, create | Owner catalog |
services |
list, get, create | Owner catalog, public site, booking |
staff-schedules |
list, get, create | Owner booking, staff portal |
waiting-list |
list, get, create | Owner, reception queue/walk-in |
treatment-rooms |
list, get, create | Owner salon |
stations |
list, get, create | Owner salon |
branch-policies |
list, get, create | Owner salon |
package-definitions |
list, get, create | Owner, customer, public |
membership-plans |
list, get, create | Owner, customer |
commission-rules |
list, get, create | Owner, staff commission page |
marketing-campaigns |
list, get, create | Owner, public campaigns |
loyalty-integrations |
list, get, create | Owner integrations tab |
communication-integrations |
list, get, create | Owner integrations tab |
integration-dispatches |
list, get, create | Owner integrations tab |
appointments |
list, get, create, update, confirm, check-in, complete, cancel, no-show, history | Owner, reception, customer, staff, public book |
settings |
list, upsert | Owner settings, admin settings |
permissions/catalog |
GET | Owner settings, admin permissions |
audit |
list | Workspace detail drawers |
external-providers |
list, get, create, update, delete | Owner integration pages |
Workflow Actions Connected
| Action | API Endpoint | UI Trigger |
|---|---|---|
| Confirm appointment | POST .../confirm |
Owner table, reception check-in |
| Check-in | POST .../check-in |
Owner table, reception check-in |
| Complete | POST .../complete |
Owner table, reception check-out |
| Cancel | POST .../cancel |
Owner table, reception |
| No-show | POST .../no-show |
Owner table, reception |
Cross-Module Integrations (Real Links, Not Mocks)
| UI Surface | External Module | Behavior |
|---|---|---|
| Customer invoices/payments | /accounting/* |
Navigation + empty state |
| Customer loyalty | Loyalty API via beauty integrations list | Read from loyaltyIntegrations |
| Reception payments | /accounting |
Explicit link |
| Owner CRM/accounting integration | externalProviders filtered by kind |
Real list from API |
API Methods Not in Backend (Documented)
These permissions exist in backend definitions but routes are create/list/get only — client has no update/delete stubs:
- customers, staff, service-categories, services, schedules, waiting-list, rooms, stations, policies, packages, memberships, commissions, marketing campaigns, integrations
When backend adds PATCH//delete, add methods to beauty-business-api.ts and enable updateFn/deleteFn in resource configs.
TanStack Query Keys
Pattern: ["beauty", tenantId, resource, ...params]
Lookups: ["beauty", tenantId, "lookups", entity]
Invalidation on mutation: resource queryKey + lookups
Error Handling
BeautyBusinessApiError→ toast message + ErrorState retry- 401 → session refresh via
getValidAccessToken/refreshSession - 403 →
PermissionDeniedState - Network failure → Persian connection error message