From ec81b1ff77d94b1af0a29b3b2ee91866e8738c05 Mon Sep 17 00:00:00 2001 From: ammar siddiqui Date: Tue, 26 May 2026 22:34:36 -0400 Subject: [PATCH] docs: add Hebb landing page --- .nojekyll | 1 + README.md | 23 ++ assets/logo.png | Bin 0 -> 33065 bytes index.html | 147 ++++++++++++ styles.css | 610 ++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 781 insertions(+) create mode 100644 .nojekyll create mode 100644 README.md create mode 100644 assets/logo.png create mode 100644 index.html create mode 100644 styles.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.nojekyll @@ -0,0 +1 @@ + diff --git a/README.md b/README.md new file mode 100644 index 0000000..b740482 --- /dev/null +++ b/README.md @@ -0,0 +1,23 @@ +# Hebb Docs + +Public landing page and documentation home for the Hebb project. + +This repo is intentionally static for the first pass so it can be hosted by +GitHub Pages without a build step. + +## Local preview + +```bash +python3 -m http.server 4173 +``` + +Open . + +## Deploy on GitHub Pages + +Use repository settings: + +- Source: `Deploy from a branch` +- Branch: `main` +- Folder: `/ (root)` + diff --git a/assets/logo.png b/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6920e2fa2319d0efd8db1f9d2786a00b5e920fcc GIT binary patch literal 33065 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 + + + + + + Hebb + + + + + + +
+
+
+

Open-source neural substrate

+

Build systems that learn as streams of events.

+

+ Hebb combines a Rust spiking-network core, Python bindings, and a + local-first visualizer for exploring graph-shaped memory, + plasticity, and brain-inspired AI architectures. +

+ +
+ +
+ +
+
+ +
+
+

Platform

+

One project, two public surfaces.

+
+
+
+ App +

Hebb desktop

+

+ A local-first Tauri app and web visualizer for opening cortex + folders, watching spikes propagate, and inspecting learned + structure. +

+ github.com/hebb-project/hebb +
+
+ Library +

Hebb core

+

+ A pure-Rust spiking-neural-network substrate with optional disk + format support and Python bindings for research workflows. +

+ github.com/hebb-project/hebb_core +
+
+
+
+ + + +
+
+
+ + + +
+ +
+ + + + +
+
+
+ Replace this frame with a desktop screenshot once the public demo + capture is ready. +
+
+
+ +
+
+

Docs

+

Public documentation will live here.

