← back to Ventura Claw Leads
feat(admin): surface share-count on dashboard stat row
c5e7571c96c5559816a9634afb1c7af8326adb44 · 2026-05-07 08:05:52 -0700 · Steve Abrams
Adds a 6th stat card (Shares · all-time) alongside Total/Last 30d/Delivered/
Pending/Unread/Profile views/Shares. Closes the loop on tick 30 so claimed
business owners see when their listing is being shared, not just messaged
or viewed. Raw stat query extends with a single subselect on businesses.share_count.
Tests stable at 46/46.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Files touched
M routes/admin.jsM views/admin/dashboard.ejs
Diff
commit c5e7571c96c5559816a9634afb1c7af8326adb44
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Thu May 7 08:05:52 2026 -0700
feat(admin): surface share-count on dashboard stat row
Adds a 6th stat card (Shares · all-time) alongside Total/Last 30d/Delivered/
Pending/Unread/Profile views/Shares. Closes the loop on tick 30 so claimed
business owners see when their listing is being shared, not just messaged
or viewed. Raw stat query extends with a single subselect on businesses.share_count.
Tests stable at 46/46.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---
routes/admin.js | 3 ++-
views/admin/dashboard.ejs | 5 +++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/routes/admin.js b/routes/admin.js
index e0b9055..4338579 100644
--- a/routes/admin.js
+++ b/routes/admin.js
@@ -29,7 +29,8 @@ router.get('/', async (req, res, next) => {
(SELECT COALESCE(SUM(n), 0)::int FROM business_views
WHERE business_id = $1 AND day > CURRENT_DATE - interval '30 days') AS views_30d,
(SELECT COALESCE(SUM(n), 0)::int FROM business_views
- WHERE business_id = $1 AND day = CURRENT_DATE) AS views_today
+ WHERE business_id = $1 AND day = CURRENT_DATE) AS views_today,
+ (SELECT COALESCE(share_count, 0)::int FROM businesses WHERE id = $1) AS shares_total
FROM business_interest WHERE business_id = $1
`, [biz.id]);
const recent = await db.many(`
diff --git a/views/admin/dashboard.ejs b/views/admin/dashboard.ejs
index 1ddf3d8..ddabcab 100644
--- a/views/admin/dashboard.ejs
+++ b/views/admin/dashboard.ejs
@@ -39,6 +39,11 @@
<p style="font-family:var(--serif);font-size:36px;color:var(--brass);margin:0"><%= stats.views_30d %></p>
<p style="font-size:11px;color:var(--fg-muted);margin:4px 0 0;letter-spacing:0.06em;text-transform:uppercase">last 30 days · <%= stats.views_today %> today</p>
</div>
+ <div class="side-card" style="text-align:center">
+ <h3>Shares</h3>
+ <p style="font-family:var(--serif);font-size:36px;color:var(--brass);margin:0"><%= stats.shares_total %></p>
+ <p style="font-size:11px;color:var(--fg-muted);margin:4px 0 0;letter-spacing:0.06em;text-transform:uppercase">all-time</p>
+ </div>
</div>
<%
← f5d2cd9 feat(ux): hand-drawn SVG glyphs replace emoji on vertical he
·
back to Ventura Claw Leads
·
feat(seo): per-business dynamic Open Graph images d818054 →