Add Web Vitals performance tracking (LCP, INP, CLS, FCP, TTFB)

End-to-end performance metrics tracking: dedicated database table with
percentile aggregation, tracker collection behind data-perf attribute,
/api/send handling, report API endpoints, and Performance dashboard page
with threshold-based metric cards, time-series chart, and per-page breakdown.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Mike Cao 2026-02-08 19:25:20 -08:00
parent 8cd3c03702
commit ce9e2416fb
24 changed files with 1028 additions and 8 deletions

View file

@ -44,6 +44,7 @@
"cities": "Cities",
"city": "City",
"clear-all": "Clear all",
"cls": "CLS",
"cohort": "Cohort",
"cohorts": "Cohorts",
"compare": "Compare",
@ -113,6 +114,7 @@
"exists": "Exists",
"exit": "Exit page",
"false": "False",
"fcp": "FCP",
"field": "Field",
"fields": "Fields",
"filter": "Filter",
@ -126,6 +128,7 @@
"funnels": "Funnels",
"goal": "Goal",
"goals": "Goals",
"good": "Good",
"goals-description": "Track your goals for pageviews and events.",
"greater-than": "Greater than",
"greater-than-equals": "Greater than or equals",
@ -137,6 +140,7 @@
"insight": "Insight",
"insights": "Insights",
"insights-description": "Dive deeper into your data by using segments and filters.",
"inp": "INP",
"invalid-url": "Invalid URL",
"is": "Is",
"is-false": "Is false",
@ -157,6 +161,7 @@
"last-hours": "Last {x} hours",
"last-months": "Last {x} months",
"last-seen": "Last seen",
"lcp": "LCP",
"leave": "Leave",
"leave-team": "Leave team",
"less-than": "Less than",
@ -182,6 +187,7 @@
"my-account": "My account",
"my-websites": "My websites",
"name": "Name",
"needs-improvement": "Needs improvement",
"new-password": "New password",
"none": "None",
"number-of-records": "{x} {x, plural, one {record} other {records}}",
@ -208,8 +214,10 @@
"password": "Password",
"path": "Path",
"paths": "Paths",
"performance": "Performance",
"pixel": "Pixel",
"pixels": "Pixels",
"poor": "Poor",
"powered-by": "Powered by {name}",
"preferences": "Preferences",
"previous": "Previous",
@ -246,6 +254,7 @@
"save": "Save",
"save-cohort": "Save cohort",
"save-segment": "Save segment",
"sample-size": "Sample size",
"screen": "Screen",
"screens": "Screens",
"search": "Search",
@ -303,6 +312,7 @@
"transfer": "Transfer",
"transfer-website": "Transfer website",
"true": "True",
"ttfb": "TTFB",
"type": "Type",
"unique": "Unique",
"unique-events": "Unique events",