This is an automated email from the ASF dual-hosted git repository.

shuber pushed a commit to branch UNOMI-932-website-modernization
in repository https://gitbox.apache.org/repos/asf/unomi-site.git

commit 1138ffca56a58bc68c70be7b90475031c987fabe
Author: Serge Huber <[email protected]>
AuthorDate: Sat Feb 14 17:29:47 2026 +0100

    Community, events, integrations: Slack access, Salesforce removal, ASF 
compliance
    
    - Community: rewrite Slack card with ASF access paths, update monthly 
meeting
      with direct Zoom link and 'open to all' messaging, add mailing list anchor
    - Team: modernize to card layout, update affiliations, lazy-load gravatars
    - Events: restructure past events with local thumbnails, add CollectionPage 
schema
    - Integrations: remove Salesforce connector, add Groovy actions 
(recommended)
      and Java plugins guidance, remove Unomi UI/Inoyu UI cards for ASF 
compliance,
      use generic labels in Mermaid diagram
    - Connectors: update description for Salesforce deprecation
    - Stories: replace inline shuffle script with shared shuffle.js
    - All pages: fix rel="noopener", protocol upgrades, inline style cleanup
    
    Co-authored-by: Cursor <[email protected]>
---
 .../webapp/community/events/apachecon/index.html   |  37 +++----
 src/main/webapp/community/events/index.html        |  97 ++++++++++++-------
 .../community/events/meetups/2021-11-18.html       |  13 +--
 src/main/webapp/community/index.html               |  33 ++++---
 .../webapp/community/maturity-model-report.html    |   5 +-
 src/main/webapp/community/policies.html            |   5 +-
 src/main/webapp/community/team.html                |  45 ++++-----
 src/main/webapp/connectors.html                    |   5 +-
 src/main/webapp/integrations.html                  | 106 +++++++--------------
 src/main/webapp/stories.html                       |  21 +---
 10 files changed, 180 insertions(+), 187 deletions(-)

diff --git a/src/main/webapp/community/events/apachecon/index.html 
b/src/main/webapp/community/events/apachecon/index.html
index 5135e57..4e49036 100644
--- a/src/main/webapp/community/events/apachecon/index.html
+++ b/src/main/webapp/community/events/apachecon/index.html
@@ -1,6 +1,7 @@
 ---
 title: Past Apache Events
 description: "Archive of Apache Unomi presentations at ApacheCon and 
Feathercast events."
+keywords: "ApacheCon, Apache Unomi talks, conference presentations, CDP talks, 
open source conferences"
 layout: default
 ---
 
@@ -37,9 +38,9 @@ layout: default
                 <h2 class="h4 mb-4">Feathercast</h2>
                 <div class="row g-4 mb-5">
                     <div class="col-md-5">
-                        <a href="https://www.youtube.com/watch?v=EyT0_so-ayI"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden" style="aspect-ratio:16/9">
-                            <img 
src="/assets/images/videos/feathercast-EyT0_so-ayI.jpg" alt="Feathercast 
Interview 2020" class="w-100 h-100" style="object-fit:cover" loading="lazy">
-                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                        <a href="https://www.youtube.com/watch?v=EyT0_so-ayI"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden video-thumbnail">
+                            <img 
src="/assets/images/videos/feathercast-EyT0_so-ayI.jpg" alt="Feathercast 
Interview 2020" class="w-100 h-100 img-cover" loading="lazy">
+                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                         </a>
                     </div>
                     <div class="col-md-7 d-flex align-items-center">
@@ -53,9 +54,9 @@ layout: default
                 <h2 class="h4 mb-4">ApacheCon NA 2019</h2>
                 <div class="row g-4 mb-4">
                     <div class="col-md-5">
-                        <a href="https://www.youtube.com/watch?v=3VhC3x0GdDQ"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden" style="aspect-ratio:16/9">
-                            <img 
src="/assets/images/videos/apachecon-2019-predictionio-3VhC3x0GdDQ.jpg" 
alt="Adding AI to Apache Unomi using PredictionIO" class="w-100 h-100" 
style="object-fit:cover" loading="lazy">
-                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                        <a href="https://www.youtube.com/watch?v=3VhC3x0GdDQ"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden video-thumbnail">
+                            <img 
src="/assets/images/videos/apachecon-2019-predictionio-3VhC3x0GdDQ.jpg" 
alt="Adding AI to Apache Unomi using PredictionIO" class="w-100 h-100 
img-cover" loading="lazy">
+                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                         </a>
                     </div>
                     <div class="col-md-7 d-flex align-items-center">
@@ -67,9 +68,9 @@ layout: default
                 </div>
                 <div class="row g-4 mb-5">
                     <div class="col-md-5">
-                        <a href="https://www.youtube.com/watch?v=5ts6LuNwH9o"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden" style="aspect-ratio:16/9">
-                            <img 
src="/assets/images/videos/apachecon-2019-static-5ts6LuNwH9o.jpg" alt="Apache 
Unomi segmentation in static website" class="w-100 h-100" 
style="object-fit:cover" loading="lazy">
-                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                        <a href="https://www.youtube.com/watch?v=5ts6LuNwH9o"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden video-thumbnail">
+                            <img 
src="/assets/images/videos/apachecon-2019-static-5ts6LuNwH9o.jpg" alt="Apache 
Unomi segmentation in static website" class="w-100 h-100 img-cover" 
loading="lazy">
+                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                         </a>
                     </div>
                     <div class="col-md-7 d-flex align-items-center">
@@ -83,9 +84,9 @@ layout: default
                 <h2 class="h4 mb-4">ApacheCon Chicago Roadshow 2019</h2>
                 <div class="row g-4 mb-5">
                     <div class="col-md-5">
-                        <a 
href="https://www.youtube.com/watch?v=ut2ReqhMl2Y&t=3699"; target="_blank" 
rel="noopener" class="d-block position-relative rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                            <img 
src="/assets/images/videos/apachecon-2019-ut2ReqhMl2Y.jpg" alt="Customer 
Segmentation and Marketing Automation" class="w-100 h-100" 
style="object-fit:cover" loading="lazy">
-                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                        <a 
href="https://www.youtube.com/watch?v=ut2ReqhMl2Y&t=3699"; target="_blank" 
rel="noopener" class="d-block position-relative rounded overflow-hidden 
video-thumbnail">
+                            <img 
src="/assets/images/videos/apachecon-2019-ut2ReqhMl2Y.jpg" alt="Customer 
Segmentation and Marketing Automation" class="w-100 h-100 img-cover" 
loading="lazy">
+                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                         </a>
                     </div>
                     <div class="col-md-7 d-flex align-items-center">
@@ -99,9 +100,9 @@ layout: default
                 <h2 class="h4 mb-4">ApacheCon NA 2018</h2>
                 <div class="row g-4 mb-5">
                     <div class="col-md-5">
-                        <a href="https://www.youtube.com/watch?v=XO1cLSgeRsw"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden" style="aspect-ratio:16/9">
-                            <img 
src="/assets/images/videos/apachecon-2018-XO1cLSgeRsw.jpg" alt="Apache Unomi - 
An Open Source CDP" class="w-100 h-100" style="object-fit:cover" loading="lazy">
-                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                        <a href="https://www.youtube.com/watch?v=XO1cLSgeRsw"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden video-thumbnail">
+                            <img 
src="/assets/images/videos/apachecon-2018-XO1cLSgeRsw.jpg" alt="Apache Unomi - 
An Open Source CDP" class="w-100 h-100 img-cover" loading="lazy">
+                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                         </a>
                     </div>
                     <div class="col-md-7 d-flex align-items-center">
@@ -115,9 +116,9 @@ layout: default
                 <h2 class="h4 mb-4">ApacheCon Europe 2015</h2>
                 <div class="row g-4 mb-4">
                     <div class="col-md-5">
