feat: admin articles grouped view, live stats, + bug fixes

Admin articles list:
- Group EN/DE language variants into a single row (grouped by url_path)
- Language chips (● EN/● DE) coloured by status: green=live, amber=scheduled, blue=draft
- Inline View ↗ (live only) and Edit buttons per variant — one-click access
- Filter by language switches back to flat single-row view
- Live HTMX polling of article counts while generation runs (every 3s, self-terminates)
- Table overflow fix: card gets overflow:hidden, table wrapped in overflow-x:auto scroll div

Bug fixes:
- X-Forwarded-Proto: pass $http_x_forwarded_proto through Nginx so Quart sees https
- pipeline_routes.py: fix relative import for analytics module (from .analytics → from ..analytics)
- Scheduled articles: redirect to parent path instead of 404 when not yet published
- city-cost-de: change priority_column from population to padel_venue_count
- Quote wizard step 4: make location_status required
- Article generation: use COUNT(*) instead of 501-sentinel hack for row counts
- Makefile: pin Tailwind v4.1.18, add dev/help targets, uv run python, .PHONY

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Deeman
2026-02-26 20:17:28 +01:00
parent ee488b6aca
commit 0fa2bf7c30
17 changed files with 270 additions and 335 deletions

View File

@@ -15,6 +15,8 @@
**Core insight:** The job is never "I need a calculator." It's "I need to feel confident committing €200K+." Confidence is the product. Calculator is the vehicle.
**Investment reality (from `research/padel-hall-economics.md`):** 4-court outdoor commercial = €200K€350K. Any indoor hall = €700K€3M+. These are the primary addressable buyers. Single-court installs (€33K€80K, mostly hotel/corporate add-ons) exist but are not the target for the lead marketplace — suppliers filter them out by project size anyway.
### Why This Works (DaaS Thesis)
| Check | Answer |
@@ -79,7 +81,7 @@ Small direct revenue Main revenue: subscriptions + credits + upsel
**Social job:** Look professional and thorough to banks / investors / spouse. ← underserved, pricing lever.
**Acquired via:** SEO, free calculator, content marketing.
**Direct revenue:** Business plan PDF (€99), market intel subscriptions (future).
**Direct revenue:** Business plan PDF (€149), market intel subscriptions (future).
#### Beachhead Sub-segment — Tennis/Sports Club Owner (Germany)
@@ -311,8 +313,8 @@ After calculator results: prompt for email to save/share scenario. Every planner
| Tier | Price | Includes | State |
|------|-------|----------|-------|
| Basic | Free | Listing, no leads | [ ] |
| Growth | €149/mo | Listing + 30 credits/mo + basic analytics | [ ] |
| Pro | €399/mo | Listing + 100 credits/mo + full analytics | [ ] |
| Growth | €199/mo (€1,799/yr) | Listing + 30 credits/mo + basic analytics | [ ] |
| Pro | €499/mo (€4,499/yr) | Listing + 100 credits/mo + full analytics | [ ] |
### Upsell Stack (RemoteOK playbook)
@@ -364,7 +366,7 @@ Suppliers self-select which leads to unlock with credits. Lead cost scales by pr
| Lead credits (Side B) | Suppliers buy credits to unlock leads | [ ] Not live |
| Directory subscriptions (Side B) | Growth €149/mo, Pro €399/mo | [ ] Not live |
| Directory upsells (Side B) | Logo, highlight, verified, sticky | [ ] Not live |
| Business Plan PDF (Side A) | €99 one-time | [ ] CTA exists, no product |
| Business Plan PDF (Side A) | €149 one-time | [ ] CTA exists, no product |
### Near-term (Phase 23)