# TorbatYar Beauty Business Module **Status:** Migrated (first business module in `modules/`) **Route prefix:** `/beauty` (unchanged — routes stay in `app/beauty/`) ## Structure ``` modules/beauty/ ├── components/ # Portal shells, layouts (BeautyPortalShell, createPortalLayout, …) ├── pages/ # Portal page bundles (customer, owner, admin, public, …) ├── features/owner/ # Owner CRUD screens (organizations, customers, catalog, …) ├── design-system/ # BeautyStatusChip, BeautyCards, BeautyTablePage, tokens ├── hooks/ # useBeautyLookups ├── services/ # beauty-business-api.ts ├── constants/ # portals.ts (nav config) ├── types/ # Re-exported API types ├── forms/ # (reserved — owner forms live in features/owner for now) ├── tables/ # (reserved — BeautyTablePage in design-system/) ├── calendar/ # (reserved) ├── charts/ # (reserved) └── utils/ # (reserved) ``` ## Import convention ```typescript import { beautyBusinessApi } from "@/modules/beauty/services/beauty-business-api"; import { CustomerDashboard } from "@/modules/beauty/pages/customer"; import { createPortalLayout } from "@/modules/beauty/components/createPortalLayout"; import { useBeautyLookups } from "@/modules/beauty/hooks/useBeautyLookups"; ``` Legacy shims (deprecated): - `@/lib/beauty-business-api` - `@/lib/beauty-portals` - `@/hooks/useBeautyLookups` ## Boundaries - Must not import `@/modules/healthcare/*`, `@/modules/accounting/*`, or legacy healthcare/accounting components. - May import `@/components/ds`, `@/hooks/useMe`, `@/hooks/useTenantId`, `@/lib/auth`, `@/lib/utils`. ## Related docs - [../../docs/beauty-migration-report.md](../../docs/beauty-migration-report.md) - [../../docs/frontend-architecture.md](../../docs/frontend-architecture.md)