-                        <a href="https://www.youtube.com/watch?v=o0VUkSTKTxc"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden" style="aspect-ratio:16/9">
-                            <img 
src="/assets/images/videos/apachecon-2015-keynote-o0VUkSTKTxc.jpg" alt="Keynote 
- Introducing Apache Unomi" class="w-100 h-100" style="object-fit:cover" 
loading="lazy">
-                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                        <a href="https://www.youtube.com/watch?v=o0VUkSTKTxc"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden video-thumbnail">
+                            <img 
src="/assets/images/videos/apachecon-2015-keynote-o0VUkSTKTxc.jpg" alt="Keynote 
- Introducing Apache Unomi" class="w-100 h-100 img-cover" loading="lazy">
+                            <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                         </a>
                     </div>
                     <div class="col-md-7 d-flex align-items-center">
diff --git a/src/main/webapp/community/events/index.html 
b/src/main/webapp/community/events/index.html
index 158d769..1f04225 100644
--- a/src/main/webapp/community/events/index.html
+++ b/src/main/webapp/community/events/index.html
@@ -1,7 +1,30 @@
 ---
 title: Events
 description: "Apache Unomi community events, meetups, and conference talks."
+keywords: "Apache Unomi events, ApacheCon, meetups, conferences, talks, 
presentations, CDP events"
 layout: default
+structured_data: >
+    <script type="application/ld+json">
+    {
+        "@context": "https://schema.org";,
+        "@type": "CollectionPage",
+        "name": "Apache Unomi Events",
+        "description": "Past and upcoming community events, conference talks, 
and meetups for the Apache Unomi project.",
+        "url": "https://unomi.apache.org/community/events/";,
+        "mainEntity": {
+            "@type": "ItemList",
+            "name": "Apache Unomi Conference Talks & Events",
+            "itemListElement": [
+                { "@type": "ListItem", "position": 1, "name": "Community Over 
Code EU 2025 — A CDP in an AI-first World", "url": 
"https://www.youtube.com/watch?v=UrhNhXHugKc"; },
+                { "@type": "ListItem", "position": 2, "name": "ApacheCon North 
America 2024 — Apache Unomi: The Open Source CDP", "url": 
"https://www.youtube.com/watch?v=YqPkUhBlcrs"; },
+                { "@type": "ListItem", "position": 3, "name": "Community Over 
Code NA 2024 — What's New in the Latest Releases", "url": 
"https://www.youtube.com/watch?v=_6vfuWocQBs"; },
+                { "@type": "ListItem", "position": 4, "name": "Community Over 
Code NA 2023 — Apache Unomi Past, Present, and Future", "url": 
"https://www.youtube.com/watch?v=uNbKW29FCnE"; },
+                { "@type": "ListItem", "position": 5, "name": "ApacheCon Asia 
2021 — Introduction to Apache Unomi", "url": 
"https://www.youtube.com/watch?v=ynluCYocfG4"; },
+                { "@type": "ListItem", "position": 6, "name": "ApacheCon @Home 
2020 — Building a CDP with Apache Unomi", "url": 
"https://www.youtube.com/watch?v=_EXJQJ69niA"; }
+            ]
+        }
+    }
+    </script>
 ---
 
 <section class="page-header">
@@ -40,7 +63,7 @@ layout: default
             </div>
             <div class="col-lg-9">
                 <h2 class="h4 mb-4">Upcoming Events</h2>
-                <div class="p-4 rounded-3 mb-5" 
style="background:var(--unomi-bg-soft);border:1px solid var(--unomi-border)">
+                <div class="p-4 rounded-3 mb-5 info-box">
                     <p class="text-muted mb-2">No events are currently 
planned.</p>
                     <p class="small text-muted mb-0">Want to organize a meetup 
or talk about Apache Unomi? Reach out on the <a 
href="/community/index.html">mailing list</a>.</p>
                 </div>
@@ -53,9 +76,9 @@ layout: default
                     <div class="row g-3">
                         <div class="col-md-6">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=_6vfuWocQBs"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/coc-2025-_6vfuWocQBs.jpg" alt="From Complaining 
Customers to Brand Promoters" class="w-100 h-100" style="object-fit:cover" 
loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=_6vfuWocQBs"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/coc-2025-_6vfuWocQBs.jpg" alt="From Complaining 
Customers to Brand Promoters" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">From 
Complaining Customers to Brand Promoters</h4>
                                 <p class="small text-muted mb-0">Real-time AI 
+ customer data demo combining Unomi with Bluesky, Skype, an LLM, an e-commerce 
site, Inoyu&rsquo;s CDP UI, and HubSpot.</p>
@@ -63,9 +86,9 @@ layout: default
                         </div>
                         <div class="col-md-6">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=ON0EskhpuME"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/coc-2025-ON0EskhpuME.jpg" alt="AI + CDP = Unlimited 
Personalized Memory" class="w-100 h-100" style="object-fit:cover" 
loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=ON0EskhpuME"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/coc-2025-ON0EskhpuME.jpg" alt="AI + CDP = Unlimited 
Personalized Memory" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">AI + CDP = 
Unlimited Personalized Memory</h4>
                                 <p class="small text-muted mb-0">How combining 
a Customer Data Platform with an LLM creates unlimited, personalized, and 
privacy-compliant memory.</p>
@@ -80,9 +103,9 @@ layout: default
                     <div class="row g-3">
                         <div class="col-md-6">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=uNbKW29FCnE"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/opensearch-uNbKW29FCnE.jpg" alt="Apache Unomi 
OpenSearch Contribution" class="w-100 h-100" style="object-fit:cover" 
loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=uNbKW29FCnE"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/opensearch-uNbKW29FCnE.jpg" alt="Apache Unomi 
OpenSearch Contribution" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Apache Unomi 
OpenSearch Contribution</h4>
                                 <p class="small text-muted mb-0">The changes 
proposed to add OpenSearch support to Apache Unomi, including the dual 
persistence architecture and new tooling.</p>
@@ -97,9 +120,9 @@ layout: default
                     <div class="row g-3">
                         <div class="col-md-6">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=YqPkUhBlcrs"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/mcp-demo-YqPkUhBlcrs.jpg" alt="Claude AI integration 
with Apache Unomi using MCP" class="w-100 h-100" style="object-fit:cover" 
loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=YqPkUhBlcrs"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/mcp-demo-YqPkUhBlcrs.jpg" alt="Claude AI integration 
with Apache Unomi using MCP" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Claude AI + 
Apache Unomi via Model Context Protocol</h4>
                                 <p class="small text-muted 
mb-0">Anthropic&rsquo;s Claude Desktop integrated with Apache Unomi using MCP 
to deliver personalized e-commerce experiences through natural language.</p>
@@ -114,9 +137,9 @@ layout: default
                     <div class="row g-3">
                         <div class="col-md-6">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=UrhNhXHugKc"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/meetup-2021-UrhNhXHugKc.jpg" alt="First Apache Unomi 
Meetup" class="w-100 h-100" style="object-fit:cover" loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=UrhNhXHugKc"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/meetup-2021-UrhNhXHugKc.jpg" alt="First Apache Unomi 
Meetup" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Full Meetup 
Recording</h4>
                                 <p class="small text-muted mb-0">State of the 
Unomi by Serge Huber, how Jahia and Dropsolid use Unomi, Apache Karaf 5 by 
Jean-Baptiste Onofr&eacute;, and open Q&amp;A.</p>
@@ -136,9 +159,9 @@ layout: default
                     <div class="row g-3">
                         <div class="col-md-6">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=EyT0_so-ayI"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/feathercast-EyT0_so-ayI.jpg" alt="Feathercast 
Interview 2020" class="w-100 h-100" style="object-fit:cover" loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=EyT0_so-ayI"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/feathercast-EyT0_so-ayI.jpg" alt="Feathercast 
Interview 2020" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Interview of 
Apache Unomi PMC Serge Huber</h4>
                                 <p class="small text-muted mb-0">Feathercast 
interview covering the project&rsquo;s vision, use cases, and community.</p>
@@ -153,9 +176,9 @@ layout: default
                     <div class="row g-3">
                         <div class="col-md-6 col-lg-4">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=ut2ReqhMl2Y"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/apachecon-2019-ut2ReqhMl2Y.jpg" alt="Customer 
