From 54bbb467557e2afbed4d3951ff670a64587590b0 Mon Sep 17 00:00:00 2001 From: hsiegeln <37154749+hsiegeln@users.noreply.github.com> Date: Sat, 25 Apr 2026 02:33:50 +0200 Subject: [PATCH] feat(sections): add ThreeAmWalkthrough component MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces DualValueProps + ProductShowcase with a single before/after split: a styled
 block (the 'without' state) next to the
existing /product/error-detail.png screenshot (the 'with' state).
Three short callouts below.

Section anchor #walkthrough is the target for the Hero's
'See it in action ↓' secondary CTA (added in Task 4).

The 'without' panel is implemented as a styled 
 per the spec —
no asset production required. A future phase may swap to a recorded
terminal screencap; that swap is a one-component change.

Co-Authored-By: Claude Opus 4.7 (1M context) 
---
 .../sections/ThreeAmWalkthrough.astro         | 104 ++++++++++++++++++
 1 file changed, 104 insertions(+)
 create mode 100644 src/components/sections/ThreeAmWalkthrough.astro

diff --git a/src/components/sections/ThreeAmWalkthrough.astro b/src/components/sections/ThreeAmWalkthrough.astro
new file mode 100644
index 0000000..c05ff23
--- /dev/null
+++ b/src/components/sections/ThreeAmWalkthrough.astro
@@ -0,0 +1,104 @@
+---
+import Lightbox from '../Lightbox.astro';
+
+interface Callout {
+  title: string;
+  body: string;
+}
+
+const callouts: Callout[] = [
+  {
+    title: 'Cross-service correlation.',
+    body: 'Every exchange carries its correlation ID forward. One click jumps to what the downstream route did with the same message.',
+  },
+  {
+    title: 'Runtime detail, not guesswork.',
+    body: 'Circuit breaker tripped. Fallback path ran. Request tried backend:80. The pieces a 3 AM page actually needs — already captured.',
+  },
+  {
+    title: 'The whole story of a failure.',
+    body: 'Exception class, message, stack trace, headers, payload — all pinned to the exchange. No log-grepping tour.',
+  },
+];
+---
+
+
+
+

// When something breaks

+

+ The 3 AM page. With and without Cameleer. +

+

+ Same Camel app. Same failed exchange. Different night. +

+
+ +
+
+
+ Without Cameleer · 03:12 AM +
+
$ kubectl logs camel-router-7d4f8c
+ERROR org.apache.camel.CamelExecutionException
+  at org.apache.camel.processor.SendProcessor.process
+  at org.apache.camel.processor.Pipeline.process
+  ...
+
+$ grep "order-842" *.log
+router-3.log: WARN  exchange order-842 stuck in saga-fulfillment
+router-3.log: ERROR processor backend:80 → connect timeout
+
+$ ssh prod-integration-3
+prod-integration-3 $ kubectl logs ...
+
+> slack #integration-team
+  "anyone know why order-842 is stuck??"
+  [3 of 4 reactions, no answer]
+
+~47 min later: someone wakes up an SRE.
+
+ +
+
+ With Cameleer · 30 sec +
+ +
+ Open exchange order-842 → see the failure pinned → click Replay after fix. +
+
+
+
+ +
    + {callouts.map((c, i) => ( +
  • + +

    {c.title}

    +

    {c.body}

    +
  • + ))} +
+
+
+ +