Skip to content

feat: Analytics & Metrics tracking and dashboard (#31) - #32

Merged
akargi merged 1 commit into
Chulilee:mainfrom
devkryssie:main
Aug 19, 2026
Merged

feat: Analytics & Metrics tracking and dashboard (#31)#32
akargi merged 1 commit into
Chulilee:mainfrom
devkryssie:main

Conversation

@devkryssie

Copy link
Copy Markdown
Contributor

Summary

Closes #31 — implements the Analytics & Metrics module.

What's included

New files

File Purpose
src/types/analytics.ts AnalyticsEvent, AnalyticsMetrics, DailyActivityPoint types
src/services/analyticsService.ts In-browser event buffer, trackEvent(), opt-out helpers, metrics aggregation
src/hooks/useAnalytics.ts React hook exposing track, optedOut, metrics, refreshMetrics
src/app/api/v1/analytics/events/route.ts POST collector + GET list API route
src/app/analytics/page.tsx /analytics dashboard page
src/components/MetricCard.tsx KPI card
src/components/ActivityChart.tsx Lightweight SVG bar chart (zero extra deps)
src/components/AnalyticsDashboard.tsx Full dashboard with 7/14/30-day time-range filter
src/components/AnalyticsOptOut.tsx Privacy toggle backed by localStorage
src/components/ListingViewTracker.tsx Zero-render client component for asset page tracking
src/__tests__/analytics.test.ts API route unit tests
src/__tests__/analyticsService.test.ts Client service unit tests

Modified files

  • src/types/index.ts — re-exports analytics types
  • src/components/Navbar.tsx — adds Analytics link
  • src/components/TradePanel.tsx — instruments trade_complete events
  • src/app/assets/[id]/page.tsx — instruments listing_view events

Acceptance criteria

  • Key events instrumented: listing_view, listing_create, trade_complete, match_propose, wallet_connect, wallet_disconnect, page_view
  • Dashboard shows metric cards + bar charts with time-range filtering (7/14/30 days)
  • Opt-out toggle respects user preference via localStorage; events are silently dropped when opted out
  • No new external dependencies added

Testing

npm test -- --testPathPattern="analytics"

Implements issue Chulilee#31 — Analytics & Metrics module.

New files:
- src/types/analytics.ts           — AnalyticsEvent, AnalyticsMetrics types
- src/services/analyticsService.ts — event buffer, trackEvent, opt-out, aggregation
- src/hooks/useAnalytics.ts        — React hook (track, optedOut, metrics, refresh)
- src/app/api/v1/analytics/events/route.ts — POST collector + GET list endpoint
- src/app/analytics/page.tsx       — /analytics dashboard route
- src/components/MetricCard.tsx    — KPI card component
- src/components/ActivityChart.tsx — SVG bar chart (no extra deps)
- src/components/AnalyticsDashboard.tsx — full dashboard with time-range filter
- src/components/AnalyticsOptOut.tsx    — privacy toggle (localStorage)
- src/components/ListingViewTracker.tsx — silent client tracker for asset pages
- src/__tests__/analytics.test.ts       — API route tests
- src/__tests__/analyticsService.test.ts — client service unit tests

Modified:
- src/types/index.ts          — re-exports analytics types
- src/components/Navbar.tsx   — adds Analytics nav link
- src/components/TradePanel.tsx — instruments trade_complete events
- src/app/assets/[id]/page.tsx  — instruments listing_view events

Acceptance criteria met:
- Key events instrumented: listing_view, listing_create, trade_complete,
  match_propose, wallet_connect, wallet_disconnect, page_view
- Dashboard shows metric cards + bar charts with 7/14/30-day time-range filter
- Opt-out toggle respects user preference via localStorage; tracked events
  are silently dropped when opted out
@akargi
akargi merged commit 95e6854 into Chulilee:main Aug 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature: Analytics & Metrics tracking and dashboard

2 participants