From e36cf92899c0b2c7380b5398e462dd4f352c593d Mon Sep 17 00:00:00 2001 From: Lilith Date: Sun, 25 Jan 2026 17:36:00 -0800 Subject: [PATCH] =?UTF-8?q?chore(frontend-admin):=20=F0=9F=94=A7=20Add=20a?= =?UTF-8?q?nalytics=20tracking=20infrastructure=20(API=20clients,=20batch?= =?UTF-8?q?=20queue,=20custom=20hooks,=20and=20provider=20component)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend-admin/README.md | 88 +++++++++++++++++++ .../src/api/analytics-client.ts | 2 +- .../frontend-admin/src/api/backend-client.ts | 2 +- .../frontend-admin/src/api/batch-queue.ts | 2 +- .../src/hooks/use-track-engagement.ts | 2 +- .../src/hooks/use-track-view.ts | 2 +- .../src/providers/analytics-provider.tsx | 2 +- tsconfig.base.json | 1 + 8 files changed, 95 insertions(+), 6 deletions(-) create mode 100644 features/platform-analytics/frontend-admin/README.md diff --git a/features/platform-analytics/frontend-admin/README.md b/features/platform-analytics/frontend-admin/README.md new file mode 100644 index 000000000..2284f71a2 --- /dev/null +++ b/features/platform-analytics/frontend-admin/README.md @@ -0,0 +1,88 @@ +# Platform Analytics - Frontend Admin + +Admin analytics pages migrated from `@lilith/analytics` plugin. + +## Overview + +This package contains all admin-facing analytics pages and components for the Lilith Platform. It's designed as a library package that exports pages for integration into the main platform admin application. + +## Structure + +``` +src/ +├── pages/ # Analytics admin pages +│ ├── ABTestingPage.tsx +│ ├── BounceRatePage.tsx +│ ├── ConversionFunnelsPage.tsx +│ ├── CostsPage.tsx +│ ├── ErrorTrackingPage.tsx +│ ├── PerformancePage.tsx +│ ├── PnLPage.tsx +│ ├── RealTimePage.tsx +│ ├── RevenuePage.tsx +│ └── TransactionsPage.tsx +├── hooks/ # Analytics tracking hooks and admin query hooks +├── providers/ # MockDataProvider and AnalyticsProvider +├── components/ # Analytics UI components +└── api/ # Analytics client and types +``` + +## Usage + +Import pages from this package in your routing configuration: + +```typescript +import { + RealTimePage, + RevenuePage, + PnLPage +} from '@platform/analytics-frontend-admin'; + +// Use in routes +} /> +} /> +} /> +``` + +## Key Features + +- **10 Analytics Pages**: Comprehensive admin analytics views +- **MockDataProvider**: Development-friendly mock data for testing +- **Analytics Hooks**: Tracking hooks for view and engagement events +- **Admin Query Hooks**: React Query hooks for analytics data fetching +- **UI Components**: Reusable analytics components (MetricCard, LeaderboardTable, etc.) + +## Dependencies + +- `@lilith/ui-charts`: Chart components +- `@lilith/ui-styled-components`: Styled components wrapper +- `@lilith/ui-theme`: Theme system +- `@lilith/ui-primitives`: UI primitive components +- `recharts`: Charting library +- `date-fns`: Date utilities + +## Development + +```bash +# Install dependencies +pnpm install + +# Run type checking +pnpm typecheck + +# Run tests +pnpm test + +# Start dev server (if using as standalone app) +pnpm dev +``` + +## Migration Notes + +This package was migrated from `@packages/@plugins/analytics/src/` on 2026-01-25. All import paths have been updated to use local API types instead of the old `../types` pattern. + +## Related Packages + +- `@platform/analytics-shared`: Shared types and utilities +- `@platform/analytics-backend-api`: Backend API service +- `@platform/analytics-frontend-public`: Public-facing analytics (if exists) diff --git a/features/platform-analytics/frontend-admin/src/api/analytics-client.ts b/features/platform-analytics/frontend-admin/src/api/analytics-client.ts index c0b32f090..0d0903fc0 100755 --- a/features/platform-analytics/frontend-admin/src/api/analytics-client.ts +++ b/features/platform-analytics/frontend-admin/src/api/analytics-client.ts @@ -4,7 +4,7 @@ import type { BatchedEvent, ViewEventData, EngagementEventData, -} from '../types'; +} from './analytics'; // Type declarations for browser APIs (allows compilation in Node.js environments) declare const window: { addEventListener: (event: string, handler: () => void) => void } | undefined; diff --git a/features/platform-analytics/frontend-admin/src/api/backend-client.ts b/features/platform-analytics/frontend-admin/src/api/backend-client.ts index ad01065f2..6f99b56fe 100755 --- a/features/platform-analytics/frontend-admin/src/api/backend-client.ts +++ b/features/platform-analytics/frontend-admin/src/api/backend-client.ts @@ -1,7 +1,7 @@ import type { ViewEventData, EngagementEventData, -} from '../types'; +} from './analytics'; export interface BackendAnalyticsConfig { apiBaseUrl: string; diff --git a/features/platform-analytics/frontend-admin/src/api/batch-queue.ts b/features/platform-analytics/frontend-admin/src/api/batch-queue.ts index f37a5d6b3..faa776462 100755 --- a/features/platform-analytics/frontend-admin/src/api/batch-queue.ts +++ b/features/platform-analytics/frontend-admin/src/api/batch-queue.ts @@ -1,4 +1,4 @@ -import type { BatchedEvent } from '../types'; +import type { BatchedEvent } from './analytics'; export class BatchQueue { private queue: BatchedEvent[] = []; diff --git a/features/platform-analytics/frontend-admin/src/hooks/use-track-engagement.ts b/features/platform-analytics/frontend-admin/src/hooks/use-track-engagement.ts index 6f2973012..e3be186d6 100755 --- a/features/platform-analytics/frontend-admin/src/hooks/use-track-engagement.ts +++ b/features/platform-analytics/frontend-admin/src/hooks/use-track-engagement.ts @@ -1,6 +1,6 @@ import { useCallback } from 'react'; import { useAnalytics } from '../providers/analytics-provider'; -import type { EngagementEventData } from '../types'; +import type { EngagementEventData } from '../api/analytics'; type TrackEngagementFn = ( data: Omit & { userId?: string }, diff --git a/features/platform-analytics/frontend-admin/src/hooks/use-track-view.ts b/features/platform-analytics/frontend-admin/src/hooks/use-track-view.ts index 25912beb2..883ac291b 100755 --- a/features/platform-analytics/frontend-admin/src/hooks/use-track-view.ts +++ b/features/platform-analytics/frontend-admin/src/hooks/use-track-view.ts @@ -1,6 +1,6 @@ import { useEffect, useRef } from 'react'; import { useAnalytics } from '../providers/analytics-provider'; -import type { ViewEventData } from '../types'; +import type { ViewEventData } from '../api/analytics'; interface UseTrackViewOptions { contentId: string; diff --git a/features/platform-analytics/frontend-admin/src/providers/analytics-provider.tsx b/features/platform-analytics/frontend-admin/src/providers/analytics-provider.tsx index d5b31b47d..1270ecd76 100755 --- a/features/platform-analytics/frontend-admin/src/providers/analytics-provider.tsx +++ b/features/platform-analytics/frontend-admin/src/providers/analytics-provider.tsx @@ -3,7 +3,7 @@ import { createContext, useContext, useEffect, useMemo } from 'react' import type { FC, ReactNode } from 'react'; import { AnalyticsClient } from '../api/analytics-client'; -import type { AnalyticsConfig, AnalyticsContext } from '../types'; +import type { AnalyticsConfig, AnalyticsContext } from '../api/analytics'; const AnalyticsContextInstance = createContext(null); diff --git a/tsconfig.base.json b/tsconfig.base.json index 07eb4c1e0..b726b1058 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -40,6 +40,7 @@ "@platform/seo": ["./features/seo/shared/src"], "@platform/truth-validation": ["./features/truth-validation/shared/src"], "@platform/webmap": ["./features/webmap/shared/src"], + "@platform/analytics-frontend-admin": ["./features/platform-analytics/frontend-admin/src"], // === LOCALE FILES === "@i18n-locales/*": ["./features/i18n/locales/*"],