Segmentation &amp; Marketing Automation" class="w-100 h-100" 
style="object-fit:cover" loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=ut2ReqhMl2Y"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/apachecon-2019-ut2ReqhMl2Y.jpg" alt="Customer 
Segmentation &amp; Marketing Automation" class="w-100 h-100 img-cover" 
loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Customer 
Segmentation &amp; Marketing Automation</h4>
                                 <p class="small text-muted mb-0">Michael Ghen 
demonstrates profiles, conditions, actions, rules, segments, and plugins with 
live demos.</p>
@@ -163,9 +186,9 @@ layout: default
                         </div>
                         <div class="col-md-6 col-lg-4">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=3VhC3x0GdDQ"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/apachecon-2019-predictionio-3VhC3x0GdDQ.jpg" 
alt="Adding AI to Unomi using PredictionIO" class="w-100 h-100" 
style="object-fit:cover" loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=3VhC3x0GdDQ"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/apachecon-2019-predictionio-3VhC3x0GdDQ.jpg" 
alt="Adding AI to Unomi using PredictionIO" class="w-100 h-100 img-cover" 
loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Adding AI to 
Unomi Using PredictionIO</h4>
                                 <p class="small text-muted mb-0">How to 
integrate Apache PredictionIO with Unomi for AI-driven personalization.</p>
@@ -173,9 +196,9 @@ layout: default
                         </div>
                         <div class="col-md-6 col-lg-4">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=5ts6LuNwH9o"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/apachecon-2019-static-5ts6LuNwH9o.jpg" alt="Unomi 
Segmentation in Static Website" class="w-100 h-100" style="object-fit:cover" 
loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=5ts6LuNwH9o"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/apachecon-2019-static-5ts6LuNwH9o.jpg" alt="Unomi 
Segmentation in Static Website" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Unomi 
Segmentation in a Static Website</h4>
                                 <p class="small text-muted mb-0">Apache Unomi 
segmentation integrated into an existing static website.</p>
@@ -190,9 +213,9 @@ layout: default
                     <div class="row g-3">
                         <div class="col-md-6">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=XO1cLSgeRsw"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/apachecon-2018-XO1cLSgeRsw.jpg" alt="Apache Unomi 
&mdash; An Open Source CDP" class="w-100 h-100" style="object-fit:cover" 
loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=XO1cLSgeRsw"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/apachecon-2018-XO1cLSgeRsw.jpg" alt="Apache Unomi 
&mdash; An Open Source CDP" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Apache Unomi 
&mdash; An Open Source Customer Data Platform</h4>
                                 <p class="small text-muted mb-0">Serge Huber 
presents the architecture, features, and roadmap of Apache Unomi.</p>
@@ -207,9 +230,9 @@ layout: default
                     <div class="row g-3">
                         <div class="col-md-6 col-lg-4">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=y4uNwnVMVyg"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/apachecon-2015-y4uNwnVMVyg.jpg" alt="Apache Unomi 
Project In-Depth" class="w-100 h-100" style="object-fit:cover" loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=y4uNwnVMVyg"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/apachecon-2015-y4uNwnVMVyg.jpg" alt="Apache Unomi 
Project In-Depth" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Apache Unomi 
Project In-Depth</h4>
                                 <p class="small text-muted mb-0">Serge Huber 
discusses the project and demonstrates IoT device integration with personalized 
user experiences.</p>
@@ -217,9 +240,9 @@ layout: default
                         </div>
                         <div class="col-md-6 col-lg-4">
                             <div class="feature-card h-100">
-                                <a 
href="https://www.youtube.com/watch?v=o0VUkSTKTxc"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden" 
style="aspect-ratio:16/9">
-                                    <img 
src="/assets/images/videos/apachecon-2015-keynote-o0VUkSTKTxc.jpg" alt="Keynote 
- Introducing Apache Unomi" class="w-100 h-100" style="object-fit:cover" 
loading="lazy">
-                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white" 
style="font-size:1.2rem;margin-left:2px"></i></span>
+                                <a 
href="https://www.youtube.com/watch?v=o0VUkSTKTxc"; target="_blank" 
rel="noopener" class="d-block position-relative mb-3 rounded overflow-hidden 
video-thumbnail">
+                                    <img 
src="/assets/images/videos/apachecon-2015-keynote-o0VUkSTKTxc.jpg" alt="Keynote 
- Introducing Apache Unomi" class="w-100 h-100 img-cover" loading="lazy">
+                                    <span class="position-absolute top-50 
start-50 translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                                 </a>
                                 <h4 class="h6 fw-semibold mb-1">Keynote 
&mdash; Introducing Apache Unomi</h4>
                                 <p class="small text-muted mb-0">Opening 
keynote introducing the Apache Unomi project to the community.</p>
diff --git a/src/main/webapp/community/events/meetups/2021-11-18.html 
b/src/main/webapp/community/events/meetups/2021-11-18.html
index 7b57604..215745d 100644
--- a/src/main/webapp/community/events/meetups/2021-11-18.html
+++ b/src/main/webapp/community/events/meetups/2021-11-18.html
@@ -1,6 +1,7 @@
 ---
 title: First Apache Unomi Meetup — Nov 18, 2021
 description: "Recording and agenda of the first Apache Unomi community meetup, 
November 18 2021."
+keywords: "Apache Unomi meetup, first meetup, Unomi community meeting, CDP 
meetup"
 layout: default
 ---
 
@@ -34,7 +35,7 @@ layout: default
             </div>
             <div class="col-lg-9">
 
-            <img class="rounded mb-4 mx-auto d-block" 
src="/assets/images/unomi-meetup-logo.png" alt="Unomi Meetup Logo" 
style="max-width:100%"/>
+            <img class="rounded mb-4 mx-auto d-block" 
src="/assets/images/unomi-meetup-logo.png" alt="Unomi Meetup Logo" 
class="mw-100">
 
             <h2 class="h4">First Apache Unomi Meetup !</h2>
             <p>
@@ -47,9 +48,9 @@ layout: default
                 The event was recorded and you can view the event here.
             </p>
             <div class="mb-4">
-                <a href="https://www.youtube.com/watch?v=UrhNhXHugKc"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden" style="aspect-ratio:16/9;max-width:560px">
-                    <img 
src="/assets/images/videos/meetup-2021-UrhNhXHugKc.jpg" alt="First Apache Unomi 
Meetup" class="w-100 h-100" style="object-fit:cover" loading="lazy">
-                    <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay-lg"><i class="bi bi-play-fill text-white" 
style="font-size:1.5rem;margin-left:2px"></i></span>
+                <a href="https://www.youtube.com/watch?v=UrhNhXHugKc"; 
target="_blank" rel="noopener" class="d-block position-relative rounded 
overflow-hidden video-thumbnail">
+                    <img 
src="/assets/images/videos/meetup-2021-UrhNhXHugKc.jpg" alt="First Apache Unomi 
Meetup" class="w-100 h-100 img-cover" loading="lazy">
+                    <span class="position-absolute top-50 start-50 
translate-middle d-flex align-items-center justify-content-center 
rounded-circle play-overlay-lg"><i class="bi bi-play-fill text-white 
play-icon-sm"></i></span>
                 </a>
             </div>
 
@@ -91,7 +92,7 @@ layout: default
                 </li>
 
                 <li>
-                    <p><strong>Apache Karaf 5 (15 minutes) by Jean-Baptise 
Onofr&eacute;, Apache Karaf PMC chair &amp;
+                    <p><strong>Apache Karaf 5 (15 minutes) by Jean-Baptiste 
Onofr&eacute;, Apache Karaf PMC chair &amp;
                         OpenSource Europe at
                         Huawei</strong></p>
                     <p>What's new in Apache Karaf 5 and how Unomi can leverage 
it.</p>
@@ -107,7 +108,7 @@ layout: default
             </ol>
 
             <p class="text-center">
-                This event operated under the terms of <a 
href="http://apache.org/foundation/policies/conduct";>The
+                This event operated under the terms of <a 
href="https://www.apache.org/foundation/policies/conduct";>The
                 Apache
                 Software Foundation Code of Conduct</a> and its <a
                     
