#!/bin/bash # Generera alla quiXzoom landningssidor # 15 marknader × 20 use cases = 300 sidor set -e BASE_DIR="/home/bernt/.openclaw/workspace/quixzoom-market-pages" TEMPLATE_DIR="$BASE_DIR/se" # Marknadskonfigurationer declare -A MARKETS=( ["se"]="sv|Sverige|Sweden|SE|150–500 kr|Skatteverket|kr|🇸🇪 Lanseras i Sverige · 1 augusti 2026|quixzoom.se" ["de"]="de|Deutschland|Germany|DE|15–50 €|Finanzamt|€|🇩🇪 Startet in Deutschland · August 2026|quixzoom.de" ["fr"]="fr|France|France|FR|15–50 €|Direction générale des Finances publiques|€|🇫🇷 Lance en France · Août 2026|quixzoom.fr" ["nl"]="nl|Nederland|Netherlands|NL|15–50 €|Belastingdienst|€|🇳🇱 Lanceert in Nederland · Augustus 2026|quixzoom.nl" ["uk"]="en-gb|United Kingdom|United Kingdom|GB|£12–42|HMRC|£|🇬🇧 Launching in the UK · August 2026|quixzoom.co.uk" ["it"]="it|Italia|Italy|IT|15–50 €|Agenzia delle Entrate|€|🇮🇹 Lancio in Italia · Agosto 2026|quixzoom.it" ["es"]="es|España|Spain|ES|15–50 €|Agencia Tributaria|€|🇪🇸 Lanzamiento en España · Agosto 2026|quixzoom.es" ["fi"]="fi|Suomi|Finland|FI|15–50 €|Verohallinto|€|🇫🇮 Lanserar i Finland · Elokuu 2026|quixzoom.fi" ["da"]="da|Danmark|Denmark|DK|100–350 kr|Skattestyrelsen|kr|🇩🇰 Lancering i Danmark · August 2026|quixzoom.dk" ["at"]="de|Österreich|Austria|AT|15–50 €|Bundesministerium für Finanzen|€|🇦🇹 Start in Österreich · August 2026|quixzoom.at" ["be"]="nl|België|Belgium|BE|15–50 €|FOD Financiën|€|🇧🇪 Lancering in België · Augustus 2026|quixzoom.be" ["ch"]="de|Schweiz|Switzerland|CH|15–50 CHF|ESTV|CHF|🇨🇭 Start in der Schweiz · August 2026|quixzoom.ch" ["no"]="no|Norge|Norway|NO|150–500 kr|Skatteetaten|kr|🇳🇴 Lansering i Norge · August 2026|quixzoom.no" ["ie"]="en-ie|Ireland|Ireland|IE|€15–50|Revenue Commissioners|€|🇮🇪 Launching in Ireland · August 2026|quixzoom.ie" ["pl"]="pl|Polska|Poland|PL|60–200 zł|Ministerstwo Finansów|zł|🇵🇱 Start w Polsce · Sierpień 2026|quixzoom.pl" ) # Use cases med översättningar declare -A USE_CASES=( ["bridge-inspection"]="Bridge Inspection|Broinspektion|Brückeninspektion|Inspection de ponts|Bruginspectie|Bridge Inspection|Ispezione ponti|Inspección de puentes|Sillan tarkastus|Broinspektion|Brückeninspektion|Bruginspectie|Brückeninspektion|Broinspeksjon|Bridge Inspection|Inspekcja mostów" ["infrastructure-monitoring"]="Infrastructure Monitoring|Infrastrukturövervakning|Infrastrukturüberwachung|Surveillance d'infrastructure|Infrastructuurmonitoring|Infrastructure Monitoring|Monitoraggio infrastrutture|Monitoreo de infraestructura|Infrastruktuurin valvonta|Infrastrukturovervågning|Infrastrukturüberwachung|Infrastructuurmonitoring|Infrastrukturüberwachung|Infrastrukturovervåking|Infrastructure Monitoring|Monitorowanie infrastruktury" ["property-documentation"]="Property Documentation|Fastighetsdokumentation|Immobiliendokumentation|Documentation immobilière|Vastgoeddocumentatie|Property Documentation|Documentazione immobiliare|Documentación de propiedades|Kiinteistödokumentaatio|Ejendomsdokumentation|Immobiliendokumentation|Vastgoeddocumentatie|Immobiliendokumentation|Eiendomsdokumentasjon|Property Documentation|Dokumentacja nieruchomości" ["storm-damage"]="Storm Damage Assessment|Stormskadebedömning|Sturmschadenbewertung|Évaluation des dégâts de tempête|Stormschadebeoordeling|Storm Damage Assessment|Valutazione danni da tempesta|Evaluación de daños por tormenta|Myrskyvaurioarvio|Stormskadevurdering|Sturmschadenbewertung|Stormschadebeoordeling|Sturmschadenbewertung|Stormskadevurdering|Storm Damage Assessment|Ocena szkód po burzy" ["retail-audit"]="Retail Audit|Butiksaudit|Einzelhandelsaudit|Audit de vente au détail|Retail audit|Retail Audit|Audit retail|Auditoría retail|Vähittäiskaupan tarkastus|Detailhandelsaudit|Einzelhandelsaudit|Retail audit|Einzelhandelsaudit|Detaljhandelsrevisjon|Retail Audit|Audyt detaliczny" ["ooh-audit"]="OOH Audit|OOH-audit|OOH-Audit|Audit OOH|OOH-audit|OOH Audit|Audit OOH|Auditoría OOH|OOH-tarkastus|OOH-audit|OOH-Audit|OOH-audit|OOH-Audit|OOH-revisjon|OOH Audit|Audyt OOH" ["construction-progress"]="Construction Progress|Byggframsteg|Baufortschritt|Progrès de construction|Bouwvoortgang|Construction Progress|Avanzamento lavori|Progreso de construcción|Rakennustyön edistyminen|Byggefremgang|Baufortschritt|Bouwvoortgang|Baufortschritt|Byggefremskridt|Construction Progress|Postęp budowy" ["facade-inspection"]="Facade Inspection|Fasadinspektion|Fassadeninspektion|Inspection de façade|Gevelinspectie|Facade Inspection|Ispezione facciata|Inspección de fachadas|Julkisivutarkastus|Facadeinspektion|Fassadeninspektion|Gevelinspectie|Fassadeninspektion|Fasadeinspeksjon|Facade Inspection|Inspekcja elewacji" ["roof-inspection"]="Roof Inspection|Takinspektion|Dachinspektion|Inspection de toit|Dakinspectie|Roof Inspection|Ispezione tetto|Inspección de tejados|Kattotarkastus|Taginspektion|Dachinspektion|Dakinspectie|Dachinspektion|Takinspeksjon|Roof Inspection|Inspekcja dachu" ["road-condition"]="Road Condition|Vägcondition|Straßenzustand|État des routes|Wegconditie|Road Condition|Condizione stradale|Condición de carreteras|Tien kunto|Vejtilstand|Straßenzustand|Wegconditie|Straßenzustand|Veitilstand|Road Condition|Stan dróg" ["signage-audit"]="Signage Audit|Skyltaudit|Beschilderungsaudit|Audit de signalisation|Signalisatie-audit|Signage Audit|Audit segnaletica|Auditoría de señalización|Opastetarkastus|Skilteaudit|Beschilderungsaudit|Signalisatie-audit|Beschilderungsaudit|Skiltingrevisjon|Signage Audit|Audyt oznakowania" ["parking-audit"]="Parking Audit|Parkeringsaudit|Parkplatz-Audit|Audit de stationnement|Parkeer-audit|Parking Audit|Audit parcheggi|Auditoría de aparcamiento|Pysäköintitarkastus|Parkeringsaudit|Parkplatz-Audit|Parkeer-audit|Parkplatz-Audit|Parkeringsrevisjon|Parking Audit|Audyt parkingów" ["asset-tracking"]="Asset Tracking|Tillgångsspårning|Asset Tracking|Suivi d'actifs|Asset tracking|Asset Tracking|Tracciamento asset|Seguimiento de activos|Omaisuuden seuranta|Asset tracking|Asset Tracking|Asset tracking|Asset Tracking|Eiendomssporing|Asset Tracking|Śledzenie zasobów" ["environmental-survey"]="Environmental Survey|Miljöinventering|Umwelterhebung|Enquête environnementale|Milieudenquête|Environmental Survey|Indagine ambientale|Estudio medioambiental|Ympäristöselvitys|Miljøundersøgelse|Umwelterhebung|Milieudenquête|Umwelterhebung|Miljøundersøkelse|Environmental Survey|Badanie środowiskowe" ["insurance-claim"]="Insurance Claim|Försäkringsärende|Versicherungsfall|Réclamation d'assurance|Verzekeringsclaim|Insurance Claim|Sinistro assicurativo|Reclamación de seguro|Vakuutusvaade|Forsikringskrav|Versicherungsfall|Verzekeringsclaim|Versicherungsfall|Forsikringskrav|Insurance Claim|Roszczenie ubezpieczeniowe" ["lease-audit"]="Lease Audit|Hyresaudit|Lease-Audit|Audit de bail|Lease audit|Lease Audit|Audit locazione|Auditoría de arrendamiento|Vuokraustarkastus|Leasingaudit|Lease-Audit|Lease audit|Lease-Audit|Leasingrevisjon|Lease Audit|Audyt leasingowy" ["event-documentation"]="Event Documentation|Eventdokumentation|Eventdokumentation|Documentation d'événement|Evenementdocumentatie|Event Documentation|Documentazione eventi|Documentación de eventos|Tapahtumadokumentaatio|Begivenhedsdokumentation|Eventdokumentation|Evenementdocumentatie|Eventdokumentation|Arrangementsdokumentasjon|Event Documentation|Dokumentacja wydarzeń" ["pre-purchase-inspection"]="Pre-Purchase Inspection|Köpesbesiktning|Kaufinspektion|Inspection pré-achat|Pre-aankoopinspectie|Pre-Purchase Inspection|Ispezione pre-acquisto|Inspección pre-compra|Esihankintatarkastus|Forhåndskøbsinspektion|Kaufinspektion|Pre-aankoopinspectie|Kaufinspektion|Forhåndsinspeksjon|Pre-Purchase Inspection|Inspekcja przedzakupowa" ["rental-inspection"]="Rental Inspection|Hyresinspektion|Mietinspektion|Inspection locative|Huurinspectie|Rental Inspection|Ispezione locazione|Inspección de alquiler|Vuokraustarkastus|Lejeinspektion|Mietinspektion|Huurinspectie|Mietinspektion|Leieinspeksjon|Rental Inspection|Inspekcja wynajmu" ["accessibility-audit"]="Accessibility Audit|Tillgänglighetsaudit|Barrierefreiheits-Audit|Audit d'accessibilité|Toegankelijkheidsaudit|Accessibility Audit|Audit accessibilità|Auditoría de accesibilidad|Saavutettavuustarkastus|Tilgængelighedsaudit|Barrierefreiheits-Audit|Toegankelijkheidsaudit|Barrierefreiheits-Audit|Universell utforming revisjon|Accessibility Audit|Audyt dostępności" ) # Funktion för att generera en landningssida generate_page() { local market=$1 local use_case=$2 local lang=$(echo "${MARKETS[$market]}" | cut -d'|' -f1) local country_name=$(echo "${MARKETS[$market]}" | cut -d'|' -f2) local country_en=$(echo "${MARKETS[$market]}" | cut -d'|' -f3) local country_code=$(echo "${MARKETS[$market]}" | cut -d'|' -f4) local pay_range=$(echo "${MARKETS[$market]}" | cut -d'|' -f5) local tax_authority=$(echo "${MARKETS[$market]}" | cut -d'|' -f6) local currency=$(echo "${MARKETS[$market]}" | cut -d'|' -f7) local badge=$(echo "${MARKETS[$market]}" | cut -d'|' -f8) local domain=$(echo "${MARKETS[$market]}" | cut -d'|' -f9) # Hämta use case-namn baserat på språk local use_case_names="${USE_CASES[$use_case]}" local use_case_name="" case $lang in sv) use_case_name=$(echo "$use_case_names" | cut -d'|' -f2) ;; de) use_case_name=$(echo "$use_case_names" | cut -d'|' -f3) ;; fr) use_case_name=$(echo "$use_case_names" | cut -d'|' -f4) ;; nl) use_case_name=$(echo "$use_case_names" | cut -d'|' -f5) ;; en-gb|en-ie) use_case_name=$(echo "$use_case_names" | cut -d'|' -f6) ;; it) use_case_name=$(echo "$use_case_names" | cut -d'|' -f7) ;; es) use_case_name=$(echo "$use_case_names" | cut -d'|' -f8) ;; fi) use_case_name=$(echo "$use_case_names" | cut -d'|' -f9) ;; da) use_case_name=$(echo "$use_case_names" | cut -d'|' -f10) ;; at) use_case_name=$(echo "$use_case_names" | cut -d'|' -f11) ;; be) use_case_name=$(echo "$use_case_names" | cut -d'|' -f12) ;; ch) use_case_name=$(echo "$use_case_names" | cut -d'|' -f13) ;; no) use_case_name=$(echo "$use_case_names" | cut -d'|' -f14) ;; ie) use_case_name=$(echo "$use_case_names" | cut -d'|' -f15) ;; pl) use_case_name=$(echo "$use_case_names" | cut -d'|' -f16) ;; *) use_case_name=$(echo "$use_case_names" | cut -d'|' -f1) ;; esac # Skapa katalog mkdir -p "$BASE_DIR/$market/$use_case" # Generera HTML (förenklad version) cat > "$BASE_DIR/$market/$use_case/index.html" << EOF $use_case_name — quiXzoom | $country_name
$badge

