From 304a9d86fecef03dd8c793fb9ce3e35f12bfd0a2 Mon Sep 17 00:00:00 2001 From: Martin Donadieu Date: Mon, 11 May 2026 11:00:30 +0200 Subject: [PATCH 1/7] Refresh product and solution page design --- apps/web/src/css/global.css | 140 +++++++ apps/web/src/layouts/Layout.astro | 3 +- apps/web/src/pages/app_mobile.astro | 2 +- apps/web/src/pages/ci_cd.astro | 381 +++++++++--------- apps/web/src/pages/index.astro | 2 +- apps/web/src/pages/integrations.astro | 2 +- apps/web/src/pages/live-update.astro | 2 +- apps/web/src/pages/native-build.astro | 2 +- apps/web/src/pages/plugins.astro | 2 +- apps/web/src/pages/solutions/agencies.astro | 2 +- .../src/pages/solutions/beta-testing.astro | 2 +- .../solutions/cordova-to-capacitor-ai.astro | 2 +- .../solutions/cordova-to-capacitor.astro | 2 +- .../src/pages/solutions/direct-updates.astro | 2 +- apps/web/src/pages/solutions/ecommerce.astro | 2 +- apps/web/src/pages/solutions/fintech.astro | 2 +- apps/web/src/pages/solutions/healthcare.astro | 2 +- .../solutions/ionic-enterprise-plugins.astro | 2 +- apps/web/src/pages/solutions/pr-preview.astro | 2 +- .../pages/solutions/production-updates.astro | 2 +- apps/web/src/pages/solutions/qsr.astro | 2 +- .../src/pages/solutions/solo-developers.astro | 2 +- apps/web/src/pages/solutions/startups.astro | 2 +- .../pages/solutions/version-targeting.astro | 2 +- .../web/src/pages/solutions/white-label.astro | 2 +- apps/web/src/services/pluginDocs.ts | 38 +- 26 files changed, 375 insertions(+), 231 deletions(-) diff --git a/apps/web/src/css/global.css b/apps/web/src/css/global.css index 5c2f1411b..7dd9a9eb9 100644 --- a/apps/web/src/css/global.css +++ b/apps/web/src/css/global.css @@ -259,6 +259,146 @@ body, overflow: auto; border-spacing: 0; } + +/* Shared refresh for product and solution pages. + Keeps old page content intact while aligning surfaces with pricing/enterprise. */ +.marketing-refresh { + background: #f9fafb; + color: #111827; +} + +.marketing-refresh main { + background: #f9fafb; +} + +.marketing-refresh section { + background-color: #f9fafb !important; +} + +.marketing-refresh section:nth-of-type(even) { + background-color: #ffffff !important; +} + +.marketing-refresh :where(.bg-gray-950, .bg-gray-900, .bg-gray-800, .bg-slate-950, .bg-slate-900, .bg-zinc-900, .bg-zinc-800) { + background-color: #ffffff !important; +} + +.marketing-refresh :where(.bg-gray-700, .bg-slate-800, .bg-zinc-700, .bg-\[\#111\], .bg-\[\#1a1a1a\], .bg-\[\#222\], .bg-\[\#1a1d24\]\/30, .bg-\[\#1a1d24\]\/80) { + background-color: #f3f4f6 !important; +} + +.marketing-refresh :where(.border-gray-800, .border-gray-700, .border-gray-600, .border-slate-700, .border-slate-600, .border-zinc-700, .border-white\/10, .border-white\/15) { + border-color: #e5e7eb !important; +} + +.marketing-refresh :where(h1.text-white, h2.text-white, h3.text-white, h4.text-white, p.text-white, li.text-white, div.text-white, span.text-white), +.marketing-refresh :where(.text-gray-100, .text-gray-200) { + color: #111827 !important; +} + +.marketing-refresh :where(.text-gray-300, .text-gray-400, .text-slate-300, .text-slate-400, .text-zinc-300, .text-zinc-400) { + color: #4b5563 !important; +} + +.marketing-refresh :where(header .text-slate-100, header .text-slate-200, header .text-gray-300) { + color: #4b5563 !important; +} + +.marketing-refresh header img[alt$='logo'] { + filter: invert(1) brightness(0.35) contrast(1.4); +} + +.marketing-refresh header :where(a.bg-slate-800\/80) { + background-color: #111827 !important; + border-color: #111827 !important; + color: #ffffff !important; +} + +.marketing-refresh header :where(a.bg-slate-800\/80 svg, a.bg-slate-800\/80 span) { + color: #ffffff !important; +} + +.marketing-refresh header :where(.bg-slate-800\/95, .bg-white\/5) { + background-color: rgb(255 255 255 / 0.95) !important; +} + +.marketing-refresh header :where(button.text-white, #mobile-menu a.text-white, #mobile-menu button.text-white) { + color: #111827 !important; +} + +.marketing-refresh header :where(.hover\:bg-white\/10:hover, .hover\:bg-slate-700:hover, .hover\:bg-gray-700:hover) { + background-color: #f3f4f6 !important; +} + +.marketing-refresh header :where(.hover\:text-white:hover) { + color: #111827 !important; +} + +.marketing-refresh + :where( + .text-blue-100, + .text-blue-200, + .text-sky-100, + .text-sky-200, + .text-cyan-100, + .text-cyan-200, + .text-emerald-100, + .text-emerald-200, + .text-green-100, + .text-green-200, + .text-amber-100, + .text-amber-200, + .text-orange-100, + .text-orange-200, + .text-rose-100, + .text-rose-200, + .text-red-100, + .text-red-200 + ) { + color: #1d4ed8 !important; +} + +.marketing-refresh :where(.rounded-3xl) { + border-radius: 1rem !important; +} + +.marketing-refresh :where(.rounded-2xl) { + border-radius: 0.875rem !important; +} + +.marketing-refresh :where(.shadow-lg, .shadow-xl, .shadow-2xl) { + box-shadow: 0 18px 45px rgb(15 23 42 / 0.08) !important; +} + +.marketing-refresh :where(.blur-3xl, .blur-xl) { + display: none !important; +} + +.marketing-refresh :where(a.bg-blue-600, a.bg-sky-600, a.bg-cyan-600, a.bg-emerald-600, a.bg-green-600, a.bg-amber-600, a.bg-orange-600, a.bg-rose-600, a.bg-red-600) { + background-color: #111827 !important; + color: #ffffff !important; + box-shadow: none !important; +} + +.marketing-refresh :where(a.border-gray-600, a.border-white\/30, a.bg-white\/5) { + border-color: #d1d5db !important; + background-color: #ffffff !important; + color: #111827 !important; +} + +.marketing-refresh :where(input, select, textarea) { + border-color: #d1d5db !important; + background-color: #ffffff !important; + color: #111827 !important; +} + +.marketing-refresh :where(input::placeholder, textarea::placeholder) { + color: #6b7280 !important; +} + +.marketing-refresh :where(table) { + color: #374151; +} .blog.prose :is(th, td):not(:where(.not-content *)) { border-bottom: 1px solid var(--color-gray-700); padding: 0.5rem 1rem; diff --git a/apps/web/src/layouts/Layout.astro b/apps/web/src/layouts/Layout.astro index 98aa7d619..c0f917786 100644 --- a/apps/web/src/layouts/Layout.astro +++ b/apps/web/src/layouts/Layout.astro @@ -8,6 +8,7 @@ import globalStylesHref from '../css/global.css?url' const content = Astro.props.content ?? {} const disableThirdPartyScripts = Astro.props.disableThirdPartyScripts ?? false +const pageStyle = Astro.props.pageStyle ?? '' const isLocalhost = Astro.url.origin.includes('localhost:') const enableThirdPartyScripts = !isLocalhost && !disableThirdPartyScripts @@ -30,7 +31,7 @@ const enableThirdPartyScripts = !isLocalhost && !disableThirdPartyScripts > Skip to main content -
+
diff --git a/apps/web/src/pages/app_mobile.astro b/apps/web/src/pages/app_mobile.astro index d78d97bc1..8983925a1 100644 --- a/apps/web/src/pages/app_mobile.astro +++ b/apps/web/src/pages/app_mobile.astro @@ -13,7 +13,7 @@ const content = { } --- - +
diff --git a/apps/web/src/pages/ci_cd.astro b/apps/web/src/pages/ci_cd.astro index 0485b420f..556c6f89d 100644 --- a/apps/web/src/pages/ci_cd.astro +++ b/apps/web/src/pages/ci_cd.astro @@ -19,15 +19,15 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso }) --- - +
-
-
+
+
-
- +
+ -

