Patterns
Operational analytics
Make aggregate readership data interpretable before an operator draws conclusions from it.
On this page
Task and context
Make aggregate readership data interpretable before an operator draws conclusions from it.
Flow and composition
| Stage | Interface responsibility |
|---|---|
| Set range | Today, 7d or 30d context. |
| Summarize | Visitors/pageviews with shared time boundary. |
| Compare | Chart and ranked breakdowns. |
| Qualify | Freshness, warnings and provider readiness. |
Decisions and handoff
- Use the same range for totals, chart and lists.
- Never present synthetic capture numbers as readership results.
Recovery and acceptance
- Missing provider configuration should say what is unavailable.
- An error is not zero traffic.
- Review readable equivalents for canvas data and keyboard access to ranges.
Source references
| File | Responsibility |
|---|---|
| components/admin/admin-analytics-dashboard.tsx | Audited Townwell implementation; use this file when extending this interface. |
| lib/vercel-web-analytics.ts | Audited Townwell implementation; use this file when extending this interface. |
Examples from the app
Actual Boise Today and Townwell UI with synthetic editorial, business, review, media metadata and analytics. Existing Boise imagery; no live data changes. Captured at 2× resolution or higher. Select an image to inspect it full size.
Related topics
Source audit: 2026-10-07 · Revision ce8bc72b96da · Documentation v0.1