feat: add aggregated dashboard with sparklines and per-website stats#4056
feat: add aggregated dashboard with sparklines and per-website stats#4056petebytes wants to merge 2 commits into
Conversation
Populate the existing empty /dashboard route with an aggregated multi-website dashboard. Includes: - Aggregate stat cards (visitors, page views, bounce rate, visit duration) with sparkline trend charts - Per-website stats table with favicon, visitor/pageview sparklines, bounce rate, and visit duration - Clickable website names that link to individual website details - Date range filter defaulting to last 30 days - Dashboard link added to side and mobile navigation Closes #3362 Closes #3951
|
@petebytes is attempting to deploy a commit to the Umami Software Team on Vercel. A member of the Team first needs to authorize it. |
Greptile SummaryThis PR adds a comprehensive aggregated dashboard view with sparkline charts and multi-website statistics. The implementation includes stat cards showing total visitors, page views, bounce rate, and visit duration, along with a detailed per-website table with trend visualizations. Key Changes:
Critical Issue:
Confidence Score: 2/5
Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
Start[User navigates to /dashboard] --> DashboardPage[DashboardPage Component]
DashboardPage --> DateFilter[DateFilter Component]
DashboardPage --> DashboardView[DashboardView Component]
DashboardView --> FetchWebsites[Fetch websites API<br/>/me/websites]
FetchWebsites --> CheckWebsites{Websites<br/>exist?}
CheckWebsites -->|No| EmptyState[Show empty state]
CheckWebsites -->|Yes| FetchStats[For each website:<br/>Fetch stats & pageviews APIs]
FetchStats --> AggregateData[Aggregate data across<br/>all websites]
AggregateData --> CalculateMetrics[Calculate totals:<br/>visitors, pageviews,<br/>bounce rate, duration]
CalculateMetrics --> RenderCards[Render 4 StatCards]
RenderCards --> StatCard1[Unique Visitors<br/>+ SparkLine]
RenderCards --> StatCard2[Page Views<br/>+ SparkLine]
RenderCards --> StatCard3[Bounce Rate]
RenderCards --> StatCard4[Visit Duration]
CalculateMetrics --> RenderTable[Render WebsiteStatsTable]
RenderTable --> TableRows[For each website:<br/>Stats + 2 SparkLines]
StatCard1 --> BUG[🐛 Bug: .toLocaleString<br/>on string values]
StatCard3 --> BUG
StatCard4 --> BUG
Last reviewed commit: 60736f9 |
String values like bounce rate ("45%") and visit duration ("1m 30s")
should be displayed as-is, while numeric values get locale formatting.
|
Please fix this, this is awesome! |
|
Hi team! Just checking in on this PR — it's been open for a few weeks now and there seems to be some community interest. Is there anything else I should update or change to help move this forward? Happy to address any feedback. Thanks! |
|
The dashboard path is now a custom board so this PR will need to be modified to fit the new functionality. I do like the the sparklines, so they can probably be incorporated into the existing board components. |
|
Thanks for the feedback! Happy to rework this to fit the boards architecture. The main value here is the aggregated multi-website overview (totals + per-site breakdown), so I'm thinking this would work well as a pre-built board type that ships out of the box. Will rebase once the boards branch lands. |
|
Looking forward to this getting merged, I have a bunch of websites and this would be very neat to have. |
|
i'm tracking something like 20+ properties and getting this in ASAP would be super useful |
Summary
Populates the existing empty
/dashboardroute with an aggregated multi-website dashboard, restoring the overview functionality from v2 that many users have been requesting.Closes #3362
Closes #3951
Test plan
/dashboardfrom sidebar/websites/{id}