TorbatYar/frontend/docs/crm-routing-map.md
Mortezakoohjani e140908034 Ship enterprise CRM frontend with real API wiring and thin app routes.
Connect all CRM pages to the BFF and CRM service, add module docs, and mark CRM available in the SuperApp catalog.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-26 20:58:17 +03:30

81 lines
3.0 KiB
Markdown

# CRM Routing Map
**Date:** 2026-07-26
**Pattern:** Thin `app/crm/**/page.tsx``modules/crm/features/**`
## Root
| Route | File | Module export |
|-------|------|---------------|
| `/crm` | — | Redirect via hub link |
| `/crm/hub` | `app/crm/hub/page.tsx` | `CrmHub` from `pages/hub` |
## Sales portal layout
`app/crm/sales/layout.tsx``createPortalLayout("sales")`
## Sales routes
| URL | Feature module |
|-----|----------------|
| `/crm/sales/dashboard/overview` | `features/sales/dashboards``OverviewDashboard` |
| `/crm/sales/dashboard/sales` | `SalesDashboard` |
| `/crm/sales/dashboard/pipeline` | `PipelineDashboard` |
| `/crm/sales/dashboard/leads` | `LeadDashboard` |
| `/crm/sales/dashboard/activities` | `ActivityDashboard` |
| `/crm/sales/dashboard/calendar` | `CalendarDashboard` |
| `/crm/sales/customers` | `features/sales/customers` |
| `/crm/sales/companies` | `features/sales/companies` |
| `/crm/sales/contacts` | `features/sales/contacts` |
| `/crm/sales/leads` | `features/sales/leads` |
| `/crm/sales/deals` | `features/sales/deals` |
| `/crm/sales/kanban` | `features/sales/kanban` |
| `/crm/sales/pipelines` | `features/sales/pipelines` |
| `/crm/sales/quotes` | `features/sales/quotes` |
| `/crm/sales/activities` | `features/sales/activities` |
| `/crm/sales/tasks` | `features/sales/tasks` |
| `/crm/sales/meetings` | `features/sales/meetings` |
| `/crm/sales/calls` | `features/sales/calls` |
| `/crm/sales/emails` | `features/sales/emails` |
| `/crm/sales/notes` | `features/sales/notes` |
| `/crm/sales/timeline` | `features/sales/timeline` |
| `/crm/sales/documents` | `features/sales/documents` |
| `/crm/sales/campaigns` | `features/sales/scoped``CampaignsPage` |
| `/crm/sales/segments` | `SegmentsPage` |
| `/crm/sales/tags` | `features/sales/tags` |
| `/crm/sales/custom-fields` | `features/sales/custom-fields` |
| `/crm/sales/import` | `ImportPage` |
| `/crm/sales/export` | `features/sales/export` |
| `/crm/sales/reports` | `features/sales/reports` |
| `/crm/sales/analytics` | `features/sales/analytics` |
| `/crm/sales/automation` | `AutomationPage` |
| `/crm/sales/notifications` | `features/sales/admin``NotificationsPage` |
| `/crm/sales/roles` | `RolesPage` |
| `/crm/sales/permissions` | `PermissionsPage` |
| `/crm/sales/integrations` | `IntegrationsPage` |
| `/crm/sales/api-keys` | `ApiKeysPage` |
| `/crm/sales/audit-logs` | `AuditLogsPage` |
| `/crm/sales/settings` | `SettingsPage` |
| `/crm/sales/health` | `HealthPage` |
| `/crm/sales/capabilities` | `CapabilitiesPage` |
## Segment files (each route)
Every route directory includes:
- `page.tsx` — re-export only
- `loading.tsx``LoadingState`
- `error.tsx``ErrorState` + reset
Root: `app/crm/layout.tsx`, `app/crm/not-found.tsx`
## BFF
| Browser path | Upstream |
|--------------|----------|
| `/api/crm/*` | `CRM_SERVICE_URL` / `localhost:8003` |
## Generator
Regenerate routes: `node scripts/generate-crm-routes.mjs`