From 3a147b78b683b9b6c2ec152f68e9506ec411e2aa Mon Sep 17 00:00:00 2001 From: Deeman Date: Tue, 24 Feb 2026 14:16:12 +0100 Subject: [PATCH] feat(content): convert article FAQ sections to collapsible details/summary Replace **Bold question?** / Answer markdown pattern with HTML
/ in all three article templates (city-pricing, city-cost-de, country-overview), both DE and EN sections. Add .article-body details CSS for styled accordion look. Articles need Rebuild All to regenerate. Co-Authored-By: Claude Opus 4.6 --- .../content/templates/city-cost-de.md.jinja | 60 +++++++++++++++---- .../content/templates/city-pricing.md.jinja | 50 ++++++++++++---- .../templates/country-overview.md.jinja | 50 ++++++++++++---- web/src/padelnomics/static/css/input.css | 19 ++++++ 4 files changed, 147 insertions(+), 32 deletions(-) diff --git a/web/src/padelnomics/content/templates/city-cost-de.md.jinja b/web/src/padelnomics/content/templates/city-cost-de.md.jinja index 09ca287..919155b 100644 --- a/web/src/padelnomics/content/templates/city-cost-de.md.jinja +++ b/web/src/padelnomics/content/templates/city-cost-de.md.jinja @@ -92,23 +92,41 @@ Eine detaillierte Preisanalyse mit Preisspannen und Vergleichsdaten findest Du a ## FAQ -**Ist {{ city_name }} ein guter Standort für eine Padelhalle?** +
+Ist {{ city_name }} ein guter Standort für eine Padelhalle? + {{ city_name }} erreicht **{{ market_score | round(1) }}/100** auf dem padelnomics Market Score, der Bevölkerungsgröße, Anlagendichte und Datenqualität berücksichtigt. {% if market_score >= 70 %}Ein Score über 70 signalisiert einen starken Markt: große Bevölkerung, wachsende Anlagenzahl und belastbare Preisdaten. {% elif market_score >= 45 %}Ein mittlerer Score bedeutet solide Grundlagen, aber einen teils stärker umkämpften oder datenlimitierten Markt. {% else %}Ein niedrigerer Score spricht für eine kleinere Stadt, begrenzte Datenlage oder einen Markt im Aufbau — was gleichzeitig weniger Wettbewerb und First-Mover-Vorteile bedeuten kann. {% endif %}Mit dem [Finanzplaner](/{{ language }}/planner) kannst Du Deine eigenen Annahmen durchrechnen. +
+ +
+Wie hoch ist die Rendite einer Padelhalle in {{ city_name }}? -**Wie hoch ist die Rendite einer Padelhalle in {{ city_name }}?** Die Rendite hängt von Deinen Baukosten, der Courtanzahl, Preisgestaltung und Auslastungsannahmen ab. Das Finanzmodell oben nutzt echte Marktdaten aus {{ city_name }} als Ausgangswerte — Spitzenpreis {% if median_peak_rate %}{{ median_peak_rate | round(0) | int }} {{ price_currency }}/Std{% else %}geschätzt auf Basis regionaler Benchmarks{% endif %}, geschätzte Auslastung {% if median_occupancy_rate %}{{ (median_occupancy_rate * 100) | round(0) | int }}%{% else %}basierend auf Landesdurchschnitt{% endif %}. [Passe die Eingaben im Planer an](/{{ language }}/planner), um Dein Szenario zu vergleichen. +
+ +
+Was kostet es, eine Padelhalle in {{ city_name }} zu bauen? -**Was kostet es, eine Padelhalle in {{ city_name }} zu bauen?** Das Gesamtinvestment hängt vom Hallentyp (Indoor vs. Outdoor), Grundstückskosten und lokalen Baustandards in {{ country_name_en }} ab. Das CAPEX-Modell oben schlüsselt die wichtigsten Kostentreiber für einen typischen Bau in {{ city_name }} auf. +
+ +
+Wie viele Padelplätze gibt es in {{ city_name }}? -**Wie viele Padelplätze gibt es in {{ city_name }}?** {{ city_name }} hat **{{ padel_venue_count }} Padelanlagen**. Bei {% if population >= 1000000 %}{{ (population / 1000000) | round(1) }}M{% else %}{{ (population / 1000) | round(0) | int }}K{% endif %} Einwohnern entspricht das **{{ venues_per_100k | round(1) }} Anlagen pro 100.000 Einwohner**. +
+ +
+Was kosten Padel-Courts in {{ city_name }}? -**Was kosten Padel-Courts in {{ city_name }}?** {% if median_peak_rate %}Zu Hauptzeiten liegen die Preise bei durchschnittlich **{{ median_peak_rate | round(0) | int }} {{ price_currency }}/Std**, in Nebenzeiten bei ca. **{{ median_offpeak_rate | round(0) | int }} {{ price_currency }}/Std**. Die Daten stammen aus Live-Buchungsdaten von Playtomic.{% else %}Für {{ city_name }} liegen noch keine Playtomic-Preisdaten vor. Das Finanzmodell nutzt Benchmarks aus {{ country_name_en }} als Näherung.{% endif %} +
+ +
+Wie schneidet {{ city_name }} im Vergleich zu anderen Städten in {{ country_name_en }} ab? -**Wie schneidet {{ city_name }} im Vergleich zu anderen Städten in {{ country_name_en }} ab?** Der padelnomics Market Score von {{ market_score | round(1) }}/100 zeigt {{ city_name }}s Position unter den erfassten Städten in {{ country_name_en }}. In der [Marktübersicht für {{ country_name_en }}](/{{ language }}/markets/{{ country_slug }}) findest Du den Vergleich aller Städte. +
Bereit für Deine eigene Kalkulation? → @@ -199,23 +217,41 @@ For a detailed pricing breakdown with price ranges and venue comparisons, see th ## FAQ -**Is {{ city_name }} a good location for a padel center?** +
+Is {{ city_name }} a good location for a padel center? + {{ city_name }} scores **{{ market_score | round(1) }}/100** on the padelnomics Market Score, which accounts for population size, existing venue density, and data completeness. {% if market_score >= 70 %}A score above 70 indicates a strong market: high population, growing venue count, and solid pricing data. {% elif market_score >= 45 %}A mid-range score means decent fundamentals but a more competitive or data-limited market. {% else %}A lower score reflects either a smaller city, sparse venue data, or an early-stage market — which can also mean lower competition and first-mover advantage. {% endif %}Use the [Padelnomics planner](/{{ language }}/planner) to model your specific assumptions. +
+ +
+What is the return on investment for a padel center in {{ city_name }}? -**What is the return on investment for a padel center in {{ city_name }}?** ROI depends on your build cost, court count, pricing, and occupancy assumptions. The financial model above uses real {{ city_name }} market data as defaults — peak rate {% if median_peak_rate %}{{ median_peak_rate | round(0) | int }} {{ price_currency }}/hr{% else %}estimated from regional benchmarks{% endif %}, estimated occupancy {% if median_occupancy_rate %}{{ (median_occupancy_rate * 100) | round(0) | int }}%{% else %}based on country averages{% endif %}. [Adjust the inputs in the planner](/{{ language }}/planner) to see how your scenario compares. +
+ +
+How much does it cost to build a padel center in {{ city_name }}? -**How much does it cost to build a padel center in {{ city_name }}?** Total investment depends on venue type (indoor vs outdoor), land costs, and local construction standards in {{ country_name_en }}. The capex model above breaks down the key cost drivers for a typical {{ city_name }} build based on current market assumptions. +
+ +
+How many padel courts are there in {{ city_name }}? -**How many padel courts are there in {{ city_name }}?** {{ city_name }} has **{{ padel_venue_count }} padel venues**. With a population of {% if population >= 1000000 %}{{ (population / 1000000) | round(1) }}M{% else %}{{ (population / 1000) | round(0) | int }}K{% endif %}, that translates to **{{ venues_per_100k | round(1) }} venues per 100,000 residents**. +
+ +
+What are typical padel court rental prices in {{ city_name }}? -**What are typical padel court rental prices in {{ city_name }}?** {% if median_peak_rate %}Peak hour rates average around **{{ median_peak_rate | round(0) | int }} {{ price_currency }}/hr**, while off-peak rates are approximately **{{ median_offpeak_rate | round(0) | int }} {{ price_currency }}/hr**. These figures come from live Playtomic booking data.{% else %}Pricing data from Playtomic is not yet available for {{ city_name }}. The financial model uses {{ country_name_en }}-wide benchmarks as a proxy.{% endif %} +
+ +
+How does {{ city_name }} compare to other {{ country_name_en }} cities? -**How does {{ city_name }} compare to other {{ country_name_en }} cities?** {{ city_name }}'s padelnomics Market Score of {{ market_score | round(1) }}/100 reflects its ranking among tracked {{ country_name_en }} cities. See the [{{ country_name_en }} market overview](/{{ language }}/markets/{{ country_slug }}) for a full comparison across cities. +
Ready to run the numbers for {{ city_name }}? → diff --git a/web/src/padelnomics/content/templates/city-pricing.md.jinja b/web/src/padelnomics/content/templates/city-pricing.md.jinja index 13b8b03..abaf6cc 100644 --- a/web/src/padelnomics/content/templates/city-pricing.md.jinja +++ b/web/src/padelnomics/content/templates/city-pricing.md.jinja @@ -86,20 +86,35 @@ Diese Preisdaten fließen direkt in das Finanzmodell für {{ city_name }} ein: ## FAQ -**Was kostet eine Padel-Stunde in {{ city_name }}?** +
+Was kostet eine Padel-Stunde in {{ city_name }}? + Der mediane Stundenpreis in {{ city_name }} liegt bei **{{ median_hourly_rate | round(0) | int }} {{ price_currency }}/Std** — zu Hauptzeiten **{{ median_peak_rate | round(0) | int }} {{ price_currency }}/Std**, in Nebenzeiten **{{ median_offpeak_rate | round(0) | int }} {{ price_currency }}/Std**. Die günstigsten Anlagen starten bei {{ hourly_rate_p25 | round(0) | int }} {{ price_currency }}/Std, Premium-Anlagen verlangen {{ hourly_rate_p75 | round(0) | int }} {{ price_currency }}/Std oder mehr. Datenbasis: {{ venue_count }} aktive Playtomic-Anlagen. +
+ +
+Wann ist Padel in {{ city_name }} am günstigsten? -**Wann ist Padel in {{ city_name }} am günstigsten?** In Nebenzeiten — typischerweise vormittags und am frühen Nachmittag unter der Woche — liegen die Preise bei ca. **{{ median_offpeak_rate | round(0) | int }} {{ price_currency }}/Std**, verglichen mit **{{ median_peak_rate | round(0) | int }} {{ price_currency }}/Std** zu Hauptzeiten. +
+ +
+Wie viele Padelanlagen gibt es in {{ city_name }}? -**Wie viele Padelanlagen gibt es in {{ city_name }}?** {{ city_name }} hat **{{ padel_venue_count }} Padelanlagen** insgesamt. Diese Preisanalyse erfasst **{{ venue_count }} Anlagen** mit ausreichend Playtomic-Buchungsdaten. +
+ +
+Wie schneidet {{ city_name }} preislich im Vergleich zu anderen Städten in {{ country_name_en }} ab? -**Wie schneidet {{ city_name }} preislich im Vergleich zu anderen Städten in {{ country_name_en }} ab?** Die Preise in {{ city_name }} liegen {% if median_peak_rate >= 40 %}im oberen Bereich{% elif median_peak_rate >= 25 %}im Mittelfeld{% else %}unter dem Durchschnitt{% endif %} für {{ country_name_en }}. In der [Marktübersicht {{ country_name_en }}](/{{ language }}/markets/{{ country_slug }}) findest Du den Vergleich aller Städte. +
+ +
+Steigen oder fallen die Padel-Preise in {{ city_name }}? -**Steigen oder fallen die Padel-Preise in {{ city_name }}?** Die aktuellen Daten sind eine Momentaufnahme auf Basis von Playtomic-Livedaten. Generell stabilisieren sich Preise in reiferen Märkten, während sie in wachsenden Märkten tendenziell steigen. Im [Finanzplaner](/{{ language }}/planner) kannst Du verschiedene Preisszenarien durchrechnen. +
Nutze die {{ city_name }}-Preisdaten für Deinen Businessplan → @@ -184,20 +199,35 @@ These pricing numbers feed directly into the financial model for {{ city_name }} ## FAQ -**How much does it cost to rent a padel court in {{ city_name }}?** +
+How much does it cost to rent a padel court in {{ city_name }}? + The median padel court rental rate in {{ city_name }} is **{{ median_hourly_rate | round(0) | int }} {{ price_currency }}/hr** overall — **{{ median_peak_rate | round(0) | int }} {{ price_currency }}/hr** at peak times and **{{ median_offpeak_rate | round(0) | int }} {{ price_currency }}/hr** off-peak. The cheapest venues charge from {{ hourly_rate_p25 | round(0) | int }} {{ price_currency }}/hr; premium venues reach {{ hourly_rate_p75 | round(0) | int }} {{ price_currency }}/hr or more. Data comes from {{ venue_count }} active Playtomic venues. +
+ +
+When are padel courts cheapest in {{ city_name }}? -**When are padel courts cheapest in {{ city_name }}?** Off-peak slots — typically weekday mornings and early afternoons — are priced at around **{{ median_offpeak_rate | round(0) | int }} {{ price_currency }}/hr**, compared to **{{ median_peak_rate | round(0) | int }} {{ price_currency }}/hr** during peak hours. +
+ +
+How many padel venues are there in {{ city_name }}? -**How many padel venues are there in {{ city_name }}?** {{ city_name }} has **{{ padel_venue_count }} padel venues** in total. This pricing analysis covers **{{ venue_count }} venues** with sufficient Playtomic booking data. +
+ +
+How does padel pricing in {{ city_name }} compare to other {{ country_name_en }} cities? -**How does padel pricing in {{ city_name }} compare to other {{ country_name_en }} cities?** {{ city_name }}'s pricing sits {% if median_peak_rate >= 40 %}at the higher end{% elif median_peak_rate >= 25 %}in the mid-range{% else %}below average{% endif %} for {{ country_name_en }}. See the [{{ country_name_en }} market overview](/{{ language }}/markets/{{ country_slug }}) for a full city-by-city comparison. +
+ +
+Are padel court prices in {{ city_name }} going up or down? -**Are padel court prices in {{ city_name }} going up or down?** The current data is a snapshot based on live Playtomic booking data. In general, prices stabilise in mature markets and tend to rise in growing ones. Use the [financial planner](/{{ language }}/planner) to model different pricing scenarios and stress-test your business plan. +
Use {{ city_name }} pricing data in your business plan → diff --git a/web/src/padelnomics/content/templates/country-overview.md.jinja b/web/src/padelnomics/content/templates/country-overview.md.jinja index d907a39..b478645 100644 --- a/web/src/padelnomics/content/templates/country-overview.md.jinja +++ b/web/src/padelnomics/content/templates/country-overview.md.jinja @@ -82,20 +82,35 @@ Jede Stadt hat andere Kostenstrukturen, Wettbewerbsbedingungen und Zielgruppen. ## FAQ -**Wie viele Padel-Courts gibt es in {{ country_name_en }}?** +
+Wie viele Padel-Courts gibt es in {{ country_name_en }}? + Wir erfassen aktuell **{{ total_venues }} Padelanlagen** in **{{ city_count }} Städten** in {{ country_name_en }}. Unsere Daten stammen von Playtomic und aus Overpass/OpenStreetMap. Die tatsächliche Zahl liegt vermutlich höher, da unabhängige Clubs ohne Buchungsplattform nicht immer erfasst werden. +
+ +
+Welche Stadt in {{ country_name_en }} eignet sich am besten für eine Padelhalle? -**Welche Stadt in {{ country_name_en }} eignet sich am besten für eine Padelhalle?** Unsere Spitzenstadt nach padelnomics Market Score ist **{{ top_city_names[0] }}** (Score: {{ top_city_market_score }}/100). Der Score kombiniert Bevölkerungsgröße, Anlagendichte und Datenqualität. Eine hohe Punktzahl deutet auf einen großen adressierbaren Markt mit validierten Preisdaten hin. Die beste Stadt für *Dein* Vorhaben hängt aber von Faktoren wie Flächenverfügbarkeit, lokalem Wettbewerb und Deiner Zielgruppe ab. Nutze den Finanzplaner, um verschiedene Standorte durchzurechnen. +
+ +
+Was kostet eine Stunde Padel in {{ country_name_en }}? -**Was kostet eine Stunde Padel in {{ country_name_en }}?** {% if median_peak_rate %}Laut Live-Daten von Playtomic liegt der Median-Hauptzeitpreis in {{ country_name_en }} bei **{{ median_peak_rate | int }} {{ price_currency }}/Std**, Nebenzeit bei **{% if median_offpeak_rate %}{{ median_offpeak_rate | int }}{% else %}—{% endif %} {{ price_currency }}/Std**. Die Preise variieren stark zwischen Städten — auf den jeweiligen Stadtseiten findest Du lokale Benchmarks.{% else %}Aggregierte Preisdaten sind für {{ country_name_en }} noch nicht verfügbar. Prüfe die einzelnen Stadtseiten für lokale Daten.{% endif %} +
+ +
+Wie schnell wächst Padel in {{ country_name_en }}? -**Wie schnell wächst Padel in {{ country_name_en }}?** Padel gehört zu den am schnellsten wachsenden Racketsportarten in Europa. Mit {{ total_venues }} erfassten Anlagen in {{ city_count }} Städten zeigt {{ country_name_en }} {% if avg_market_score >= 65 %}bereits eine reife Infrastruktur — Wachstum kommt hier vor allem aus steigender Spielfrequenz und Premiumangeboten{% elif avg_market_score >= 40 %}eine klare Wachstumsdynamik mit steigender Nachfrage und neuen Anlagen{% else %}ein frühes Wachstumsstadium mit großem Potenzial für Neueintritte{% endif %}. Die Sportart profitiert von niedriger Einstiegshürde, hohem Spaßfaktor und starker Mund-zu-Mund-Verbreitung. +
+ +
+Welche Städte haben die besten Preisdaten? -**Welche Städte haben die besten Preisdaten?** Städte mit höherem padelnomics Market Score (wie {{ top_city_names[0] }}) haben in der Regel die umfassendsten Preisdaten, weil dort mehr Anlagen auf Playtomic gelistet sind. In unserem {{ country_name_en }}-Marktüberblick findest Du alle Städte nach Market Score sortiert. +
Du überlegst, eine Padelhalle in {{ country_name_en }} zu eröffnen? Rechne Dein Vorhaben mit echten Marktdaten durch → @@ -172,20 +187,35 @@ Every city has a different cost structure, competitive landscape, and customer b ## FAQ -**How many padel courts are there in {{ country_name_en }}?** +
+How many padel courts are there in {{ country_name_en }}? + We currently track **{{ total_venues }} padel venues** across **{{ city_count }} cities** in {{ country_name_en }}. This covers venues listed on Playtomic and venues identified through our Overpass/OpenStreetMap data source. The actual total may be higher as independent clubs not listed on booking platforms are not always captured. +
+ +
+Which city in {{ country_name_en }} is best for a padel center? -**Which city in {{ country_name_en }} is best for a padel center?** Our top-ranked city by padelnomics Market Score is **{{ top_city_names[0] }}** (score: {{ top_city_market_score }}/100). The padelnomics Market Score combines population size, existing venue density, and data quality — a high score indicates a large addressable market with validated pricing data. However, the best city for *you* depends on land availability, local competition, and your target customer profile. Use the financial planner to model different locations side by side. +
+ +
+What are typical padel court prices in {{ country_name_en }}? -**What are typical padel court prices in {{ country_name_en }}?** {% if median_peak_rate %}Based on live Playtomic data, median peak rates across {{ country_name_en }} cities are **{{ median_peak_rate | int }} {{ price_currency }}/hr** and off-peak rates are around **{% if median_offpeak_rate %}{{ median_offpeak_rate | int }}{% else %}—{% endif %} {{ price_currency }}/hr**. Individual cities vary — see each city's page for local benchmarks.{% else %}Pricing data is not yet available in aggregate for {{ country_name_en }}. Check individual city pages where Playtomic data is available.{% endif %} +
+ +
+How fast is padel growing in {{ country_name_en }}? -**How fast is padel growing in {{ country_name_en }}?** Padel is one of the fastest-growing racquet sports in Europe. With {{ total_venues }} venues tracked across {{ city_count }} cities, {{ country_name_en }} shows {% if avg_market_score >= 65 %}a mature infrastructure — growth here comes mainly from increasing play frequency and premium offerings{% elif avg_market_score >= 40 %}clear growth momentum with rising demand and new venues opening{% else %}early-stage growth with significant potential for new entrants{% endif %}. The sport benefits from a low barrier to entry, high enjoyment factor, and strong word-of-mouth growth among players. +
+ +
+Which cities have the best pricing data? -**Which cities have the best pricing data?** Cities with higher padelnomics Market Scores (like {{ top_city_names[0] }}) typically have the most comprehensive pricing data, because more venues are listed on Playtomic. Browse our {{ country_name_en }} market overview to see all cities ranked by padelnomics Market Score. +
Considering a padel center in {{ country_name_en }}? Model your investment with real market data → diff --git a/web/src/padelnomics/static/css/input.css b/web/src/padelnomics/static/css/input.css index ab1c5b1..539d63e 100644 --- a/web/src/padelnomics/static/css/input.css +++ b/web/src/padelnomics/static/css/input.css @@ -549,4 +549,23 @@ .article-body a { @apply text-electric underline hover:text-electric-hover; } + .article-body details { + @apply border border-light-gray rounded-lg mb-3 overflow-hidden; + } + .article-body details summary { + @apply px-4 py-3 font-semibold text-navy cursor-pointer select-none; + list-style: none; + } + .article-body details summary::-webkit-details-marker { display: none; } + .article-body details summary::after { + content: '+'; + @apply float-right text-slate font-normal; + } + .article-body details[open] summary::after { + content: '−'; + } + .article-body details > p, + .article-body details > div { + @apply px-4 pb-4 text-slate-dark; + } }