href="https://www.apache.org/foundation/policies/privacy.html";>Privacy 
Policy</a>.
diff --git a/src/main/webapp/community/index.html 
b/src/main/webapp/community/index.html
index f162597..ed10fb4 100644
--- a/src/main/webapp/community/index.html
+++ b/src/main/webapp/community/index.html
@@ -1,6 +1,7 @@
 ---
 title: Community &mdash; Get Help & Contact
 description: "Connect with the Apache Unomi community. Join mailing lists, 
Slack, monthly meetings, report bugs, and get help from developers and users 
worldwide."
+keywords: "Apache Unomi community, mailing list, Slack, JIRA, open source 
community, contributor, support channels, monthly meetings"
 layout: default
 structured_data: >
     <script type="application/ld+json">
@@ -13,7 +14,7 @@ structured_data: >
                 "name": "How do I get help with Apache Unomi?",
                 "acceptedAnswer": {
                     "@type": "Answer",
-                    "text": "The best way to get help is to subscribe to the 
[email protected] mailing list by sending an email to 
[email protected]. You can also join the #unomi channel on the 
ASF Slack (create a free account at https://s.apache.org/slack-invite). The 
community also holds monthly online meetings."
+                    "text": "The best way to get help is to subscribe to the 
[email protected] mailing list by sending an email to 
[email protected]. You can also join the #unomi channel on the 
ASF Slack. If you have an @apache.org email, sign in directly at 
https://the-asf.slack.com. Otherwise, email [email protected] to request a 
guest invitation. See https://infra.apache.org/slack.html for details."
                 }
             },
             {
@@ -21,7 +22,7 @@ structured_data: >
                 "name": "How do I join the Apache Unomi Slack channel?",
                 "acceptedAnswer": {
                     "@type": "Answer",
-                    "text": "Step 1: Create a free ASF Slack account at 
https://s.apache.org/slack-invite (anyone can sign up, no Apache email 
required). Step 2: Once you have an account, join the #unomi channel at 
https://the-asf.slack.com/messages/CBP2Z98Q7/";
+                    "text": "Send an email to [email protected] asking 
for a guest invitation to the #unomi Slack channel. Include the email address 
you want the invite sent to. A project member will send you a guest invite. If 
you already have an @apache.org email you can sign in directly at 
https://the-asf.slack.com and join #unomi. Full details at 
https://infra.apache.org/slack.html";
                 }
             },
             {
@@ -90,7 +91,7 @@ structured_data: >
                 <div class="text-center">
                     <div class="step-number mx-auto mb-3">3</div>
                     <h3 class="h6 fw-semibold">Chat on Slack</h3>
-                    <p class="small text-muted">For quick questions, join 
<strong>#unomi</strong> on the ASF Slack (free account for anyone).</p>
+                    <p class="small text-muted">For quick questions, join 
<strong>#unomi</strong> on the ASF Slack. <a href="#slack-access" 
class="fw-medium">See how to get access</a>.</p>
                 </div>
             </div>
         </div>
@@ -111,7 +112,7 @@ structured_data: >
         <div class="row g-4">
 
             <!-- Mailing Lists (primary) -->
-            <div class="col-md-6">
+            <div class="col-md-6" id="mailing-lists">
                 <div class="community-card">
                     <div class="community-icon icon-primary">
                         <i class="bi bi-envelope"></i>
@@ -146,7 +147,7 @@ structured_data: >
             </div>
 
             <!-- Slack -->
-            <div class="col-md-6">
+            <div class="col-md-6" id="slack-access">
                 <div class="community-card">
                     <div class="community-icon icon-amber">
                         <i class="bi bi-slack"></i>
@@ -155,24 +156,32 @@ structured_data: >
                         <h3 class="h6 fw-semibold mb-1">Slack &mdash; 
#unomi</h3>
                         <p class="small text-muted mb-2">Real-time chat for 
quick questions and informal discussions.</p>
                         <div class="d-flex flex-column gap-1">
-                            <p class="small mb-1"><strong>Step 1:</strong> <a 
href="https://s.apache.org/slack-invite"; target="_blank" rel="noopener">Create 
a free ASF Slack account</a> <span class="text-muted">(anyone can sign 
up)</span></p>
-                            <p class="small mb-0"><strong>Step 2:</strong> <a 
href="https://the-asf.slack.com/messages/CBP2Z98Q7/"; target="_blank" 
rel="noopener">Join the #unomi channel</a></p>
+                            <p class="small fw-semibold mb-1">How to join:</p>
+                            <p class="small mb-1"><strong>1.</strong> Send an 
email to <a href="mailto:[email protected]";>[email protected]</a> 
asking for an invitation to the <strong>#unomi</strong> Slack channel. Include 
the email address you want the invite sent to.</p>
+                            <p class="small mb-1"><strong>2.</strong> A 
project member will send you a guest invite. Accept it to join the channel.</p>
+                            <p class="small text-muted mb-1"><em>Already have 
an @apache.org email?</em> Sign in directly at <a 
href="https://the-asf.slack.com"; target="_blank" 
rel="noopener">the-asf.slack.com</a> and join <a 
href="https://the-asf.slack.com/messages/CBP2Z98Q7/"; target="_blank" 
rel="noopener">#unomi</a>.</p>
+                            <p class="small text-muted mb-0"><a 
href="https://infra.apache.org/slack.html"; target="_blank" rel="noopener">ASF 
Slack access policy &amp; details <i class="bi 
bi-box-arrow-up-right"></i></a></p>
                         </div>
                     </div>
                 </div>
             </div>
 
             <!-- Monthly Meeting -->
-            <div class="col-md-6">
-                <a 
href="https://lists.apache.org/thread/70oo862br3d4g7j8dvnyy3o4z1p0ozfq"; 
target="_blank" rel="noopener" class="community-card text-decoration-none">
+            <div class="col-md-6" id="monthly-meeting">
+                <div class="community-card">
                     <div class="community-icon icon-success">
                         <i class="bi bi-camera-video"></i>
                     </div>
                     <div>
-                        <h3 class="h6 fw-semibold mb-1 text-dark">Monthly 
Meeting</h3>
-                        <p class="small text-muted mb-0">The community meets 
monthly online with alternating times for different time zones. Current status 
and roadmap are discussed. Everyone is welcome!</p>
+                        <h3 class="h6 fw-semibold mb-1">Monthly Meeting <span 
class="badge badge-primary ms-1">Open to all</span></h3>
+                        <p class="small text-muted mb-2"><strong>You 
don&rsquo;t need to be a contributor to attend</strong> &mdash; newcomers, 
users evaluating Unomi, and anyone curious about the project are very welcome. 
It&rsquo;s a great way to ask questions, see what&rsquo;s being worked on, and 
meet the team.</p>
+                        <p class="small fw-semibold mb-1">Schedule &amp; how 
to join:</p>
+                        <p class="small mb-1"><i class="bi bi-calendar3 
me-1"></i> <strong>When:</strong> Second Thursday of each month, alternating 
9:00 AM CET (even months) and 5:00 PM CET (odd months).</p>
+                        <p class="small mb-1"><i class="bi bi-camera-video 
me-1"></i> <strong>Join:</strong> <a 
href="https://us02web.zoom.us/j/85252119410"; target="_blank" 
rel="noopener">Click here to join the Zoom call</a> at the scheduled time. No 
account needed.</p>
+                        <p class="small text-muted 
mb-1"><strong>Agenda:</strong> Round table &amp; introductions, next release, 
project roadmap, Q&amp;A.</p>
+                        <p class="small text-muted mb-0">Reminders are posted 
on <a href="/community/index.html#slack-access">Slack</a>. Can&rsquo;t attend? 
Meeting minutes are sent to the <a 
href="https://lists.apache.org/[email protected]"; target="_blank" 
rel="noopener">dev mailing list</a>. <a 
href="https://lists.apache.org/thread/70oo862br3d4g7j8dvnyy3o4z1p0ozfq"; 
target="_blank" rel="noopener">Original announcement <i class="bi 
bi-box-arrow-up-right"></i></a></p>
                     </div>
-                </a>
+                </div>
             </div>
 
             <!-- JIRA -->
diff --git a/src/main/webapp/community/maturity-model-report.html 
b/src/main/webapp/community/maturity-model-report.html
index 3460e30..7ba2182 100644
--- a/src/main/webapp/community/maturity-model-report.html
+++ b/src/main/webapp/community/maturity-model-report.html
@@ -1,6 +1,7 @@
 ---
 title: Podling Maturity Assessment
 description: "Apache Unomi maturity model assessment based on the ASF project 
maturity model."
+keywords: "Apache Unomi maturity model, project maturity, Apache project 
assessment, open source governance"
 layout: default
 ---
 
@@ -33,7 +34,7 @@ layout: default
           <h3>Overview</h3>
           <p>
             This is an assessment of the Unomi podling’s maturity, meant to 
help inform the decision (of the mentors, community, Incubator PMC and ASF 
Board of Directors) to graduate
-            it as a top-level Apache project. It is based on the ASF project 
maturity model at <a target="_blank" 
href="https://community.apache.org/apache-way/apache-project-maturity-model.html";>https://community.apache.org/apache-way/apache-project-maturity-model.html</a>
+            it as a top-level Apache project. It is based on the ASF project 
maturity model at <a target="_blank" rel="noopener" 
href="https://community.apache.org/apache-way/apache-project-maturity-model.html";>https://community.apache.org/apache-way/apache-project-maturity-model.html</a>
             Maintaining such a file is a new, experimental idea as part of the 
continuous improvement of the ASF incubation process.
           </p>
 
@@ -251,7 +252,7 @@ layout: default
                 <td><strong>CO10</strong></td>
                 <td>The project has a well-known homepage that points to all 
the information required to operate according to this maturity model.</td>
                 <td class="text-center"><i class="bi bi-check-circle-fill 
text-success"></i></td>
-                <td>See the <a class="externalLink" target="_blank" 
href="http://unomi.apache.org";>project’s home page</a> that includes a <a 
href="../contribute/index.html">contribute</a> section
+                <td>See the <a class="externalLink" target="_blank" 
rel="noopener" href="https://unomi.apache.org";>project’s home page</a> that 
includes a <a href="../contribute/index.html">contribute</a> section
                   that describes how to become a committer as well as <a 
href="../contribute/become-a-committer.html">several</a> <a 
href="../contribute/committer-guide.html">documents</a> for on-board newcomers 
quickly</td>
               </tr>
               <tr>
diff --git a/src/main/webapp/community/policies.html 
b/src/main/webapp/community/policies.html
index f9719f3..3ee142d 100644
--- a/src/main/webapp/community/policies.html
+++ b/src/main/webapp/community/policies.html
@@ -1,6 +1,7 @@
 ---
 title: Policies
 description: "Apache Unomi project policies including release cadence and long 
term support."
+keywords: "Apache Unomi policies, project guidelines, community policies, 
Apache Software Foundation policies"
 layout: default
 ---
 
@@ -34,13 +35,13 @@ layout: default
 
                 <h3 id="releases">Releases</h3>
 
-                <p>Apache Unomi makes minor releases every 6 weeks. Apache 
Unomi has a <a target="_blank" 
href="https://calendar.google.com/calendar/embed?src=0p73sl034k80oob7seouanigd0%40group.calendar.google.com";>calendar</a>
 for cutting the next release branch. After a release branch is cut, the 
community works quickly to finalize that release.</p>
+                <p>Apache Unomi makes minor releases every 6 weeks. Apache 
Unomi has a <a target="_blank" rel="noopener" 
href="https://calendar.google.com/calendar/embed?src=0p73sl034k80oob7seouanigd0%40group.calendar.google.com";>calendar</a>
 for cutting the next release branch. After a release branch is cut, the 
community works quickly to finalize that release.</p>
 
                 <p>Apache Unomi aims to make 8 releases in a 12 month period. 
To accommodate users with longer upgrade cycles, some of these releases will be 
tagged as long term support (LTS) releases. LTS releases receive patches to fix 
major issues for 12 months, starting from the release&rsquo;s initial release 
date. There will be at least one new LTS release in a 12 month period, and LTS 
releases are considered deprecated after 12 months. The community will mark a 
release as a LTS re [...]
 
                 <p>It is up to the Apache Unomi community to decide whether an 
identified issue is a major issue that warrants a patch release. Some examples 
of major issues are high severity security issues and high risk data integrity 
issues.</p>
 
-                <p>If you wish to report a security vulnerability, please 
contact <a href="mailto:[email protected]";>[email protected]</a>. Apache 
Unomi follows the typical <a target="_blank" 
href="https://apache.org/security/committers.html#vulnerability-handling";>Apache
 vulnerability handling process</a>.</p>
+                <p>If you wish to report a security vulnerability, please 
contact <a href="mailto:[email protected]";>[email protected]</a>. Apache 
Unomi follows the typical <a target="_blank" rel="noopener" 
href="https://apache.org/security/committers.html#vulnerability-handling";>Apache
 vulnerability handling process</a>.</p>
             </div>
         </div>
     </div>
diff --git a/src/main/webapp/community/team.html 
b/src/main/webapp/community/team.html
index 8b3387c..051255a 100644
--- a/src/main/webapp/community/team.html
+++ b/src/main/webapp/community/team.html
@@ -1,6 +1,7 @@
 ---
 title: Team
 description: "Apache Unomi project team. PMC members, committers, and 
contributors."
+keywords: "Apache Unomi team, committers, PMC, contributors, project team, 
open source developers"
 layout: default
 ---
 
@@ -42,7 +43,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="shuber">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/4d3eed1c656ec68693eb61d8ccc6a3af?d=mm&s=80";
 alt="Serge Huber" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/4d3eed1c656ec68693eb61d8ccc6a3af?d=mm&s=80";
 alt="Serge Huber" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Serge 
Huber</h3>
                                 <span class="small text-muted">shuber</span>
@@ -60,7 +61,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="jbonofre">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/27790393b874159fe05609ca7ed812f9?d=mm&s=80";
 alt="Jean-Baptiste Onofr&eacute;" class="rounded-circle me-3" width="48" 
height="48">
+                            <img 
src="https://www.gravatar.com/avatar/27790393b874159fe05609ca7ed812f9?d=mm&s=80";
 alt="Jean-Baptiste Onofr&eacute;" class="rounded-circle me-3" width="48" 
height="48" loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Jean-Baptiste 
Onofr&eacute;</h3>
                                 <span class="small text-muted">jbonofre</span>
@@ -79,7 +80,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="draier">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/9bbc37f4660389c1c54aee53b05a2a65?d=mm&s=80";
 alt="Thomas Draier" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/9bbc37f4660389c1c54aee53b05a2a65?d=mm&s=80";
 alt="Thomas Draier" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Thomas 
Draier</h3>
                                 <span class="small text-muted">draier</span>
@@ -96,7 +97,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="fpapon">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/27790393b874159fe05609ca7ed812f9?d=mm&s=80";
 alt="Francois Papon" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/27790393b874159fe05609ca7ed812f9?d=mm&s=80";
 alt="Francois Papon" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Francois 
Papon</h3>
                                 <span class="small text-muted">fpapon</span>
@@ -114,7 +115,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="jkevan">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/f51aaca9a9943a59ecc3028aca9b113b?d=mm&s=80";
 alt="Kevan Jahanshahi" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/f51aaca9a9943a59ecc3028aca9b113b?d=mm&s=80";
 alt="Kevan Jahanshahi" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Kevan 
Jahanshahi</h3>
                                 <span class="small text-muted">jkevan</span>
@@ -132,7 +133,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="dgriffon">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/e5f766ba9813c868249c07f9c5e349d6?d=mm&s=80";
 alt="David Griffon" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/e5f766ba9813c868249c07f9c5e349d6?d=mm&s=80";
 alt="David Griffon" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">David 
Griffon</h3>
                                 <span class="small text-muted">dgriffon</span>
@@ -150,7 +151,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="dgaillard">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/6d2d161467f0dc565ce0d55b9f73fe4f?d=mm&s=80";
 alt="Damien Gaillard" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/6d2d161467f0dc565ce0d55b9f73fe4f?d=mm&s=80";
 alt="Damien Gaillard" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Damien 
Gaillard</h3>
                                 <span class="small text-muted">dgaillard</span>
@@ -166,7 +167,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="taybou">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/76b2e3ee9fc69020baad711c38b0186b?d=mm&s=80";
 alt="Mohamed-Tayeb BENTERKI" class="rounded-circle me-3" width="48" 
height="48">
+                            <img 
src="https://www.gravatar.com/avatar/76b2e3ee9fc69020baad711c38b0186b?d=mm&s=80";
 alt="Mohamed-Tayeb BENTERKI" class="rounded-circle me-3" width="48" 
height="48" loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Mohamed-Tayeb 
Benterki</h3>
                                 <span class="small text-muted">taybou</span>
@@ -182,7 +183,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="shyrkov">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/d21cd1073820fff86b953d57fbfadc83?d=mm&s=80";
 alt="Sergiy Shyrkov" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/d21cd1073820fff86b953d57fbfadc83?d=mm&s=80";
 alt="Sergiy Shyrkov" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Sergiy 
Shyrkov</h3>
                                 <span class="small text-muted">shyrkov</span>
@@ -198,7 +199,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="qlamerand">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/6affe2a2fc9f902578697788c7fc2a3e?d=mm&s=80";
 alt="Quentin Lamerand" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/6affe2a2fc9f902578697788c7fc2a3e?d=mm&s=80";
 alt="Quentin Lamerand" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Quentin 
Lamerand</h3>
                                 <span class="small text-muted">qlamerand</span>
@@ -215,7 +216,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="metacosm">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/1a18e08c27af0044a1c2218ceea839c3?d=mm&s=80";
 alt="Chris Laprun" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/1a18e08c27af0044a1c2218ceea839c3?d=mm&s=80";
 alt="Chris Laprun" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Chris 
Laprun</h3>
                                 <span class="small text-muted">metacosm</span>
@@ -232,7 +233,7 @@ layout: default
                 <div class="col-md-6 col-lg-4" id="amidani">
                     <div class="feature-card h-100">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/8a23a295ccfaa914c8e40d5b36893c3c?d=mm&s=80";
 alt="Abdelkader Midani" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/8a23a295ccfaa914c8e40d5b36893c3c?d=mm&s=80";
 alt="Abdelkader Midani" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Abdelkader 
Midani</h3>
                                 <span class="small text-muted">amidani</span>
@@ -253,9 +254,9 @@ layout: default
           <div class="row g-3">
 
                 <div class="col-md-6 col-lg-4" id="bdelacretaz">
-                    <div class="feature-card h-100" style="opacity:.75">
+                    <div class="feature-card h-100 card-emeritus">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/505b92f0f422152656b53018929316f4?d=mm&s=80";
 alt="Bertrand Delacretaz" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/505b92f0f422152656b53018929316f4?d=mm&s=80";
 alt="Bertrand Delacretaz" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Bertrand 
Delacretaz</h3>
                                 <span class="small 
text-muted">bdelacretaz</span>
@@ -270,9 +271,9 @@ layout: default
                 </div>
 
                 <div class="col-md-6 col-lg-4" id="rvs">
-                    <div class="feature-card h-100" style="opacity:.75">
+                    <div class="feature-card h-100 card-emeritus">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/b103ce8281c7eef619e5e4bfcfccf639?d=mm&s=80";
 alt="Roman Shaposhnik" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/b103ce8281c7eef619e5e4bfcfccf639?d=mm&s=80";
 alt="Roman Shaposhnik" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Roman 
Shaposhnik</h3>
                                 <span class="small text-muted">rvs</span>
@@ -287,9 +288,9 @@ layout: default
                 </div>
 
                 <div class="col-md-6 col-lg-4" id="mattmann">
-                    <div class="feature-card h-100" style="opacity:.75">
+                    <div class="feature-card h-100 card-emeritus">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/6f919a5883b854b9ae41023ef281ef85?d=mm&s=80";
 alt="Chris Mattmann" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/6f919a5883b854b9ae41023ef281ef85?d=mm&s=80";
 alt="Chris Mattmann" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">Chris 
Mattmann</h3>
                                 <span class="small text-muted">mattmann</span>
@@ -304,9 +305,9 @@ layout: default
                 </div>
 
                 <div class="col-md-6 col-lg-4">
-                    <div class="feature-card h-100" style="opacity:.75">
+                    <div class="feature-card h-100 card-emeritus">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm&s=80";
 alt="C&eacute;dric Mailleux" class="rounded-circle me-3" width="48" 
height="48">
+                            <img 
src="https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm&s=80";
 alt="C&eacute;dric Mailleux" class="rounded-circle me-3" width="48" 
height="48" loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">C&eacute;dric 
Mailleux</h3>
                             </div>
@@ -320,9 +321,9 @@ layout: default
                 </div>
 
                 <div class="col-md-6 col-lg-4">
-                    <div class="feature-card h-100" style="opacity:.75">
+                    <div class="feature-card h-100 card-emeritus">
                         <div class="d-flex align-items-center mb-3">
-                            <img 
src="https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm&s=80";
 alt="R&eacute;gis Mora" class="rounded-circle me-3" width="48" height="48">
+                            <img 
src="https://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm&s=80";
 alt="R&eacute;gis Mora" class="rounded-circle me-3" width="48" height="48" 
loading="lazy">
                             <div>
                                 <h3 class="h6 fw-semibold mb-0">R&eacute;gis 
Mora</h3>
                             </div>
diff --git a/src/main/webapp/connectors.html b/src/main/webapp/connectors.html
index 607ef8f..0275874 100644
--- a/src/main/webapp/connectors.html
+++ b/src/main/webapp/connectors.html
@@ -1,6 +1,7 @@
 ---
 title: Connectors
-description: "Apache Unomi connectors and integrations. Salesforce CRM, 
MailChimp, and custom Groovy connectors."
+description: "Apache Unomi connectors and integrations. MailChimp connector 
and custom plugin connectors."
+keywords: "Apache Unomi connectors, integrations, plugins, extensions, custom 
connectors"
 layout: default
 noindex: true
 ---
@@ -10,7 +11,7 @@ noindex: true
     <div class="container">
         <div class="row justify-content-center text-center">
             <div class="col-lg-8">
-                <div class="p-5 rounded-3" 
style="background:var(--unomi-primary-light)">
+                <div class="p-5 rounded-3 bg-primary-light">
                     <div class="feature-icon feature-icon-lg mx-auto mb-3"><i 
class="bi bi-arrow-right-circle"></i></div>
                     <h1 class="h3 mb-3">This page has moved</h1>
                     <p class="text-muted mb-4">Connectors are now part of our 
comprehensive <strong>Integrations &amp; Ecosystem</strong> page.</p>
diff --git a/src/main/webapp/integrations.html 
b/src/main/webapp/integrations.html
index 9bd523c..8279edc 100644
--- a/src/main/webapp/integrations.html
+++ b/src/main/webapp/integrations.html
@@ -1,8 +1,9 @@
 ---
 title: Integrations &amp; Ecosystem
 description: "Discover products built on Apache Unomi, extensions, connectors, 
and companies offering commercial support for the open source Customer Data 
Platform."
-keywords: "Apache Unomi integrations, Unomi connectors, Salesforce connector, 
MailChimp connector, Jahia jExperience, Dropsolid, Unomi UI, Inoyu SaaS, CDP 
integrations, Unomi plugins, commercial support"
+keywords: "Apache Unomi integrations, Unomi connectors, Groovy actions, custom 
plugins, Jahia jExperience, Dropsolid, Inoyu SaaS, CDP integrations, Unomi 
plugins, commercial support"
 layout: default
+mermaid: true
 structured_data: >
     <script type="application/ld+json">
     {
@@ -10,14 +11,13 @@ structured_data: >
         "@type": "ItemList",
         "name": "Apache Unomi Integrations and Ecosystem",
         "description": "Products, extensions, connectors, and services built 
on Apache Unomi.",
-        "numberOfItems": 6,
+        "numberOfItems": 5,
         "itemListElement": [
             { "@type": "ListItem", "position": 1, "name": "Jahia jExperience", 
"url": "https://www.jahia.com"; },
             { "@type": "ListItem", "position": 2, "name": "Ninetailed 
Personalization Platform", "url": "https://ninetailed.io"; },
             { "@type": "ListItem", "position": 3, "name": "Dropsolid 
Experience Cloud", "url": "https://dropsolid.com"; },
-            { "@type": "ListItem", "position": 4, "name": "Salesforce CRM 
Connector" },
-            { "@type": "ListItem", "position": 5, "name": "Inoyu", "url": 
"https://www.inoyu.dev"; },
-            { "@type": "ListItem", "position": 6, "name": "Yupiik", "url": 
"https://www.yupiik.com"; }
+            { "@type": "ListItem", "position": 4, "name": "Inoyu", "url": 
"https://www.inoyu.dev"; },
+            { "@type": "ListItem", "position": 5, "name": "Yupiik", "url": 
"https://www.yupiik.com"; }
         ]
     }
     </script>
@@ -50,7 +50,7 @@ structured_data: >
                     <p class="small text-muted mb-3">Jahia is the initial 
contributor of Apache Unomi, using it as the core engine for their Customer 
Data Platform (jExperience) and Digital Experience Platform with native GDPR 
support.</p>
                     <blockquote class="small fst-italic text-muted 
border-start border-3 border-primary ps-3 mb-3">
                         &ldquo;Apache Unomi is a very important foundation of 
our products. We love Apache Unomi and are deeply committed to helping our 
customers succeed with it.&rdquo;
-                        <footer class="mt-1 fw-semibold" 
style="font-style:normal">Serge Huber, Jahia CTO</footer>
+                        <footer class="mt-1 fw-semibold" 
class="quote-attribution">Serge Huber, Jahia CTO</footer>
                     </blockquote>
                     <a href="https://www.jahia.com"; target="_blank" 
rel="noopener" class="small fw-semibold">www.jahia.com <i class="bi 
bi-box-arrow-up-right"></i></a>
                 </div>
@@ -62,7 +62,7 @@ structured_data: >
                     <p class="small text-muted mb-3">The Dropsolid Experience 
Cloud delivers an out-of-box DXP with enhanced Drupal CMS, Mautic marketing 
automation, and Unomi CDP for smart segmentation and cross-system marketing.</p>
                     <blockquote class="small fst-italic text-muted 
border-start border-3 border-primary ps-3 mb-3">
                         &ldquo;Apache Unomi was the puzzle piece that fitted 
perfectly. It was the obvious CDP to integrate in our DXP solution.&rdquo;
-                        <footer class="mt-1 fw-semibold" 
style="font-style:normal">Mattias Michaux, Director of Engineering</footer>
+                        <footer class="mt-1 fw-semibold" 
class="quote-attribution">Mattias Michaux, Director of Engineering</footer>
                     </blockquote>
                     <a 
href="https://dropsolid.com/en/dropsolid-experience-cloud"; target="_blank" 
rel="noopener" class="small fw-semibold">dropsolid.com <i class="bi 
bi-box-arrow-up-right"></i></a>
                 </div>
@@ -74,19 +74,11 @@ structured_data: >
                     <p class="small text-muted mb-3">Ninetailed uses Apache 
Unomi to provide a complete view of visitors, discover new segments, and 
deliver personalization recommendations to grow the traffic customers already 
have.</p>
                     <blockquote class="small fst-italic text-muted 
border-start border-3 border-primary ps-3 mb-3">
                         &ldquo;Apache Unomi was chosen as our CDP due to its 
logical and plugin architecture, because it is an Apache open source project, 
and especially because of its Privacy (GDPR consent management) features.&rdquo;
-                        <footer class="mt-1 fw-semibold" 
style="font-style:normal">Andy Kaiser, Ninetailed Founder</footer>
+                        <footer class="mt-1 fw-semibold" 
class="quote-attribution">Andy Kaiser, Ninetailed Founder</footer>
                     </blockquote>
                     <a href="https://ninetailed.io"; target="_blank" 
rel="noopener" class="small fw-semibold">ninetailed.io <i class="bi 
bi-box-arrow-up-right"></i></a>
                 </div>
             </div>
-            <div class="col-md-6 col-lg-4">
-                <div class="feature-card h-100">
-                    <span class="badge mb-3 badge-coming-soon">Coming 
Soon</span>
-                    <h3 class="h6 fw-semibold">Unomi UI <span class="badge 
badge-oss">Open Source</span></h3>
-                    <p class="small text-muted mb-3">A modern, open source 
user interface for Apache Unomi by Inoyu, making it easy to manage profiles, 
segments, and rules through an intuitive dashboard. 100% open source under the 
Apache License v2.</p>
-                    <a href="https://www.inoyu.dev"; target="_blank" 
rel="noopener" class="small fw-semibold">www.inoyu.dev <i class="bi 
bi-box-arrow-up-right"></i></a>
-                </div>
-            </div>
             <div class="col-md-6 col-lg-4">
                 <div class="feature-card h-100">
                     <span class="badge mb-3 badge-coming-soon">Coming 
Soon</span>
@@ -95,14 +87,6 @@ structured_data: >
                     <a href="https://www.inoyu.dev"; target="_blank" 
rel="noopener" class="small fw-semibold">www.inoyu.dev <i class="bi 
bi-box-arrow-up-right"></i></a>
                 </div>
             </div>
-            <div class="col-md-6 col-lg-4">
-                <div class="feature-card h-100">
-                    <span class="badge mb-3 badge-coming-soon">Coming 
Soon</span>
-                    <h3 class="h6 fw-semibold">Inoyu UI</h3>
-                    <p class="small text-muted mb-3">A commercial-grade user 
interface for Apache Unomi from Inoyu, with advanced features for managing 
profiles, segments, rules, and real-time analytics.</p>
-                    <a href="https://www.inoyu.dev"; target="_blank" 
rel="noopener" class="small fw-semibold">www.inoyu.dev <i class="bi 
bi-box-arrow-up-right"></i></a>
-                </div>
-            </div>
         </div>
     </div>
 </section>
@@ -125,10 +109,9 @@ structured_data: >
             <div class="col-lg-10">
                 <pre class="mermaid">
 graph LR
-    subgraph Connectors["Connectors"]
-        SF["Salesforce CRM"]
-        MC["MailChimp"]
-        CUSTOM["Custom Groovy"]
+    subgraph Extend["Extend Unomi"]
+        GROOVY["Groovy Actions"]
+        PLUGIN["Java Plugins"]
     end
 
     subgraph Core["Apache Unomi"]
@@ -136,54 +119,50 @@ graph LR
         ENGINE["Core Engine"]
     end
 
-    subgraph Extensions["Extensions & Products"]
-        UI["Unomi UI"]
-        SAAS["Inoyu SaaS"]
-        INOYU_UI["Inoyu UI"]
+    subgraph Extensions["Products & Services"]
+        UI["UI"]
+        SAAS["SaaS"]
         ANALYTICS["Analytics"]
     end
 
-    SF --> API2
-    MC --> API2
-    CUSTOM --> API2
+    GROOVY --> API2
+    PLUGIN --> API2
     API2 --> ENGINE
     ENGINE --> UI
     ENGINE --> SAAS
-    ENGINE --> INOYU_UI
     ENGINE --> ANALYTICS
                 </pre>
             </div>
         </div>
 
-        <div class="row g-4" data-shuffle-group>
-            <div class="col-md-6 col-lg-4">
+        <div class="row g-4">
+            <div class="col-md-6">
                 <div class="feature-card h-100">
                     <div class="d-flex align-items-center mb-3">
-                        <span class="badge badge-success me-2"><i class="bi 
bi-circle-fill me-1" style="font-size:.5em"></i> Stable</span>
+                        <span class="badge badge-primary me-2"><i class="bi 
bi-star-fill me-1 badge-dot"></i> Recommended</span>
                     </div>
-                    <h3 class="h6 fw-semibold">Salesforce CRM Connector</h3>
-                    <p class="small text-muted mb-2">Synchronize profiles and 
contacts between Apache Unomi and Salesforce CRM.</p>
-                    <p class="small text-muted mb-0">Version 1.5.7 &bull; <a 
href="/manual/1_5_x/index.html">Documentation</a></p>
-                </div>
-            </div>
-            <div class="col-md-6 col-lg-4">
-                <div class="feature-card h-100">
-                    <div class="d-flex align-items-center mb-3">
-                        <span class="badge badge-warning me-2"><i class="bi 
bi-circle-fill me-1" style="font-size:.5em"></i> In Development</span>
+                    <h3 class="h6 fw-semibold">Groovy Actions</h3>
+                    <p class="small text-muted mb-2">The easiest way to extend 
Unomi. Write custom logic in Groovy scripts that are 
<strong>hot-deployable</strong> &mdash; no compilation, no restart needed. 
Groovy actions can react to events, update profiles, call external APIs, and 
integrate with third-party systems like CRMs, email platforms, or any REST 
service.</p>
+                    <p class="small text-muted mb-2">Start here for most 
integration needs.</p>
+                    <div class="d-flex flex-wrap gap-2">
+                        <a 
href="https://unomi.apache.org/manual/latest/index.html#_groovy_actions"; 
class="small fw-semibold">Groovy actions guide <i class="bi 
bi-arrow-right"></i></a>
+                        <a 
href="https://github.com/apache/unomi/tree/master/extensions/groovy-actions"; 
target="_blank" rel="noopener" class="small fw-semibold text-muted">Source code 
<i class="bi bi-box-arrow-up-right"></i></a>
                     </div>
-                    <h3 class="h6 fw-semibold">MailChimp Connector</h3>
-                    <p class="small text-muted mb-2">Connect mailing lists and 
campaign data with Unomi profiles.</p>
-                    <p class="small text-muted mb-0">Version {{ 
site.data.unomi.latest.development.version }} &bull; <a 
href="/manual/latest/index.html">Documentation</a></p>
                 </div>
             </div>
-            <div class="col-md-6 col-lg-4">
+            <div class="col-md-6">
                 <div class="feature-card h-100">
                     <div class="d-flex align-items-center mb-3">
-                        <div class="feature-icon" 
style="width:2rem;height:2rem;font-size:1rem"><i class="bi 
bi-plus-lg"></i></div>
+                        <div class="feature-icon feature-icon-sm"><i class="bi 
bi-gear"></i></div>
+                    </div>
+                    <h3 class="h6 fw-semibold">Custom Java Plugins (OSGi)</h3>
+                    <p class="small text-muted mb-2">For advanced needs that 
go beyond what Groovy actions can do &mdash; such as custom conditions, new 
persistence types, or deep integration with the Unomi core &mdash; build a full 
OSGi plugin in Java. This gives you access to the entire Unomi API and service 
layer.</p>
+                    <p class="small text-muted mb-2">Use this only when Groovy 
actions are not sufficient.</p>
+                    <div class="d-flex flex-wrap gap-2">
+                        <a 
href="https://unomi.apache.org/manual/latest/index.html#_writing_plugins"; 
class="small fw-semibold">Writing plugins guide <i class="bi 
bi-arrow-right"></i></a>
+                        <a 
href="https://unomi.apache.org/manual/latest/index.html#_custom_plugins"; 
class="small fw-semibold">Custom plugins <i class="bi bi-arrow-right"></i></a>
+                        <a 
href="https://github.com/apache/unomi/tree/master/extensions"; target="_blank" 
rel="noopener" class="small fw-semibold text-muted">Extensions source <i 
class="bi bi-box-arrow-up-right"></i></a>
                     </div>
-                    <h3 class="h6 fw-semibold">Build Your Own</h3>
-                    <p class="small text-muted mb-2">Create custom connectors 
using Groovy actions or the OSGi plugin API.</p>
-                    <a href="/manual/latest/index.html" class="small 
fw-semibold">Read the Plugin Guide <i class="bi bi-arrow-right"></i></a>
                 </div>
             </div>
         </div>
@@ -247,17 +226,4 @@ graph LR
 </section>
 
 <!-- ASF compliance: randomize company ordering on every page load -->
-<script>
-(function() {
-    var groups = document.querySelectorAll('[data-shuffle-group]');
-    groups.forEach(function(container) {
-        var children = Array.from(container.children);
-        // Fisher-Yates shuffle
-        for (var i = children.length - 1; i > 0; i--) {
-            var j = Math.floor(Math.random() * (i + 1));
-            container.appendChild(children[j]);
-            var tmp = children[i]; children[i] = children[j]; children[j] = 
tmp;
-        }
-    });
-})();
-</script>
+<script src="/assets/js/shuffle.js" defer></script>
diff --git a/src/main/webapp/stories.html b/src/main/webapp/stories.html
index 1ec56c3..805a520 100644
--- a/src/main/webapp/stories.html
+++ b/src/main/webapp/stories.html
@@ -1,6 +1,7 @@
 ---
 title: Apache Unomi Stories
 description: "How companies and projects use Apache Unomi. Success stories, 
products built on Unomi, and commercial support providers."
+keywords: "Apache Unomi stories, user stories, customer stories, CDP 
implementations, success stories, case studies"
 layout: default
 ---
 
@@ -18,7 +19,7 @@ layout: default
     <div class="container">
         <div class="row justify-content-center text-center mb-5">
             <div class="col-lg-8">
-                <div class="p-4 rounded-3" 
style="background:var(--unomi-primary-light)">
+                <div class="p-4 rounded-3 info-box-primary">
                     <h2 class="h5 mb-2">Looking for integrations, products, 
and commercial support?</h2>
                     <p class="text-muted mb-3">We&rsquo;ve consolidated all 
ecosystem information into a single, comprehensive page.</p>
                     <a href="/integrations.html" class="btn btn-primary"><i 
class="bi bi-puzzle me-2"></i>Visit the Integrations Page</a>
@@ -44,7 +45,7 @@ layout: default
                     <p class="small text-muted mb-3">The initial contributor 
of Apache Unomi, using it as the engine for their Customer Data Platform and 
Digital Experience Platform with native GDPR support.</p>
                     <blockquote class="small fst-italic text-muted 
border-start border-3 border-primary ps-3 mb-3">
                         &ldquo;Apache Unomi is a very important foundation of 
our products. We love it and are deeply committed to helping our customers 
succeed with it.&rdquo;
-                        <footer class="mt-1 fw-semibold" 
style="font-style:normal">&mdash; Serge Huber, Jahia CTO</footer>
+                        <footer class="mt-1 fw-semibold 
quote-attribution">&mdash; Serge Huber, Jahia CTO</footer>
                     </blockquote>
                     <a href="https://www.jahia.com"; target="_blank" 
rel="noopener" class="small fw-semibold">www.jahia.com <i class="bi 
bi-box-arrow-up-right"></i></a>
                 </div>
@@ -62,7 +63,7 @@ layout: default
                     <p class="small text-muted mb-3">DXP with enhanced Drupal 
CMS, Mautic marketing automation, and Unomi CDP for smart segmentation and 
cross-system marketing.</p>
                     <blockquote class="small fst-italic text-muted 
border-start border-3 border-primary ps-3 mb-3">
                         &ldquo;Apache Unomi was the puzzle piece that fitted 
perfectly. It was the obvious CDP to integrate in our DXP solution.&rdquo;
-                        <footer class="mt-1 fw-semibold" 
style="font-style:normal">&mdash; Mattias Michaux, Director of 
Engineering</footer>
+                        <footer class="mt-1 fw-semibold 
quote-attribution">&mdash; Mattias Michaux, Director of Engineering</footer>
                     </blockquote>
                     <a 
href="https://dropsolid.com/en/dropsolid-experience-cloud"; target="_blank" 
rel="noopener" class="small fw-semibold">dropsolid.com <i class="bi 
bi-box-arrow-up-right"></i></a>
                 </div>
@@ -91,16 +92,4 @@ layout: default
 </section>
 
 <!-- ASF compliance: randomize company ordering on every page load -->
-<script>
-(function() {
-    var groups = document.querySelectorAll('[data-shuffle-group]');
-    groups.forEach(function(container) {
-        var children = Array.from(container.children);
-        for (var i = children.length - 1; i > 0; i--) {
-            var j = Math.floor(Math.random() * (i + 1));
-            container.appendChild(children[j]);
-            var tmp = children[i]; children[i] = children[j]; children[j] = 
tmp;
-        }
-    });
-})();
-</script>
+<script src="/assets/js/shuffle.js" defer></script>

Reply via email to