diff --git a/src/application/routes/app/stats.rs b/src/application/routes/app/stats.rs
index a2ec796..2f53af3 100644
--- a/src/application/routes/app/stats.rs
+++ b/src/application/routes/app/stats.rs
@@ -117,6 +117,10 @@ pub(crate) async fn stats_page(
.collect();
let max_grinder_weight = cached.brewing_summary.max_grinder_weight;
+ let has_data = cached.consumption.brews_all_time > 0
+ || cached.roast_summary.unique_origins > 0
+ || !cached.brewing_summary.brewer_counts.is_empty();
+
let template = StatsPageTemplate {
nav_active: "stats",
is_authenticated,
@@ -137,6 +141,7 @@ pub(crate) async fn stats_page(
consumption_30d_weight,
consumption_all_time_weight,
cache_age,
+ has_data,
};
render_html(template).map(IntoResponse::into_response)
diff --git a/templates/pages/home.html b/templates/pages/home.html
index abeaa7e..8c28881 100644
--- a/templates/pages/home.html
+++ b/templates/pages/home.html
@@ -258,7 +258,6 @@ is_authenticated %}
-{% if !stat_cards.is_empty() %}
Stats
@@ -266,6 +265,7 @@ is_authenticated %}
>View all stats →
Aggregated coffee data across origins, consumption, and brewing.
+{% if has_data %}