+

Still Building iOS & Android
Apps Manually?

@@ -48,7 +48,7 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso

-
+

What if builds happened automatically on every commit?

@@ -59,25 +59,26 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
-
-
+
+
-

The Native Build Nightmare

+

The Native Build Nightmare

Every mobile developer knows the pain of manual builds. Here's how professional CI/CD setup solves it forever.

-
+
-
-
-
- +
+
+
+
-
- +
+
@@ -132,8 +133,8 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
- +
+
@@ -144,8 +145,8 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
- +
+
@@ -156,8 +157,8 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
- +
+
@@ -168,8 +169,8 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-

Result: Slow releases, team bottlenecks, wasted developer time

+
+

Result: Slow releases, team bottlenecks, wasted developer time

@@ -177,10 +178,10 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
-
- +
+
+
+
@@ -189,8 +190,8 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
- +
+
@@ -201,8 +202,8 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
- +
+
@@ -213,8 +214,8 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
- +
+
@@ -225,8 +226,8 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
- +
+
@@ -237,8 +238,8 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-

Result: Efficient team, reliable builds, faster release cycles

+
+

Result: Efficient team, reliable builds, faster release cycles

@@ -247,9 +248,9 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso

Works with your existing CI/CD setup

-
+
- + @@ -257,7 +258,7 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso GitHub Actions
- + @@ -265,11 +266,11 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso GitLab CI
- Jenkins + Jenkins Jenkins
- CircleCI + CircleCI CircleCI
@@ -281,10 +282,10 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
+
+
-

