Analytics Platform

Analytics

Traffic overview with area chart, geographic distribution on a geo map, content breakdown treemap, user segment analysis with parallel coordinates, and source distribution.

Total Users

284,521

+12.4%

Page Views

1.2M

+8.1%

Bounce Rate

32.4%

-3.2%

Avg Session

4m 12s

+0.8%
Weekly Traffic
MonTueWedThuFriSatSunMonTueWedThuFriSatSun010K20K30KPage ViewsUnique Users
Traffic Sources
42%22%16%10%6%
Activity Heatmap (Day x Hour)
Mon-0Mon-6Mon-12Mon-18Tue-0Tue-6Tue-12Tue-18Wed-0Wed-6Wed-12Wed-18Thu-0Thu-6Thu-12Thu-18Fri-0Fri-6Fri-12Fri-18Sat-0Sat-6Sat-12Sat-18Sun-0Sun-6Sun-12Sun-18Sessions
Top Pages
/home/pricing/docs/blog/signup/about010K20K30K40K50K
Conversion Funnel
Visitors: 100000 (100%)Signups: 42000 (42%)Activated: 28000 (28%)Subscribed: 12000 (12%)Retained: 8400 (8%)

Implementation

dashboard.tsx
import { AreaChart, DonutChart, HeatmapChart, BarChart, FunnelChart, Sparkline } from "@chartts/react"

export function AnalyticsDashboard() {
  return (
    <div className="space-y-6">
      {/* KPIs */}
      <div className="grid grid-cols-4 gap-4">
        <KPICard label="Total Users" value="284,521" change="+12.4%" sparkline={userTrend} />
        <KPICard label="Page Views" value="1.2M" change="+8.1%" />
        <KPICard label="Bounce Rate" value="32.4%" change="-3.2%" />
        <KPICard label="Avg Session" value="4m 12s" change="+0.8%" />
      </div>

      {/* Main row */}
      <div className="grid grid-cols-3 gap-4">
        <AreaChart data={traffic} x="day" y={["views", "users"]} className="col-span-2 h-72" />
        <DonutChart data={sources} value="count" label="source" className="h-72" />
      </div>

      {/* Heatmap */}
      <HeatmapChart data={activity} x="hour" y="day" value="sessions" className="h-48" />

      {/* Bottom row */}
      <div className="grid grid-cols-2 gap-4">
        <BarChart data={topPages} x="page" y="views" className="h-64" />
        <FunnelChart data={conversion} value="users" label="stage" className="h-64" />
      </div>
    </div>
  )
}