#!/bin/bash # Update all landing pages with cross-links and synergies set -e PAGES=( "bridge-inspection-sweden:πŸ‡ΈπŸ‡ͺ Sweden:Trafikverket Compliant" "bridge-inspection-germany:πŸ‡©πŸ‡ͺ Germany:DIN Compliant" "bridge-inspection-france:πŸ‡«πŸ‡· France:CEREMA Aligned" "bridge-inspection-uk:πŸ‡¬πŸ‡§ UK:DfT Compliant" "bridge-inspection-netherlands:πŸ‡³πŸ‡± Netherlands:Rijkswaterstaat Compliant" "infrastructure-monitoring-sweden:πŸ‡ΈπŸ‡ͺ Sweden:National Coverage" "infrastructure-monitoring-germany:πŸ‡©πŸ‡ͺ Germany:Bundesweit" "infrastructure-monitoring-france:πŸ‡«πŸ‡· France:National Coverage" "infrastructure-monitoring-uk:πŸ‡¬πŸ‡§ UK:National Coverage" "infrastructure-monitoring-netherlands:πŸ‡³πŸ‡± Netherlands:National Coverage" ) # Function to generate related services section generate_related() { local current_page="$1" local current_type="$2" local current_country="$3" local related="" # Add the opposite service type for same country if [[ "$current_type" == "bridge-inspection" ]]; then related+=" \n" related+="
$(get_flag "$current_country")
\n" related+="

Infrastructure Monitoring β€” $(get_country_name "$current_country")

\n" related+="

Continuous monitoring of roads, bridges, and utilities beyond single inspections.

\n" related+="
Explore β†’
\n" related+="
\n" else related+=" \n" related+="
$(get_flag "$current_country")
\n" related+="

Bridge Inspection β€” $(get_country_name "$current_country")

\n" related+="

Professional bridge inspections with regulatory compliance.

\n" related+="
Explore β†’
\n" related+="
\n" fi # Add other countries for same service type for page in "${PAGES[@]}"; do local page_name=$(echo "$page" | cut -d: -f1) local page_type=$(echo "$page_name" | cut -d- -f1-2) local page_country=$(echo "$page_name" | sed 's/.*-//') if [[ "$page_type" == "$current_type" && "$page_country" != "$current_country" && "$page_name" != "$current_page" ]]; then related+=" \n" related+="
$(get_flag "$page_country")
\n" related+="

$(echo "$current_type" | sed 's/-/ /g' | awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) substr($i,2)} 1') β€” $(get_country_name "$page_country")

\n" related+="

$(get_compliance "$page")

\n" related+="
Explore β†’
\n" related+="
\n" fi done # Add enterprise solutions related+=" \n" related+="
🏒
\n" related+="

Enterprise Solutions

\n" related+="

Custom inspection programs with API integration and SLA guarantees.

\n" related+="
Learn more β†’
\n" related+="
\n" echo "$related" } get_flag() { case "$1" in sweden) echo "πŸ‡ΈπŸ‡ͺ" ;; germany) echo "πŸ‡©πŸ‡ͺ" ;; france) echo "πŸ‡«πŸ‡·" ;; uk) echo "πŸ‡¬πŸ‡§" ;; netherlands) echo "πŸ‡³πŸ‡±" ;; *) echo "🌍" ;; esac } get_country_name() { case "$1" in sweden) echo "Sweden" ;; germany) echo "Germany" ;; france) echo "France" ;; uk) echo "UK" ;; netherlands) echo "Netherlands" ;; *) echo "$1" ;; esac } get_compliance() { echo "$1" | cut -d: -f3 } # Update each page for page in "${PAGES[@]}"; do page_name=$(echo "$page" | cut -d: -f1) page_flag=$(echo "$page" | cut -d: -f2 | cut -d' ' -f1) page_country=$(echo "$page" | cut -d: -f2 | cut -d' ' -f2) page_compliance=$(echo "$page" | cut -d: -f3) page_type=$(echo "$page_name" | cut -d- -f1-2) echo "Updating $page_name..." # Download current page aws s3 cp "s3://quixzoom-landing-prod/$page_name.html" "/tmp/$page_name.html" 2>/dev/null || continue # Create updated version with cross-links cat > "/tmp/${page_name}-new.html" << EOF $(echo "$page_type" | sed 's/-/ /g' | awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) substr($i,2)} 1') in $(get_country_name "$page_country") β€” quiXzoom
$(echo "$page_type" | sed 's/-/ /g' | awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) substr($i,2)} 1'): πŸ‡ΈπŸ‡ͺ Sweden πŸ‡©πŸ‡ͺ Germany πŸ‡«πŸ‡· France πŸ‡¬πŸ‡§ UK πŸ‡³πŸ‡± Netherlands
$page_flag $(get_country_name "$page_country") Β· $page_compliance

$(echo "$page_type" | sed 's/-/ /g' | awk '{for(i=1;i<=NF;i++) $i=toupper(substr($i,1,1)) substr($i,2)} 1') in $(get_country_name "$page_country")

Nationwide coverage. Deploy inspection missions in hours, not weeks.

Why choose quiXzoom

Trusted by infrastructure operators across Europe

Regulatory Compliant

All inspections follow local technical requirements and documentation standards. Digital reports ready for submission.

Learn about compliance β†’

Rapid Deployment

Launch inspection missions across multiple sites simultaneously. Zoomers can be on-site within 24 hours.

See how deployment works β†’

Verified Data

AI-powered quality control ensures every photo, measurement, and observation meets professional standards.

Explore quality assurance β†’

Coverage across $(get_country_name "$page_country")

Comprehensive national coverage

Urban Areas

Major cities and metropolitan regions with detailed analysis and high-frequency monitoring.

Rural Infrastructure

Regional roads and smaller crossings with accessibility-focused inspection protocols.

Specialized Assets

Railway bridges, tunnels, and critical infrastructure with specialized assessment protocols.

Related services

Complete infrastructure intelligence solutions

Start today

Get a custom quote for your inspection programme. No minimum commitment.

View pricing Contact sales
EOF # Upload updated page aws s3 cp "/tmp/${page_name}-new.html" "s3://quixzoom-landing-prod/$page_name.html" --content-type "text/html" --cache-control "max-age=3600" echo "βœ… Updated $page_name" done echo "" echo "All pages updated!" echo "Invalidating CloudFront cache..." aws cloudfront create-invalidation --distribution-id EE30B9WM5ZYM7 --paths "/*" --query 'Invalidation.Id' --output text