+

From Code to App Stores Automatically

@@ -295,7 +296,7 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso

-
+
1

Professional Setup

@@ -309,7 +310,7 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
+
2

Push Code, Get Builds

@@ -321,7 +322,7 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
+
3

Deploy to Stores Seamlessly

@@ -334,24 +335,24 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
+

How much time are you wasting on manual builds?

Every manual build is hours of developer time lost. Inconsistent environments cause bugs that take days to debug. Your team's productivity is suffering.

-
+
Start Automating Builds - + @@ -362,28 +363,28 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
+
+
-

Watch Your Apps Build Automatically

+

Watch Your Apps Build Automatically

Push code and watch as CI/CD handles everything - from building to signing to deployment

-
+
-
-
+
+
-
-
-
+
+
+
iOS Build - GitHub Actions
- + Running @@ -437,18 +438,18 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
+
+
-
-
-
+
+
+
Android Build - GitLab CI
- + Running @@ -498,16 +499,16 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
+
+
0
Manual Steps Required
-
+
100%
Build Success Rate
-
+
5 min
Average Build Time
@@ -516,21 +517,21 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
+
+
-

Why Automate with CI/CD?

+

Why Automate with CI/CD?

Transform your mobile deployment workflow with these powerful benefits

-
-
-
-
-
- +
+
+
+
+
+
@@ -538,7 +539,7 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso

Push code and get native iOS and Android builds automatically. No manual Xcode or Android Studio required - builds run in the cloud.

- + Build iOS apps without owning a Mac @@ -547,12 +548,12 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
-
-
-
- +
+
+
+
+
+
@@ -560,7 +561,7 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso

Updates happen in the background while your app is running. Users never experience interruptions or forced updates.

- + Seamless background installation @@ -569,12 +570,12 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
-
-
-
- +
+
+
+
+
+

Only deploy when tests pass. Integrate with your existing test suites and quality checks for bulletproof releases.

- + Deploy only when tests pass @@ -595,12 +596,12 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
-
-
-
- +
+
+
+
+
+
- + Complete build history and artifact storage @@ -626,18 +627,18 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
+
+
-

Advanced CI/CD Features

+

Advanced CI/CD Features

Take your deployment strategy to the next level with these powerful features

-
-
- +
+
+ Deploy to different channels based on branch, environment, or custom conditions. Perfect for staging, beta, and production workflows.

  • - + Branch-based deployments
  • - + Environment-specific channels
  • - + Conditional deployments @@ -670,9 +671,9 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
- +
+
+ Start with a small percentage of users and gradually increase. Monitor metrics and automatically halt problematic deployments.

  • - + Percentage-based rollouts
  • - + Automatic halt on errors
  • - + Metrics-based decisions @@ -706,9 +707,9 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
- +
+
+
@@ -716,19 +717,19 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso

Full API access for custom integrations. Build your own deployment tools or integrate with existing systems.

  • - + Complete REST API
  • - + Custom integrations
  • - + Webhook notifications @@ -740,17 +741,17 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
+
-
-
-
+
+
+
-
+
-
- +
+ -
+
-
-
-
- +
+
+
+
@@ -789,10 +790,10 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
-
- +
+
+
+ -
-
+
+
-
Most Popular
+
Most Popular
-
- +
+ @@ -824,17 +825,17 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso

Platform Independence

- Adapt configuration to your infrastructure. Own the complete pipeline, modify anytime - zero vendor lock-in, pay your - provider directly. + Adapt configuration to your infrastructure. Own the complete pipeline, modify anytime - zero vendor lock-in, pay your provider + directly.

-
-
-
- +
+
+
+ Benefit from our deep expertise in mobile app CI/CD best practices, without the need to build and maintain a complex system yourself.

-
-
- +
+
+
@@ -862,10 +863,10 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
+
-
- +
+ Smart Investment, Massive Savings -
+
-
+
Managed Solutions
$499/month
Appflow or similar
-
-
- Best Value +
+
+ Best Value
Our Setup - You Own It
$2,600 + $30/mo
@@ -896,31 +897,32 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
+
5-Year Savings
$25,340
Massive cost reduction
-
+

One-time setup fee of $2,600 saves you $25,340+ over 5 years vs managed solutions.

Own your setup with zero vendor lock-in

Break even in just 6 months, then pure savings.

-
+
+ > +
Get Started Today - + @@ -932,31 +934,32 @@ const ldJSON = createLdJsonGraph(Astro.locals.runtimeConfig.public, serviceLdJso
-
-
+
+
-

Ready to Automate Your Native Builds?

+

Ready to Automate Your Native Builds?

Stop wasting time on manual builds. Get professional CI/CD setup for iOS and Android apps.

-
-