add dashboard filtering to analytics
All checks were successful
deploy / deploy (push) Successful in 1m19s
All checks were successful
deploy / deploy (push) Successful in 1m19s
Click any row in pages, sources, countries, or devices tables to filter the entire dashboard by that dimension. Active filters show as dismissible chips. Filters thread through all queries including previous-period deltas. 1050 tests. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
28
PROGRESS.md
28
PROGRESS.md
@@ -22,6 +22,7 @@
|
||||
- Denormalized product fields (cheapest_price, in_stock, on_sale) for DB-level sort/filter
|
||||
- Transactional emails (order confirmation, shipping notification)
|
||||
- Demo content polished and ready for production
|
||||
- Privacy-first analytics with comparison mode (period deltas on stat cards)
|
||||
|
||||
**Tier 1 MVP complete.** CI pipeline done. Hosting & deployment done (including observability). PageSpeed CI done (99-100 mobile, 97+ desktop). Usability fixes done. Shipping costs at checkout done. Per-colour product images with gallery filtering done (both providers). Printful integration complete (sync, orders, shipping, webhooks, mockup enrichment, catalog colours). CSS migration Phases 0-7 complete — project is fully Tailwind-free (hand-written CSS, 9.8 KB gzipped shop, 17.8 KB gzipped admin). Setup and launch readiness complete — `/setup` onboarding page, dashboard launch checklist, provider registry, provider-agnostic setup status.
|
||||
|
||||
@@ -87,7 +88,11 @@ Plans: [admin-redesign.md](docs/plans/admin-redesign.md) | [admin-font-loading.m
|
||||
| | **Bugs / polish** | | | |
|
||||
| ~~49~~ | ~~Admin font loading + cache miss path resolver ([plan](docs/plans/admin-font-loading.md))~~ | — | 1h | done |
|
||||
|
||||
**All tasks complete.** No remaining work in the task list.
|
||||
| | **Analytics v2** ([plan](docs/plans/analytics-v2.md)) | | | |
|
||||
| ~~52~~ | ~~Comparison mode: period deltas on stat cards~~ | — | 1h | done |
|
||||
| 53 | Dashboard filtering (click to filter by dimension) | 52 | 3h | planned |
|
||||
| 54 | CSV export | 52 | 1.5h | planned |
|
||||
| 55 | Entry/exit pages panel | — | 1h | planned |
|
||||
|
||||
See [css-migration.md](docs/plans/css-migration.md) for full plan with architecture, visual regression testing strategy, and acceptance criteria per phase.
|
||||
|
||||
@@ -114,7 +119,7 @@ Issues from hands-on testing of the deployed prod site (Feb 2025). 16 of 18 comp
|
||||
|
||||
### Tier 3 — Compliance & quality
|
||||
|
||||
10. **Privacy-respecting analytics** — Self-hosted, cookie-free analytics. Plausible, Umami, or a lightweight custom solution. No Google Analytics, no third-party tracking. GDPR-friendly by design.
|
||||
10. ~~**Privacy-respecting analytics**~~ — ✅ In progress. Custom cookie-free analytics with pageviews, e-commerce funnel, device/browser/OS/country tracking. Period comparison deltas on stat cards. Next: dashboard filtering, CSV export, entry/exit pages.
|
||||
11. **AGPL licensing & code hosting** — Currently AGPL-3.0. Decide on GitHub vs Codeberg vs self-hosted Forgejo. Set up proper LICENSE file, contribution guidelines, and release process.
|
||||
12. **Security (Paraxial.io)** — Runtime application security monitoring for Elixir. Bot detection, rate limiting, vulnerability scanning. Evaluate whether it fits the self-hosted model.
|
||||
|
||||
@@ -374,7 +379,22 @@ See: [plan](docs/plans/shipping-sync.md) for implementation details
|
||||
- [x] `mix bench.sqlite` task with `--prod`, `--scale`, `--pool-size`, `--busy-timeout` options
|
||||
- [x] PRAGMA tuning across dev/test/prod: `default_transaction_mode: :immediate`, `journal_size_limit: 64MB`, `custom_pragmas: [mmap_size: 128MB]`
|
||||
- [x] Benchmarks confirmed: IMMEDIATE mode eliminates transaction upgrade BUSY errors (0% vs 73-80% failure rate under contention), prod mode 5-12x faster than dev, 300 concurrent mixed requests with zero errors
|
||||
- [x] 972 tests total (5 excluded: 3 benchmarks + 2 correctness)
|
||||
- [x] 1041 tests total (5 excluded: 3 benchmarks + 2 correctness)
|
||||
|
||||
### Analytics
|
||||
**Status:** In progress (v2)
|
||||
|
||||
- [x] Privacy-first, cookie-free analytics (2bd2e61)
|
||||
- [x] E-commerce funnel events: product_view, add_to_cart, checkout_start, purchase (f91b47f)
|
||||
- [x] Browser, OS, screen size collection (f91b47f)
|
||||
- [x] HTML/CSS bar chart with hourly today view and readable labels (08fcd60)
|
||||
- [x] Period comparison deltas on stat cards (6eda1de)
|
||||
- [x] 2-year demo seed data with growth curve (6eda1de)
|
||||
- [ ] Dashboard filtering (click referrer/country/device to filter all panels)
|
||||
- [ ] CSV export
|
||||
- [ ] Entry/exit pages panel
|
||||
|
||||
See: [docs/plans/analytics-v2.md](docs/plans/analytics-v2.md) for v2 plan
|
||||
|
||||
### Page Editor
|
||||
**Status:** Future (Tier 4)
|
||||
@@ -389,6 +409,8 @@ See: [docs/plans/page-builder.md](docs/plans/page-builder.md) for design
|
||||
|
||||
| Feature | Commit | Notes |
|
||||
|---------|--------|-------|
|
||||
| Analytics comparison mode | 6eda1de | Period deltas on stat cards, 2-year seed data, zero-baseline handling, 1041 tests |
|
||||
| Analytics v1 + chart improvements | 2bd2e61..08fcd60 | Cookie-free analytics, e-commerce funnel, HTML/CSS bar chart, hourly today view |
|
||||
| Printify + Printful client tests | b0aed4c, a45e85e | Req.Test stubs for both HTTP clients, provider integration tests, mockup enricher tests, 972 tests |
|
||||
| SQLite production tuning | 162bf4c, 19d8c7d | Concurrency tests, `mix bench.sqlite` task, IMMEDIATE transactions, mmap 128MB, journal_size_limit 64MB, 898 tests |
|
||||
| Per-colour images + gallery filtering | 0fe48ba | colour column on product_images, per-colour mockup enrichment, PDP gallery filtering, Printify option filtering, hero colour ordering, 821 tests |
|
||||
|
||||
Reference in New Issue
Block a user