|
| 1 | +--- |
| 2 | +layout: layouts/base.njk |
| 3 | +sitemapPriority: 0.9 |
| 4 | +--- |
| 5 | +{# Hero Section #} |
| 6 | +<div class="w-full" style="background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);"> |
| 7 | + <div class="w-full pt-12 pb-12 md:pt-8 md:pb-10"> |
| 8 | + <div class="px-6 container mx-auto md:max-w-screen-lg"> |
| 9 | + <div class="md:flex items-center md:flex-row md:justify-between gap-8"> |
| 10 | + <div class="my-auto max-md:mx-auto md:w-7/12 max-w-xl max-md:text-center"> |
| 11 | + <div class="flex items-center gap-2 mb-3 max-md:justify-center"> |
| 12 | + <span class="bg-green-700 text-white text-xs font-bold px-3 py-1 rounded uppercase tracking-wide">Certified</span> |
| 13 | + <span class="text-green-400 text-xs font-semibold uppercase tracking-wide">Enterprise Integration</span> |
| 14 | + </div> |
| 15 | + <h1 class="w-full mt-0 md:px-0 m-auto font-medium text-white"> |
| 16 | + {{ integrationName }} |
| 17 | + </h1> |
| 18 | + <p class="text-gray-300 mb-6 text-lg">{{ heroDescription }}</p> |
| 19 | + {# Trust signal pills #} |
| 20 | + <div class="flex flex-wrap gap-2 mb-8 max-md:justify-center"> |
| 21 | + {% if trustSla %} |
| 22 | + <span class="bg-white/10 text-gray-200 text-xs font-medium px-3 py-1.5 rounded-full border border-white/20">{{ trustSla }} SLA</span> |
| 23 | + {% endif %} |
| 24 | + {% if trustSupportResponse %} |
| 25 | + <span class="bg-white/10 text-gray-200 text-xs font-medium px-3 py-1.5 rounded-full border border-white/20">{{ trustSupportResponse }} Support Response</span> |
| 26 | + {% endif %} |
| 27 | + {% if trustUpdateFrequency %} |
| 28 | + <span class="bg-white/10 text-gray-200 text-xs font-medium px-3 py-1.5 rounded-full border border-white/20">{{ trustUpdateFrequency }} Updates</span> |
| 29 | + {% endif %} |
| 30 | + </div> |
| 31 | + <div class="flex gap-3 max-md:max-w-sm max-md:mx-auto max-sm:flex-col"> |
| 32 | + <a class="ff-btn ff-btn--primary min-h-[40px]" href="/contact-us/" |
| 33 | + onclick="capture('cta-contact-us', {'position': 'primary'}, {'page': 'integration-{{ integrationSlug }}'})">TALK TO AN EXPERT</a> |
| 34 | + <a class="ff-btn ff-btn--primary-outlined min-h-[40px] !text-white !border-white/40 hover:!bg-white/10" href="{% include 'sign-up-url.njk' %}" |
| 35 | + onclick="capture('cta-get-started', {'position': 'primary'}, {'page': 'integration-{{ integrationSlug }}'})">START FREE TRIAL</a> |
| 36 | + </div> |
| 37 | + </div> |
| 38 | + </div> |
| 39 | + </div> |
| 40 | + </div> |
| 41 | +</div> |
| 42 | + |
| 43 | +{# Use Cases Section #} |
| 44 | +{% if useCasesJson %} |
| 45 | +{% set useCasesList = useCasesJson | fromJson %} |
| 46 | +<div class="w-full py-12 px-6"> |
| 47 | + <div class="max-w-screen-lg mx-auto"> |
| 48 | + <h2 class="font-bold text-center mb-8">What You Can Build</h2> |
| 49 | + <div class="grid sm:grid-cols-2 md:grid-cols-3 gap-6"> |
| 50 | + {% for uc in useCasesList %} |
| 51 | + <div class="bg-white border border-gray-200 rounded-lg p-6 hover:shadow-md transition-shadow"> |
| 52 | + <h3 class="mt-0 text-lg font-semibold">{{ uc.title }}</h3> |
| 53 | + <p class="text-gray-600 text-sm mb-0">{{ uc.description }}</p> |
| 54 | + </div> |
| 55 | + {% endfor %} |
| 56 | + </div> |
| 57 | + </div> |
| 58 | +</div> |
| 59 | +{% endif %} |
| 60 | + |
| 61 | +{# How It Works #} |
| 62 | +<div class="w-full bg-gray-50 py-12 px-6"> |
| 63 | + <div class="max-w-screen-lg mx-auto"> |
| 64 | + <h2 class="font-bold text-center mb-8">How FlowFuse Connects {{ integrationName }}</h2> |
| 65 | + <div class="flex items-center justify-center gap-2 sm:gap-4 my-8 flex-wrap sm:flex-nowrap"> |
| 66 | + <div class="bg-white border-2 border-green-200 rounded-lg p-4 sm:p-6 text-center min-w-[120px]"> |
| 67 | + <span class="font-bold text-lg">{{ integrationShortName }}</span> |
| 68 | + <p class="text-xs text-gray-500 mt-1 mb-0">Source System</p> |
| 69 | + </div> |
| 70 | + <div class="text-green-500 text-2xl">→</div> |
| 71 | + <div class="bg-indigo-50 border-2 border-indigo-300 rounded-lg p-4 sm:p-6 text-center min-w-[120px]"> |
| 72 | + <span class="font-bold text-lg text-indigo-700">FlowFuse</span> |
| 73 | + <p class="text-xs text-gray-500 mt-1 mb-0">Node-RED Platform</p> |
| 74 | + </div> |
| 75 | + <div class="text-green-500 text-2xl">→</div> |
| 76 | + <div class="bg-white border-2 border-green-200 rounded-lg p-4 sm:p-6 text-center min-w-[120px]"> |
| 77 | + <span class="font-bold text-lg">Any System</span> |
| 78 | + <p class="text-xs text-gray-500 mt-1 mb-0">Target</p> |
| 79 | + </div> |
| 80 | + </div> |
| 81 | + <p class="text-center text-gray-600 max-w-2xl mx-auto"> |
| 82 | + FlowFuse uses Node-RED's visual flow editor to connect {{ integrationShortName }} devices and systems |
| 83 | + to any destination — databases, cloud platforms, dashboards, and enterprise applications. |
| 84 | + No custom code required. |
| 85 | + </p> |
| 86 | + </div> |
| 87 | +</div> |
| 88 | + |
| 89 | +{# Benefits Section #} |
| 90 | +{% if benefitsJson %} |
| 91 | +{% set benefitsList = benefitsJson | fromJson %} |
| 92 | +<div class="w-full py-12 px-6"> |
| 93 | + <div class="max-w-screen-lg mx-auto"> |
| 94 | + <h2 class="font-bold text-center mb-8">Why Choose FlowFuse Certified</h2> |
| 95 | + <div class="grid sm:grid-cols-2 md:grid-cols-3 gap-6"> |
| 96 | + {% for benefit in benefitsList %} |
| 97 | + <div class="bg-white border border-gray-200 rounded-lg p-6"> |
| 98 | + <div class="w-10 h-10 bg-green-50 rounded-lg flex items-center justify-center mb-4"> |
| 99 | + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-5 h-5 text-green-600"> |
| 100 | + <path fill-rule="evenodd" d="M8.603 3.799A4.49 4.49 0 0 1 12 2.25c1.357 0 2.573.6 3.397 1.549a4.49 4.49 0 0 1 3.498 1.307 4.491 4.491 0 0 1 1.307 3.497A4.49 4.49 0 0 1 21.75 12a4.49 4.49 0 0 1-1.549 3.397 4.491 4.491 0 0 1-1.307 3.497 4.491 4.491 0 0 1-3.497 1.307A4.49 4.49 0 0 1 12 21.75a4.49 4.49 0 0 1-3.397-1.549 4.49 4.49 0 0 1-3.498-1.306 4.491 4.491 0 0 1-1.307-3.498A4.49 4.49 0 0 1 2.25 12c0-1.357.6-2.573 1.549-3.397a4.49 4.49 0 0 1 1.307-3.497 4.49 4.49 0 0 1 3.497-1.307Zm7.007 6.387a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z" clip-rule="evenodd" /> |
| 101 | + </svg> |
| 102 | + </div> |
| 103 | + <h3 class="mt-0 text-lg font-semibold">{{ benefit.title }}</h3> |
| 104 | + <p class="text-gray-600 text-sm mb-0">{{ benefit.description }}</p> |
| 105 | + </div> |
| 106 | + {% endfor %} |
| 107 | + </div> |
| 108 | + </div> |
| 109 | +</div> |
| 110 | +{% endif %} |
| 111 | + |
| 112 | +{# Certified Nodes Included #} |
| 113 | +{% if certifiedNodeIds.length > 0 %} |
| 114 | +<div class="w-full bg-gray-50 py-12 px-6"> |
| 115 | + <div class="max-w-screen-lg mx-auto"> |
| 116 | + <h2 class="font-bold text-center mb-2">Certified Nodes Included</h2> |
| 117 | + <p class="text-center text-gray-500 mb-8">The npm packages included with this integration</p> |
| 118 | + <div class="grid sm:grid-cols-2 gap-4 max-w-2xl mx-auto"> |
| 119 | + {% for nodeId in certifiedNodeIds %} |
| 120 | + <div class="bg-white border border-gray-200 rounded-lg p-5"> |
| 121 | + <div class="flex items-center gap-2 mb-2"> |
| 122 | + <span class="bg-green-100 text-green-800 text-xs font-bold px-2 py-0.5 rounded">Certified</span> |
| 123 | + </div> |
| 124 | + <code class="text-sm text-indigo-600 font-mono">{{ nodeId }}</code> |
| 125 | + <div class="mt-3"> |
| 126 | + <a href="https://www.npmjs.com/package/{{ nodeId }}" target="_blank" rel="noopener noreferrer" |
| 127 | + class="text-xs text-gray-500 hover:text-indigo-600 inline-flex items-center gap-1"> |
| 128 | + View on npm |
| 129 | + <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-3 h-3"> |
| 130 | + <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 6H5.25A2.25 2.25 0 003 8.25v10.5A2.25 2.25 0 005.25 21h10.5A2.25 2.25 0 0018 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25" /> |
| 131 | + </svg> |
| 132 | + </a> |
| 133 | + </div> |
| 134 | + </div> |
| 135 | + {% endfor %} |
| 136 | + </div> |
| 137 | + </div> |
| 138 | +</div> |
| 139 | +{% endif %} |
| 140 | + |
| 141 | +{# Connect to Other Integrations #} |
| 142 | +<div class="w-full py-12 px-6"> |
| 143 | + <div class="max-w-screen-lg mx-auto"> |
| 144 | + <h2 class="font-bold text-center mb-8">Connect {{ integrationName }} to...</h2> |
| 145 | + <div class="grid sm:grid-cols-2 md:grid-cols-3 gap-4"> |
| 146 | + {% for integration in certifiedIntegrations.integrations %} |
| 147 | + {% if integration.slug != integrationSlug %} |
| 148 | + <a href="/integrations/{{ integrationSlug }}/and/{{ integration.slug }}/" |
| 149 | + class="block p-4 bg-white rounded-lg border border-gray-200 hover:border-green-300 hover:shadow-md transition-all hover:no-underline"> |
| 150 | + <span class="font-semibold text-gray-800">{{ integrationName }}</span> |
| 151 | + <span class="text-gray-400 mx-2">→</span> |
| 152 | + <span class="font-semibold text-indigo-600">{{ integration.name }}</span> |
| 153 | + </a> |
| 154 | + {% endif %} |
| 155 | + {% endfor %} |
| 156 | + </div> |
| 157 | + </div> |
| 158 | +</div> |
| 159 | + |
| 160 | +{# CTA #} |
| 161 | +{% include "common-cta.njk" %} |
0 commit comments