diff --git a/App.tsx b/App.tsx
index 327140d..720d96a 100644
--- a/App.tsx
+++ b/App.tsx
@@ -7,6 +7,7 @@ import { SkillsCatalog } from './pages/SkillsCatalog';
import { SkillDetail } from './pages/SkillDetail';
import { AdvisoryDetail } from './pages/AdvisoryDetail';
import { WikiBrowser } from './pages/WikiBrowser';
+import { ProductDemo } from './pages/ProductDemo';
const App: React.FC = () => {
return (
@@ -18,6 +19,7 @@ const App: React.FC = () => {
} />
} />
} />
+ } />
} />
diff --git a/components/Header.tsx b/components/Header.tsx
index fe130d3..387115f 100644
--- a/components/Header.tsx
+++ b/components/Header.tsx
@@ -1,6 +1,6 @@
import React, { useState } from 'react';
import { NavLink } from 'react-router-dom';
-import { Menu, X, Terminal, Layers, Rss, Home, Github, BookOpenText } from 'lucide-react';
+import { Menu, X, Terminal, Layers, Rss, Home, Github, BookOpenText, PlayCircle } from 'lucide-react';
export const Header: React.FC = () => {
const [isOpen, setIsOpen] = useState(false);
@@ -9,6 +9,7 @@ export const Header: React.FC = () => {
{ label: 'Home', path: '/', icon: Home },
{ label: 'Skills', path: '/skills', icon: Layers },
{ label: 'Security Feed', path: '/feed', icon: Rss },
+ { label: 'Product Demo', path: '/demo', icon: PlayCircle },
{ label: 'Wiki', path: '/wiki', icon: BookOpenText },
];
diff --git a/pages/ProductDemo.tsx b/pages/ProductDemo.tsx
new file mode 100644
index 0000000..c4003d7
--- /dev/null
+++ b/pages/ProductDemo.tsx
@@ -0,0 +1,92 @@
+import React from 'react';
+import { ExternalLink, PlayCircle } from 'lucide-react';
+import { Footer } from '../components/Footer';
+
+interface DemoVideo {
+ id: string;
+ title: string;
+ description: string;
+ videoSrc: string;
+ posterSrc: string;
+ videoContainerClassName?: string;
+}
+
+const demoVideos: DemoVideo[] = [
+ {
+ id: 'drift-demo',
+ title: 'Drift Detection Demo (soul-guardian)',
+ description:
+ 'Shows integrity monitoring in action: tamper detection, alerting, and restoration-oriented behavior for protected files.',
+ videoSrc: '/video/soul-guardian-demo.mp4',
+ posterSrc: '/video/soul-guardian-demo-poster.jpg',
+ },
+ {
+ id: 'install-demo',
+ title: 'Install Demo (clawsec-suite)',
+ description:
+ 'Walkthrough of the one-command suite install flow and what gets configured for advisory monitoring and protection.',
+ videoSrc: '/video/install-demo.mp4',
+ posterSrc: '/video/install-demo-poster.jpg',
+ videoContainerClassName: 'md:max-w-[50%]',
+ },
+];
+
+export const ProductDemo: React.FC = () => {
+ return (
+
+
+
+
+ Watch It in Action
+
+
+ Product demos for ClawSec installation and runtime protection behavior. These are the
+ same demo assets referenced in the repository README, presented as playable videos.
+
+
+
+
+ {demoVideos.map((demo) => (
+
+
+
{demo.title}
+
{demo.description}
+
+
+
+ ))}
+
+
+
+
+ );
+};