+
+ +
+
+ + + + diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..000204e --- /dev/null +++ b/styles.css @@ -0,0 +1,610 @@ +:root { + --bg: #080a0f; + --bg-soft: #0d1117; + --panel: #101620; + --panel-2: #0b1017; + --line: #213040; + --line-soft: #17212d; + --text: #edf6fa; + --muted: #9da9b5; + --muted-2: #6f7c89; + --cyan: #7df9ff; + --cyan-soft: rgba(125, 249, 255, 0.14); + --pink: #ff5d8f; + --purple: #b794f6; + --green: #9ff2bf; + --shadow: rgba(0, 0, 0, 0.35); +} + +* { + box-sizing: border-box; +} + +html { + background: var(--bg); + color: var(--text); + font-family: + Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", + sans-serif; + line-height: 1.5; + scroll-behavior: smooth; +} + +body { + margin: 0; + min-height: 100vh; + background: + radial-gradient(circle at 20% 8%, rgba(125, 249, 255, 0.1), transparent 28rem), + radial-gradient(circle at 80% 0%, rgba(255, 93, 143, 0.08), transparent 26rem), + linear-gradient(180deg, #090d13 0%, var(--bg) 48%, #07090d 100%); +} + +a { + color: inherit; + text-decoration: none; +} + +.site-header { + align-items: center; + border-bottom: 1px solid var(--line-soft); + display: flex; + height: 72px; + justify-content: space-between; + margin: 0 auto; + max-width: 1180px; + padding: 0 24px; +} + +.brand { + align-items: center; + display: inline-flex; + font-size: 18px; + font-weight: 650; + gap: 10px; + letter-spacing: 0; +} + +.brand img { + height: 34px; + width: 34px; +} + +.site-nav { + align-items: center; + color: var(--muted); + display: flex; + font-size: 14px; + gap: 22px; +} + +.site-nav a:hover { + color: var(--cyan); +} + +main { + margin: 0 auto; + max-width: 1180px; + padding: 0 24px 56px; +} + +.hero { + align-items: center; + display: grid; + gap: 48px; + grid-template-columns: minmax(0, 1fr) 430px; + min-height: calc(100vh - 72px); + padding: 72px 0 88px; +} + +.hero-copy { + max-width: 720px; +} + +.eyebrow { + color: var(--cyan); + font-size: 12px; + font-weight: 700; + letter-spacing: 0.13em; + margin: 0 0 14px; + text-transform: uppercase; +} + +h1, +h2, +h3, +p { + margin-top: 0; +} + +h1 { + font-size: clamp(46px, 7vw, 88px); + font-weight: 700; + letter-spacing: 0; + line-height: 0.96; + margin-bottom: 24px; + max-width: 860px; +} + +h2 { + font-size: clamp(30px, 4vw, 48px); + font-weight: 680; + letter-spacing: 0; + line-height: 1.04; + margin-bottom: 0; +} + +h3 { + font-size: 22px; + line-height: 1.18; + margin-bottom: 12px; +} + +.lede { + color: var(--muted); + font-size: 20px; + max-width: 690px; +} + +.hero-actions { + display: flex; + flex-wrap: wrap; + gap: 12px; + margin-top: 34px; +} + +.button { + align-items: center; + border: 1px solid var(--line); + border-radius: 8px; + display: inline-flex; + font-size: 15px; + font-weight: 650; + min-height: 46px; + padding: 0 18px; + transition: + border-color 160ms ease, + background 160ms ease, + color 160ms ease, + transform 160ms ease; +} + +.button:hover { + transform: translateY(-1px); +} + +.button.primary { + background: var(--cyan); + border-color: var(--cyan); + color: #041116; +} + +.button.secondary { + background: rgba(16, 22, 32, 0.72); + color: var(--text); +} + +.button.secondary:hover { + border-color: rgba(125, 249, 255, 0.5); + color: var(--cyan); +} + +.hero-symbol { + align-items: center; + aspect-ratio: 1; + background: + radial-gradient(circle at 50% 50%, rgba(125, 249, 255, 0.1), transparent 42%), + rgba(16, 22, 32, 0.36); + border: 1px solid rgba(125, 249, 255, 0.12); + border-radius: 50%; + display: grid; + justify-items: center; + position: relative; +} + +.hero-symbol::before, +.hero-symbol::after { + border: 1px solid rgba(125, 249, 255, 0.08); + border-radius: 50%; + content: ""; + inset: 13%; + position: absolute; +} + +.hero-symbol::after { + border-color: rgba(255, 93, 143, 0.07); + inset: 28%; +} + +.network-mark { + height: 300px; + position: relative; + width: 300px; +} + +.mark-node, +.mark-edge { + display: block; + position: absolute; +} + +.mark-node { + background: #0b1017; + border: 2px solid rgba(125, 249, 255, 0.82); + border-radius: 999px; + box-shadow: + 0 0 0 12px rgba(125, 249, 255, 0.05), + 0 0 28px rgba(125, 249, 255, 0.24); + height: 38px; + width: 38px; + z-index: 2; +} + +.mn1 { + left: 35px; + top: 130px; +} + +.mn2 { + border-color: rgba(255, 93, 143, 0.9); + box-shadow: + 0 0 0 12px rgba(255, 93, 143, 0.06), + 0 0 28px rgba(255, 93, 143, 0.26); + left: 130px; + top: 42px; +} + +.mn3 { + left: 217px; + top: 130px; +} + +.mn4 { + border-color: rgba(183, 148, 246, 0.9); + box-shadow: + 0 0 0 12px rgba(183, 148, 246, 0.06), + 0 0 28px rgba(183, 148, 246, 0.22); + left: 95px; + top: 222px; +} + +.mn5 { + left: 196px; + top: 222px; +} + +.mark-edge { + background: rgba(125, 249, 255, 0.3); + height: 2px; + transform-origin: left center; + z-index: 1; +} + +.me1 { + left: 71px; + top: 139px; + transform: rotate(-42deg); + width: 126px; +} + +.me2 { + background: rgba(255, 93, 143, 0.34); + left: 164px; + top: 73px; + transform: rotate(42deg); + width: 122px; +} + +.me3 { + background: rgba(183, 148, 246, 0.34); + left: 120px; + top: 232px; + transform: rotate(-31deg); + width: 118px; +} + +.me4 { + left: 234px; + top: 163px; + transform: rotate(72deg); + width: 84px; +} + +.section { + padding: 76px 0; +} + +.section-heading { + display: flex; + justify-content: space-between; + gap: 28px; + margin-bottom: 28px; +} + +.platform-grid { + display: grid; + gap: 16px; + grid-template-columns: repeat(2, minmax(0, 1fr)); + margin-bottom: 28px; +} + +.platform-grid article { + background: rgba(16, 22, 32, 0.72); + border: 1px solid var(--line); + border-radius: 10px; + padding: 24px; +} + +.card-label { + color: var(--pink); + display: block; + font-family: ui-monospace, "SF Mono", Menlo, monospace; + font-size: 12px; + margin-bottom: 36px; +} + +.platform-grid p { + color: var(--muted); + max-width: 520px; +} + +.platform-grid a { + color: var(--cyan); + font-size: 14px; +} + +.desktop-shot { + background: + linear-gradient(180deg, rgba(16, 22, 32, 0.86), rgba(8, 10, 15, 0.92)), + var(--panel); + border: 1px solid var(--line); + border-radius: 14px; + box-shadow: 0 24px 80px var(--shadow); + margin: 0; + overflow: hidden; +} + +.shot-topbar { + align-items: center; + border-bottom: 1px solid var(--line-soft); + display: flex; + gap: 8px; + height: 38px; + padding: 0 16px; +} + +.shot-topbar span { + background: var(--line); + border-radius: 999px; + height: 8px; + width: 8px; +} + +.shot-canvas { + display: grid; + grid-template-columns: 220px minmax(0, 1fr) 220px; + min-height: 470px; +} + +.shot-sidebar, +.shot-inspector { + background: rgba(11, 16, 23, 0.72); + border-right: 1px solid var(--line-soft); + padding: 22px; +} + +.shot-inspector { + border-left: 1px solid var(--line-soft); + border-right: 0; +} + +.shot-sidebar span, +.shot-inspector span { + background: rgba(157, 169, 181, 0.14); + border-radius: 6px; + display: block; + height: 38px; + margin-bottom: 12px; +} + +.shot-sidebar span:first-child, +.shot-inspector span:first-child { + background: rgba(125, 249, 255, 0.12); +} + +.shot-network { + min-height: 470px; + position: relative; +} + +.shot-node, +.shot-edge { + display: block; + position: absolute; +} + +.shot-node { + background: #0b1017; + border: 2px solid rgba(125, 249, 255, 0.78); + border-radius: 999px; + box-shadow: + 0 0 0 16px rgba(125, 249, 255, 0.045), + 0 0 32px rgba(125, 249, 255, 0.24); + height: 42px; + width: 42px; + z-index: 2; +} + +.sn1 { left: 18%; top: 32%; } +.sn2 { left: 48%; top: 22%; border-color: rgba(255, 93, 143, 0.86); box-shadow: 0 0 0 16px rgba(255, 93, 143, 0.05), 0 0 32px rgba(255, 93, 143, 0.22); } +.sn3 { left: 68%; top: 52%; } +.sn4 { left: 36%; top: 70%; border-color: rgba(183, 148, 246, 0.86); box-shadow: 0 0 0 16px rgba(183, 148, 246, 0.05), 0 0 32px rgba(183, 148, 246, 0.2); } + +.shot-edge { + background: rgba(125, 249, 255, 0.28); + height: 2px; + transform-origin: left center; +} + +.se1 { left: 23%; top: 36%; transform: rotate(-13deg); width: 210px; } +.se2 { left: 54%; top: 29%; transform: rotate(43deg); width: 180px; background: rgba(255, 93, 143, 0.3); } +.se3 { left: 41%; top: 73%; transform: rotate(-32deg); width: 245px; background: rgba(183, 148, 246, 0.3); } + +.desktop-shot figcaption { + border-top: 1px solid var(--line-soft); + color: var(--muted-2); + font-size: 13px; + margin: 0; + padding: 14px 18px 16px; + text-align: center; +} + +.split { + align-items: start; + border-top: 1px solid var(--line-soft); + display: grid; + gap: 42px; + grid-template-columns: 0.85fr 1.15fr; +} + +.doc-list { + border: 1px solid var(--line); + border-radius: 10px; + overflow: hidden; +} + +.doc-list a { + background: rgba(16, 22, 32, 0.58); + border-bottom: 1px solid var(--line-soft); + display: block; + padding: 20px 22px; +} + +.doc-list a:last-child { + border-bottom: 0; +} + +.doc-list a:hover { + background: rgba(125, 249, 255, 0.06); +} + +.doc-list span { + display: block; + font-size: 17px; + font-weight: 650; + margin-bottom: 4px; +} + +.doc-list small { + color: var(--muted); + font-size: 14px; +} + +.site-footer { + align-items: center; + border-top: 1px solid var(--line-soft); + color: var(--muted-2); + display: flex; + flex-wrap: wrap; + font-size: 13px; + gap: 18px; + justify-content: center; + margin: 0 auto; + max-width: 1180px; + padding: 26px 24px 40px; +} + +.site-footer a { + color: var(--muted); +} + +@media (max-width: 880px) { + .site-header { + height: auto; + min-height: 68px; + } + + .site-nav { + gap: 14px; + } + + .hero, + .split { + grid-template-columns: 1fr; + } + + .hero { + min-height: auto; + padding-top: 56px; + } + + .platform-grid { + grid-template-columns: 1fr; + } + + .shot-canvas { + grid-template-columns: 1fr; + min-height: 520px; + } + + .shot-sidebar, + .shot-inspector { + display: none; + } + + .shot-network { + min-height: 520px; + } +} + +@media (max-width: 560px) { + .site-header { + align-items: flex-start; + flex-direction: column; + gap: 12px; + padding-bottom: 16px; + padding-top: 16px; + } + + main { + padding-left: 18px; + padding-right: 18px; + } + + h1 { + font-size: 46px; + } + + .lede { + font-size: 18px; + } + + .button { + justify-content: center; + width: 100%; + } + + .hero-symbol { + margin: 0 auto; + max-width: 340px; + } + + .network-mark { + height: 250px; + transform: scale(0.82); + width: 250px; + } + + .shot-canvas, + .shot-network { + min-height: 360px; + } + + .shot-node { + height: 34px; + width: 34px; + } + + .desktop-shot figcaption { + display: none; + } +}