client-hub/
├── src/
│ ├── pages/ # Route-level components
│ │ ├── Auth.tsx # Login, signup, password recovery
│ │ ├── Index.tsx # Role-based routing entry point
│ │ ├── admin/ # Admin panel pages (internal team)
│ │ │ ├── AdminDashboard.tsx
│ │ │ ├── AdminClients.tsx
│ │ │ ├── AdminUsers.tsx
│ │ │ ├── AdminFirms.tsx
│ │ │ ├── FirmDetailPage.tsx
│ │ │ ├── AdminAttorneys.tsx
│ │ │ ├── AttorneyDetailPage.tsx
│ │ │ ├── SalesDashboard.tsx # Internal sales KPIs + activity feed
│ │ │ ├── SalesContacts.tsx # Prospect CRM
│ │ │ ├── SalesCallLog.tsx # Sales call logging + AI summaries
│ │ │ └── SalesScheduling.tsx # Calendar OAuth, availability, booking links
│ │ └── workspace/ # Client workspace pages
│ │ ├── WorkspaceDashboard.tsx
│ │ ├── WorkspaceCampaigns.tsx
│ │ ├── WorkspaceCampaignView.tsx
│ │ ├── WorkspaceContacts.tsx
│ │ ├── WorkspaceMeetings.tsx
│ │ ├── WorkspaceCallLog.tsx
│ │ ├── WorkspaceMarkets.tsx
│ │ ├── WorkspaceMarketDetail.tsx
│ │ ├── WorkspaceScheduling.tsx
│ │ └── WorkspaceAccountProfile.tsx
│ │
│ ├── components/
│ │ ├── ui/ # shadcn/ui primitives (49 components)
│ │ │ ├── button.tsx
│ │ │ ├── card.tsx
│ │ │ ├── dialog.tsx
│ │ │ ├── data-table.tsx
│ │ │ ├── input.tsx
│ │ │ ├── select.tsx
│ │ │ ├── table.tsx
│ │ │ ├── tabs.tsx
│ │ │ ├── toast.tsx
│ │ │ └── ... (49 total)
│ │ ├── layout/ # App shell components
│ │ │ ├── AppLayout.tsx
│ │ │ ├── Sidebar.tsx
│ │ │ ├── TopBar.tsx
│ │ │ └── GlobalSearch.tsx
│ │ ├── guards/ # Route protection
│ │ │ ├── ProtectedRoute.tsx
│ │ │ └── RoleGuard.tsx
│ │ ├── shared/ # Reusable cross-feature components
│ │ │ ├── DataTable.tsx
│ │ │ ├── StatCard.tsx
│ │ │ └── EmptyState.tsx
│ │ ├── sales/ # Internal sales CRM components
│ │ │ ├── SalesKPIs.tsx
│ │ │ ├── SalesActivityFeed.tsx
│ │ │ ├── SalesNeedsAttention.tsx
│ │ │ ├── AddProspectDialog.tsx
│ │ │ ├── ProspectDetailDrawer.tsx
│ │ │ ├── LogSalesCallDialog.tsx
│ │ │ ├── SalesCallDetailDrawer.tsx
│ │ │ ├── SummarizeCallButton.tsx
│ │ │ ├── PasteTranscriptDialog.tsx
│ │ │ ├── SalesCalendarCard.tsx
│ │ │ ├── SalesAvailabilitySettings.tsx
│ │ │ └── SalesBookingLinks.tsx
│ │ ├── campaigns/ # Campaign-specific components
│ │ ├── contacts/ # Contact-specific components
│ │ ├── meetings/ # Meeting management components
│ │ └── dashboard/ # Dashboard widgets
│ │
│ ├── hooks/ # Custom React hooks (18 hooks)
│ │ ├── useAuth.tsx # Auth context + hook
│ │ ├── use-toast.ts # Toast notification hook
│ │ ├── use-mobile.tsx # Mobile breakpoint detection
│ │ ├── useAttorneys.ts # Attorney data queries
│ │ ├── useCampaigns.ts # Campaign data queries
│ │ ├── useDebounce.ts # Debounced value hook
│ │ ├── useEnrichedSalesData.ts # Enriched sales join queries
│ │ ├── useGHLImport.ts # GHL import batch operations
│ │ ├── useGHLIntegrations.ts # GHL integration CRUD
│ │ ├── useMobile.ts # Alternative mobile hook
│ │ ├── usePhoneNumberPerformance.ts # Phone number analytics
│ │ ├── useReportingData.ts # Reporting aggregation queries
│ │ ├── useSalesCalls.ts # Sales call CRUD
│ │ ├── useSalesCompanies.ts # Sales company queries
│ │ ├── useSalesMeetings.ts # Sales meeting queries
│ │ ├── useSalesProspects.ts # Sales prospect CRUD
│ │ ├── useSalesStats.ts # Sales KPI aggregation
│ │ └── useSavedFilters.ts # Saved filter state
│ │
│ ├── integrations/
│ │ └── supabase/
│ │ ├── client.ts # Supabase client initialization
│ │ └── types.ts # TypeScript types (manually maintained)
│ │
│ ├── lib/ # Utility modules
│ │ ├── utils.ts # cn() helper, general utilities
│ │ ├── signal-utils.ts # Signal processing helpers
│ │ ├── sales-types.ts # Sales table TypeScript types
│ │ └── attorney-utils.ts # Attorney interface + helpers
│ │
│ ├── contexts/ # React context providers
│ │
│ ├── App.tsx # Router configuration (all routes)
│ └── main.tsx # React entry point
│
├── supabase/
│ ├── config.toml # Edge function config (verify_jwt settings)
│ ├── migrations/ # 108 SQL migration files
│ └── functions/ # 39 Deno edge functions
│ ├── google-calendar-callback/
│ ├── outlook-calendar-callback/
│ ├── get-calendar-availability/
│ ├── create-calendar-event/
│ ├── send-booking-notification/
│ ├── ghl-call-webhook/
│ ├── ghl-sales-webhook/
│ ├── sync-prospects-to-ghl/
│ ├── summarize-sales-call/
│ ├── blitz-enrich-attorney-contacts/
│ └── ... (39 total)
│
├── scripts/ # CLI scripts (Node/tsx)
│ ├── enrich-attorneys.ts # Main enrichment pipeline
│ ├── detect-profile-patterns.ts # Firm URL pattern detection
│ └── dump-record.ts # DB record inspector
│
├── public/ # Static assets
├── netlify.toml # Netlify deployment config
├── vite.config.ts # Vite build configuration
├── tailwind.config.ts # Tailwind CSS config
├── tsconfig.json # TypeScript config
└── package.json # Dependencies + scripts