$use_case_name

quiXzoom — Crowdsourcad datainsamling i $country_name. Tjäna $pay_range per uppdrag.

Bli Zoomer nu

Hur det fungerar

1. Hitta uppdrag

Se tillgängliga $use_case_name-uppdrag nära dig i appen.

2. Dokumentera

Följ instruktionerna och ta bilder med din smartphone.

3. Få betalt

Betalt varje vecka. $pay_range per godkänt uppdrag.

Varför quiXzoom?

Flexibelt

Jobba när du vill. Inga scheman, inga minimikrav.

Betalt snabbt

Varje vecka direkt till ditt konto via Stripe.

Tillförlitligt

Global plattform med verifierade uppdrag och tydlig feedback.

EOF echo "✓ $market/$use_case/index.html" } # Räknare TOTAL=0 DONE=0 # Räkna totalt for market in "${!MARKETS[@]}"; do for use_case in "${!USE_CASES[@]}"; do ((TOTAL++)) done done echo "Genererar $TOTAL landningssidor..." echo "" # Generera alla sidor for market in se de fr nl uk it es fi da at be ch no ie pl; do echo "=== Marknad: $market ===" for use_case in "${!USE_CASES[@]}"; do generate_page "$market" "$use_case" ((DONE++)) done echo "" done echo "" echo "✅ Klart! $DONE landningssidor genererade." echo "" echo "Nästa steg:" echo "1. Deploya till S3: aws s3 sync $BASE_DIR s3://quixzoom-landing-prod/markets/" echo "2. Invalida CloudFront-cache" echo "3. Verifiera att alla sidor är tillgängliga"