Files
Zakaria a46764fb1b
ci / Validate workspace (push) Has been cancelled
landing-page-ci / Validate landing page (push) Has been cancelled
landing-page-deploy / Deploy landing page (push) Has been cancelled
github-metrics / Generate repository metrics SVG (push) Has been cancelled
refresh-contributors-wall / Refresh contributors wall cache bust (push) Waiting to run
first-commit
2026-05-04 14:58:14 -04:00

1214 lines
46 KiB
TypeScript

/*
* Open Design — Atelier Zero landing page.
*
* Mirrors `skills/open-design-landing/example.html` 1:1. When the canonical
* example.html changes, mirror the diff here and into `app/globals.css`.
*
* Static React component rendered by Astro. The Header and Wire components
* own the small client-side behaviors; promote other sections to Astro
* islands only when behavior is needed.
*/
import { Header } from './_components/header';
import { Wire } from './_components/wire';
import { heroImage, imageAsset } from './image-assets';
const arrowOut = (
<svg viewBox='0 0 24 24'>
<path d='M5 19L19 5M19 5H8M19 5v11' />
</svg>
);
const arrowPlus = (
<svg viewBox='0 0 24 24'>
<circle cx='12' cy='12' r='9' />
<path d='M9 12h6M12 9v6' />
</svg>
);
const NBSP = '\u00A0';
// Canonical project URLs. Keep in sync with skills/open-design-landing/example.html.
//
// `data-github-version` invariant: every wrapper must contain ONLY the version
// string (e.g. `v0.3.0`), never any surrounding label or punctuation. The
// inline enhancement script in `app/pages/index.astro` assigns `textContent`
// on each slot, so any extra text inside the wrapper would be clobbered.
const REPO = 'https://github.com/nexu-io/open-design';
const REPO_RELEASES = `${REPO}/releases`;
const REPO_ISSUES = `${REPO}/issues`;
const REPO_CONTRIBUTORS = `${REPO}/graphs/contributors`;
const REPO_DAEMON = `${REPO}/tree/main/apps/daemon`;
const REPO_SKILLS = `${REPO}/tree/main/skills`;
const REPO_DESIGN_SYSTEMS = `${REPO}/tree/main/design-systems`;
const REPO_DOCS = (file: string) => `${REPO}/blob/main/${file}`;
// Lineage / inspiration projects — make every brand mention clickable.
const LINEAGE = {
'huashu-design': 'https://github.com/alchaincyf/huashu-design',
'guizang-ppt': 'https://github.com/op7418/guizang-ppt-skill',
'multica-ai': 'https://github.com/multica-ai/multica',
'open-codesign': 'https://github.com/OpenCoworkAI/open-codesign',
'devin-cli': 'https://devin.ai/terminal',
hyperframes: 'https://github.com/heygen-com/hyperframes',
} as const;
const ext = {
target: '_blank',
rel: 'noreferrer noopener',
} as const;
// Global wire — cities the studio is composed from. The cities feed
// the top counter-scrolling marquee in the editorial ticker between
// the hero and the About section; the bottom contributor marquee is
// owned by `<Wire />`, which fetches the actual repo contributors
// from GitHub at runtime. Keep coordinates rough to fit the
// editorial register.
const WIRE_CITIES = [
{ name: 'Berlin', coord: '52.52°N' },
{ name: 'Tokyo', coord: '35.68°N' },
{ name: 'Shanghai', coord: '31.23°N' },
{ name: 'Beijing', coord: '39.90°N' },
{ name: 'Taipei', coord: '25.03°N' },
{ name: 'Singapore', coord: '1.35°N' },
{ name: 'Bangalore', coord: '12.97°N' },
{ name: 'Dubai', coord: '25.20°N' },
{ name: 'Lagos', coord: '6.52°N' },
{ name: 'Nairobi', coord: '1.29°S' },
{ name: 'Cape Town', coord: '33.92°S' },
{ name: 'Lisbon', coord: '38.72°N' },
{ name: 'Madrid', coord: '40.42°N' },
{ name: 'Paris', coord: '48.86°N' },
{ name: 'London', coord: '51.51°N' },
{ name: 'Amsterdam', coord: '52.37°N' },
{ name: 'Stockholm', coord: '59.33°N' },
{ name: 'Toronto', coord: '43.65°N' },
{ name: 'New York', coord: '40.71°N' },
{ name: 'San Francisco', coord: '37.77°N' },
{ name: 'Mexico City', coord: '19.43°N' },
{ name: 'São Paulo', coord: '23.55°S' },
{ name: 'Sydney', coord: '33.87°S' },
] as const;
export default function Page() {
return (
<>
{/* side rails (rotated brand text) */}
<div className='side-rail right' data-od-id='rail-right'>
<span className='rail-text'>
Open Design Vol. 01 · Issue 26 · Apache-2.0
</span>
</div>
<div className='side-rail left' data-od-id='rail-left'>
<span className='rail-text'>
Skills · Systems · Agents · BYOK · Local-first
</span>
</div>
<div className='shell'>
{/* ====== TOP METADATA STRIP ====== */}
<div className='topbar' data-od-id='topbar'>
<div className='container topbar-inner'>
<span>
<b>OD / 2026</b>
{NBSP}·{NBSP}Vol. 01 / Issue 26
</span>
<span className='mid'>
<span>
Filed under <b className='coral'>Design · Intelligence</b>
</span>
<span>Apache-2.0 · Made on Earth</span>
</span>
<span className='right'>
<a className='topbar-link' href={REPO_RELEASES} {...ext}>
<span className='pulse' />
Live · <span data-github-version>v0.3.0</span>
</a>
<span className='locale-switch'>
<b>EN</b>
{' · '}
<a className='topbar-link' href={REPO} {...ext} title='Localization in progress — open the repo on GitHub'>
DE
</a>
{' · '}
<a className='topbar-link' href={REPO} {...ext} title='Localization in progress — open the repo on GitHub'>
</a>
{' · '}
<a className='topbar-link' href={REPO} {...ext} title='Localization in progress — open the repo on GitHub'>
</a>
</span>
</span>
</div>
</div>
{/* ====== NAV ====== */}
{/* Headroom-style sticky header with live GitHub star count. */}
<Header />
{/* ====== HERO ====== */}
<section className='hero' id='top' data-od-id='hero'>
<div className='container hero-grid'>
<div className='hero-copy'>
<span className='label' data-reveal>
Open-source design studio <span className='ix'>· 01</span>
</span>
<h1 className='display' data-reveal>
Designing <em>intelligence</em> with skills, <em>taste,</em> and{' '}
<em>code</em>
<span className='dot'>.</span>
</h1>
<p className='lead' data-reveal>
The open-source alternative to Claude Design. Your existing
coding agent Claude · Codex · Cursor · Gemini · OpenCode ·
Qwen becomes the design engine, driven by 31 composable
skills and 72 brand-grade design systems.
</p>
<div className='hero-actions' data-reveal>
<a className='btn btn-primary' href={REPO} {...ext}>
Star us on GitHub
<span className='arrow'>{arrowOut}</span>
</a>
<a className='btn btn-ghost' href={REPO_RELEASES} {...ext}>
Download desktop
<span className='arrow'>{arrowPlus}</span>
</a>
</div>
<div className='hero-stats' data-reveal>
<div className='stat'>
<span className='ring solid'>31</span>
<span className='stat-label'>
<b>skills</b>shippable
</span>
</div>
<div className='stat'>
<span className='ring'>72</span>
<span className='stat-label'>
<b>systems</b>portable
</span>
</div>
<div className='stat'>
<span className='ring coral'>12</span>
<span className='stat-label'>
<b>CLIs</b>BYO agent
</span>
</div>
</div>
<div className='hero-foot' data-reveal>
<span className='meta'>
{NBSP}{NBSP}pnpm tools-dev{NBSP}{NBSP}·{NBSP}{NBSP}3 commands
to start
</span>
<span className='coord'>
52.5200° N{NBSP}·{NBSP}13.4050° E
</span>
</div>
</div>
<div className='hero-art' data-reveal='scale'>
<span className='corner tl' />
<span className='corner tr' />
<span className='corner bl' />
<span className='corner br' />
<span className='annot annot-tl coord'>FIG. 01 / OD-26</span>
<span className='annot annot-tr'>Plate 08</span>
<span className='annot annot-bl coord'>SHA · a1b2c3d</span>
<span className='annot annot-br'>
Composed in{NBSP}
<span style={{ color: 'var(--coral)' }}>Open Design</span>
</span>
<img src={heroImage} alt='' />
<div className='index'>
<span>
<span className='n'>01</span>Detect
</span>
<span className='on'>
<span className='n'>02</span>Discover
</span>
<span>
<span className='n'>03</span>Direct
</span>
<span>
<span className='n'>04</span>Deliver
</span>
</div>
</div>
</div>
</section>
{/* ====== WIRE / GLOBAL TICKER ====== */}
{/*
* Slim editorial ticker between the hero and About. Two
* counter-scrolling marquees signal that the project is
* global (cities, top row) and contributor-driven (handles,
* bottom row). Pure CSS animation; the track content is
* doubled in markup so the loop wraps seamlessly.
*
* Lives inside a client island because the contributor row is
* fetched live from the GitHub contributors API; the cities
* row is passed through as static data.
*/}
<Wire cities={WIRE_CITIES} />
{/* ====== ABOUT ====== */}
<section className='about' data-od-id='about'>
<div className='container'>
<div className='sec-rule'>
<span className='roman'>I.</span>
<span className='meta-grp'>
<span>About / Manifesto</span>
<span className='dot-mark'></span>
<span>Open Design / Volume 01</span>
</span>
<span>002 / 008</span>
</div>
<div className='about-grid'>
<div className='about-copy' data-reveal>
<span className='label'>
About the studio <span className='ix'>· 02</span>
</span>
<h2 className='display'>
We treat <em>your agent</em> as a creative{' '}
<em>collaborator,</em> not a black box
<span className='dot'>.</span>
</h2>
<p className='lead'>
The strongest coding agents already live on your laptop. We
don&rsquo;t ship one we wire them into a skill-driven design
workflow that runs locally with{' '}
<code className='code-inline'>pnpm tools-dev</code>, deploys
the web layer to Vercel, and stays BYOK at every layer.
</p>
<a className='btn btn-ghost' href={REPO_DAEMON} {...ext}>
Read our approach
<span className='arrow'>{arrowOut}</span>
</a>
<div className='footer-row'>
<span className='mark'>Ø</span>
<span>Research · Design · Engineering · Repeat</span>
<span className='stamp'>
<span>Studio practice</span>
<span style={{ color: 'var(--ink)' }}>Est. MMXXVI</span>
</span>
</div>
</div>
<div className='about-art' data-reveal='right'>
<img src={imageAsset('about.png', { width: 1024, quality: 82 })} alt='' />
<div className='about-side-note'>
<b />
From model behavior
<br />
to visual taste, we
<br />
prototype the full
<br />
stack of creative
<br />
systems.
</div>
<div className='about-caption'>
<b>Studies in form · perception · machine imagination.</b>
(Open Design, MMXXVI)
</div>
</div>
</div>
</div>
</section>
{/* ====== CAPABILITIES ====== */}
<section
className='capabilities'
id='agents'
data-od-id='capabilities'
>
<div className='container'>
<div className='sec-rule'>
<span className='roman'>II.</span>
<span className='meta-grp'>
<span>Capabilities · Skills · Systems</span>
<span className='dot-mark'></span>
<span>4 surfaces / 1 loop</span>
</span>
<span>003 / 008</span>
</div>
<div className='capabilities-grid'>
<div className='capabilities-art' data-reveal='left'>
<span className='corner tl' />
<span className='corner br' />
<img src={imageAsset('capabilities.png', { width: 1024, quality: 82 })} alt='' />
<div className='ribbon'>
<b>OPEN DESIGN</b>
{NBSP}·{NBSP}CAPABILITIES MATRIX{NBSP}·{NBSP}OD/26
</div>
</div>
<div className='capabilities-copy' data-reveal>
<span className='label'>
Capabilities <span className='ix'>· 03</span>
</span>
<h2 className='display'>
Skills, systems, and surfaces <em>for creative</em>{' '}
intelligence<span className='dot'>.</span>
</h2>
<p className='lead'>
We blend human taste with whichever agent you already trust to
ship interfaces, decks, and editorial pages that feel
intentional, expressive, and alive.
</p>
<div className='cards'>
<div className='card' data-reveal>
<div className='num'>
01<span className='tag'>Skills</span>
</div>
<svg
className='icon'
viewBox='0 0 24 24'
fill='none'
stroke='currentColor'
strokeWidth='1.5'
>
<circle cx='9' cy='9' r='5' />
<path d='M14 14l5 5' />
</svg>
<h3>
Skills,
<br />
not plugins
</h3>
<p>
31 file-based{' '}
<code style={{ fontFamily: 'var(--mono)', fontSize: 12 }}>
SKILL.md
</code>{' '}
bundles. Drop a folder in, restart the daemon, it appears.
</p>
<a
className='arrow-mark'
href={REPO_SKILLS}
aria-label='Browse all skills on GitHub'
{...ext}
>
{arrowOut}
</a>
</div>
<div className='card' data-reveal>
<div className='num'>
02<span className='tag'>Systems</span>
</div>
<svg
className='icon'
viewBox='0 0 24 24'
fill='none'
stroke='currentColor'
strokeWidth='1.5'
>
<rect x='3.5' y='3.5' width='8' height='8' />
<rect x='12.5' y='3.5' width='8' height='8' />
<rect x='3.5' y='12.5' width='8' height='8' />
<rect x='12.5' y='12.5' width='8' height='8' />
</svg>
<h3>
Design Systems
<br />
as Markdown
</h3>
<p>
72 portable{' '}
<code style={{ fontFamily: 'var(--mono)', fontSize: 12 }}>
DESIGN.md
</code>{' '}
systems Linear, Vercel, Stripe, Apple, Cursor, Figma
</p>
<a
className='arrow-mark'
href={REPO_DESIGN_SYSTEMS}
aria-label='Browse all design systems on GitHub'
{...ext}
>
{arrowOut}
</a>
</div>
<div className='card' data-reveal>
<div className='num'>
03<span className='tag'>Adapters</span>
</div>
<svg
className='icon'
viewBox='0 0 24 24'
fill='none'
stroke='currentColor'
strokeWidth='1.5'
>
<circle cx='8' cy='12' r='4.5' />
<circle cx='16' cy='12' r='4.5' />
</svg>
<h3>
12 Agent
<br />
Adapters
</h3>
<p>
Claude · Codex · Gemini · Cursor · Copilot · OpenCode ·
Devin · Hermes · Pi · Kimi · Kiro · Qwen auto-detected
on $PATH.
</p>
<a
className='arrow-mark'
href={REPO_DAEMON}
aria-label='Read the agent adapter source on GitHub'
{...ext}
>
{arrowOut}
</a>
</div>
<div className='card' data-reveal>
<div className='num'>
04<span className='tag'>BYOK</span>
</div>
<svg
className='icon'
viewBox='0 0 24 24'
fill='none'
stroke='currentColor'
strokeWidth='1.5'
>
<path d='M5 8h14v8H5z' />
<path d='M9 12h6M12 9v6' />
</svg>
<h3>
BYOK
<br />
at every layer
</h3>
<p>
OpenAI-compatible proxy. DeepSeek, Groq, OpenRouter, your
self-hosted vLLM paste a baseUrl + key, ship.
</p>
<a
className='arrow-mark'
href={REPO}
aria-label='See BYOK setup on GitHub'
{...ext}
>
{arrowOut}
</a>
</div>
</div>
</div>
</div>
</div>
</section>
{/* ====== LABS ====== */}
<section className='labs' id='labs' data-od-id='labs'>
<div className='container'>
<div className='sec-rule'>
<span className='roman'>III.</span>
<span className='meta-grp'>
<span>Labs / Skills Catalog</span>
<span className='dot-mark'></span>
<span>05 of 31 ongoing</span>
</span>
<span>004 / 008</span>
</div>
<div className='labs-head'>
<div data-reveal>
<span className='label'>
Labs <span className='ix'>· 04</span>
</span>
<h2 className='display' style={{ marginTop: 30 }}>
A living archive of <em>experiments</em> in skills, decks, and
machine-made form<span className='dot'>.</span>
</h2>
</div>
<div className='pills' data-reveal='right'>
<button type='button' className='pill active'>
All<span className='count'>31</span>
</button>
<button type='button' className='pill'>
Prototype<span className='count'>27</span>
</button>
<button type='button' className='pill'>
Deck<span className='count'>04</span>
</button>
<button type='button' className='pill'>
Mobile<span className='count'>03</span>
</button>
<button type='button' className='pill'>
Office<span className='count'>08</span>
</button>
</div>
</div>
<div className='labs-meta'>
<span className='ring'>05</span>
<div className='meta-text'>
<b>Ongoing experiments</b>
documenting ideas in flux
<br />
building intelligence
<br />
through making
</div>
</div>
<div className='labs-grid'>
{[
{
badge: 'Deck',
num: 'Nº 01',
title: 'Magazine Decks',
body: (
<>
Editorial-grade slide decks with{' '}
<code style={{ fontFamily: 'var(--mono)', fontSize: 12 }}>
guizang-ppt
</code>
. Magazine layout, WebGL hero.
</>
),
src: imageAsset('lab-1.png', { width: 768, quality: 82 }),
href: `${REPO_SKILLS}/guizang-ppt`,
},
{
badge: 'Media',
num: 'Nº 02',
title: 'Synthetic Matter',
body: 'Gpt-image-2 + Seedance + HyperFrames. Image, video, audio — same chat surface as code.',
src: imageAsset('lab-2.png', { width: 768, quality: 82 }),
href: `${REPO_SKILLS}/hyperframes`,
},
{
badge: 'Loop',
num: 'Nº 03',
title: 'Prompt Choreography',
body: 'The interactive question form pops before a single pixel is improvised. 30s of radios beats 30min of redirects.',
src: imageAsset('lab-3.png', { width: 768, quality: 82 }),
href: `${REPO_SKILLS}/design-brief`,
},
{
badge: 'Critique',
num: 'Nº 04',
title: 'Visual Reasoning',
body: '5-dim self-critique gates every artifact: philosophy · hierarchy · execution · specificity · restraint.',
src: imageAsset('lab-4.png', { width: 768, quality: 82 }),
href: `${REPO_SKILLS}/critique`,
},
{
badge: 'Runtime',
num: 'Nº 05',
title: 'Soft Systems',
body: 'Sandboxed iframe preview. Streaming todos. Real-cwd filesystem. Adaptive loops between human and machine.',
src: imageAsset('lab-5.png', { width: 768, quality: 82 }),
href: REPO_DAEMON,
},
].map((lab) => (
<div className='lab' key={lab.num} data-reveal>
<div className='lab-img'>
<span className='badge'>{lab.badge}</span>
<img src={lab.src} alt='' />
</div>
<div className='num-row'>
<span>{lab.num}</span>
<span>2026</span>
</div>
<h4>{lab.title}</h4>
<p>{lab.body}</p>
<a
className='arrow-mark'
href={lab.href}
aria-label={`Open ${lab.title} on GitHub`}
{...ext}
>
{arrowOut}
</a>
</div>
))}
</div>
<div className='labs-foot'>
<div className='progress'>
<span className='on' />
<span className='on' />
<span className='on' />
<span className='on' />
<span className='on' />
<span />
<span />
<span />
</div>
<span className='meta'>
05 / 31 SKILLS{NBSP}·{NBSP}
<a
href={REPO_SKILLS}
className='library-link'
style={{ color: 'var(--coral)' }}
{...ext}
>
VIEW FULL LIBRARY
</a>
</span>
</div>
</div>
</section>
{/* ====== METHOD ====== */}
<section className='method' data-od-id='method'>
<div className='container'>
<div className='sec-rule'>
<span className='roman'>IV.</span>
<span className='meta-grp'>
<span>Method / Loop</span>
<span className='dot-mark'></span>
<span>04 stages, iterative</span>
</span>
<span>005 / 008</span>
</div>
<div className='method-head'>
<div data-reveal>
<span className='label'>
Method <span className='ix'>· 05</span>
</span>
<h2 className='display' style={{ marginTop: 30 }}>
From <em>signals</em> to systems<span className='dot'>.</span>
</h2>
</div>
<div className='right' data-reveal='right'>
<span className='plus'>+</span>
<p>
Every stage is iterative, visual, and research-driven
composable files, not opaque prompts.
</p>
</div>
</div>
<div className='method-grid'>
{[
{
num: '01',
title: 'Detect',
body: 'The daemon scans your $PATH for 12 coding agents and auto-loads 31 skills + 72 systems on boot.',
src: imageAsset('method-1.png', { width: 816, quality: 82 }),
},
{
num: '02',
title: 'Discover',
body: 'Turn 1 is a question form — surface, audience, tone, scale, brand context. Locked in 30 seconds.',
src: imageAsset('method-2.png', { width: 816, quality: 82 }),
},
{
num: '03',
title: 'Direct',
body: 'Pick one of 5 deterministic visual directions. Palette in OKLch, font stack, layout posture cues.',
src: imageAsset('method-3.png', { width: 816, quality: 82 }),
},
{
num: '04',
title: 'Deliver',
body: 'The agent writes to disk, you preview in a sandboxed iframe, export HTML / PDF / PPTX / ZIP / Markdown.',
src: imageAsset('method-4.png', { width: 816, quality: 82 }),
},
].map((step) => (
<div className='method-step' key={step.num} data-reveal>
<div className='num'>{step.num}</div>
<h4>
{step.title} <span className='arrow-r'></span>
</h4>
<p>{step.body}</p>
<div className='img'>
<img src={step.src} alt='' />
</div>
</div>
))}
</div>
<div className='method-foot'>
<div className='left'>
<span className='ring' />
<span>Skills inform everything. Files make it real.</span>
</div>
<div className='right'>
<a className='method-repo-link' href={REPO} {...ext}>
<b>github.com/nexu-io/open-design</b>
</a>
{NBSP}·{NBSP}Apache-2.0
</div>
</div>
</div>
</section>
{/* ====== SELECTED WORK ====== */}
<section className='tight' data-od-id='work'>
<div className='work'>
<div className='work-rule'>
<span className='roman'>V.</span>
<span style={{ display: 'inline-flex', gap: 24 }}>
<span>Selected Work · 2026 Catalog</span>
<span style={{ color: 'var(--coral)' }}></span>
<span>Edited by Open Design</span>
</span>
<span>006 / 008</span>
</div>
<div className='work-grid'>
<div className='work-copy' data-reveal>
<span className='label'>Selected work</span>
<h2>
Skills that turn briefs into <em>memorable</em> shippable{' '}
<em>artifacts</em>
<span className='dot'>.</span>
</h2>
<a className='work-link' href={REPO_SKILLS} {...ext}>
View all 31 skills
</a>
</div>
<a
className='work-card'
data-reveal
href={`${REPO_SKILLS}/guizang-ppt`}
{...ext}
>
<div className='label-row'>
<span className='small-label'>Featured skill</span>
<span className='index'>01 / 31</span>
</div>
<h3>guizang-ppt</h3>
<p>
Magazine-style web PPT for product launches and pitch decks.
Bundled verbatim, original LICENSE preserved.
</p>
<div className='img'>
<img src={imageAsset('work-1.png', { width: 768, quality: 82 })} alt='' />
</div>
<div className='meta-row'>
<span className='year'>2026 · DECK</span>
<span>DEFAULT</span>
</div>
</a>
<a
className='work-card alt'
data-reveal
href='https://github.com/tw93/kami'
{...ext}
>
<div className='label-row'>
<span className='small-label'>Companion system</span>
<span className='index'>04 / 72</span>
</div>
<h3>kami</h3>
<p>
An editorial paper system. Warm parchment canvas, ink-blue
accent, serif-led hierarchy multilingual by design (EN ·
zh-CN · ja).
</p>
<div className='img'>
<img src={imageAsset('work-2.png', { width: 768, quality: 82 })} alt='' />
</div>
<div className='meta-row'>
<span className='year'>2026 · PAPER</span>
<span>SYSTEM</span>
</div>
</a>
</div>
<div className='work-arrows'>
<button type='button' className='nav-btn'>
<svg
width='14'
height='14'
viewBox='0 0 24 24'
fill='none'
stroke='currentColor'
strokeWidth='1.6'
>
<path d='M14 6l-6 6 6 6' />
</svg>
</button>
<button type='button' className='nav-btn active'>
<svg
width='14'
height='14'
viewBox='0 0 24 24'
fill='none'
stroke='currentColor'
strokeWidth='1.6'
>
<path d='M10 6l6 6-6 6' />
</svg>
</button>
</div>
</div>
</section>
{/* ====== TESTIMONIAL / COLLABORATORS ====== */}
<section className='testimonial' data-od-id='testimonial'>
<div className='container'>
<div className='sec-rule'>
<span className='roman'>VI.</span>
<span className='meta-grp'>
<span>Collaborators / Lineage</span>
<span className='dot-mark'></span>
<span>Standing on shoulders</span>
</span>
<span>007 / 008</span>
</div>
<div className='testimonial-grid'>
<div className='testimonial-copy' data-reveal>
<span className='label'>
Collaborators <span className='ix'>· 06</span>
</span>
<h2 style={{ marginTop: 30 }}>
&ldquo;Open Design helped us turn vague <em>AI ideas</em> into
a visual system that felt <em>sharp, believable,</em> and
genuinely new.&rdquo;
</h2>
<div className='author'>
<span className='avatar'>m</span>
<p>
Mina Kovac
<br />
<span>Creative Director · North Form</span>
</p>
</div>
<div className='divider' />
<p className='partners-text'>
Standing on the shoulders of teams shipping open-source design
culture.
</p>
<div className='partners'>
<a
className='partner'
data-reveal
href={LINEAGE['huashu-design']}
{...ext}
>
<div className='glyph'>
<svg
viewBox='0 0 80 30'
fill='none'
stroke='currentColor'
strokeWidth='2'
>
<path d='M5 24L20 6L35 24M12 18h16' />
</svg>
</div>
<span>huashu-design</span>
<small>Philosophy</small>
</a>
<a
className='partner'
data-reveal
href={LINEAGE['guizang-ppt']}
{...ext}
>
<div className='glyph'>
<svg
viewBox='0 0 80 30'
fill='none'
stroke='currentColor'
strokeWidth='2'
>
<path d='M8 24L20 6L24 22L36 4' />
</svg>
</div>
<span>guizang-ppt</span>
<small>Decks</small>
</a>
<a
className='partner'
data-reveal
href={LINEAGE['open-codesign']}
{...ext}
>
<div className='glyph'>
<svg
viewBox='0 0 80 30'
fill='none'
stroke='currentColor'
strokeWidth='2'
>
<circle cx='15' cy='15' r='9' />
<path d='M15 6v18M6 15h18' />
</svg>
</div>
<span>open-codesign</span>
<small>UX</small>
</a>
<a
className='partner'
data-reveal
href={LINEAGE['devin-cli']}
{...ext}
>
<div className='glyph'>
<svg
viewBox='0 0 80 30'
fill='none'
stroke='currentColor'
strokeWidth='2'
>
<path d='M5 8l9 7-9 7M20 24h18' />
</svg>
</div>
<span>Devin CLI</span>
<small>Terminal</small>
</a>
<a
className='partner'
data-reveal
href={LINEAGE['hyperframes']}
{...ext}
>
<div className='glyph'>
<svg
viewBox='0 0 80 30'
fill='none'
stroke='currentColor'
strokeWidth='2'
>
<rect x='4' y='5' width='22' height='18' />
<rect x='14' y='9' width='22' height='18' />
</svg>
</div>
<span>hyperframes</span>
<small>Frames</small>
</a>
</div>
<a className='read-more' href={REPO} {...ext}>
Read more stories
</a>
</div>
<div className='testimonial-art' data-reveal='right'>
<img src={imageAsset('testimonial.png', { width: 1024, quality: 82 })} alt='' />
</div>
</div>
</div>
</section>
{/* ====== CTA ====== */}
<section className='cta' id='contact' data-od-id='cta'>
<div className='container'>
<div className='sec-rule'>
<span className='roman'>VII.</span>
<span className='meta-grp'>
<span>Contact / Conversation</span>
<span className='dot-mark'></span>
<span>Three commands to ship</span>
</span>
<span>008 / 008</span>
</div>
<div className='cta-grid'>
<div data-reveal>
<span className='label'>
Start a conversation <span className='ix'>· 07</span>
</span>
<h2 className='display'>
Let&rsquo;s build something <em>open</em> and{' '}
<em>visually</em> unforgettable<span className='dot'>.</span>
</h2>
<p className='lead'>
Star us on GitHub, drop into the issues, or run{' '}
<code className='code-inline'>pnpm tools-dev</code> tonight.
Three commands and the loop is yours.
</p>
<div className='cta-actions'>
<a className='btn btn-primary' href={REPO} {...ext}>
Star on GitHub
<span className='arrow'>{arrowOut}</span>
</a>
<a className='email-pill' href={REPO_ISSUES} {...ext}>
Open an issue
<span className='arrow-circle'></span>
</a>
</div>
<div className='cta-foot'>
<span className='stamp'> Live</span>
<span>
<span data-github-version>v0.3.0</span> / Apache-2.0
</span>
<span style={{ marginLeft: 'auto' }}>
52.5200° N · 13.4050° E
</span>
</div>
</div>
<div className='cta-art' data-reveal='right'>
<img src={imageAsset('cta.png', { width: 1024, quality: 82 })} alt='' />
<div className='index'> 08</div>
<div className='ribbon'>
OPEN DESIGN{NBSP}·{NBSP}FIN.
</div>
</div>
</div>
</div>
</section>
{/* ====== FOOTER ====== */}
<footer data-od-id='footer'>
<div className='container'>
<div className='foot-grid'>
<div className='foot-brand'>
<a href='#top' className='brand'>
<span className='brand-mark'>Ø</span>
<span>Open Design</span>
</a>
<p style={{ marginTop: 18 }}>
The open-source alternative to Claude Design. Built on the
shoulders of{' '}
<a
className='inline-link'
href={LINEAGE['huashu-design']}
{...ext}
>
huashu-design
</a>
,{' '}
<a
className='inline-link'
href={LINEAGE['guizang-ppt']}
{...ext}
>
guizang-ppt
</a>
,{' '}
<a
className='inline-link'
href={LINEAGE['multica-ai']}
{...ext}
>
multica-ai
</a>
, and{' '}
<a
className='inline-link'
href={LINEAGE['open-codesign']}
{...ext}
>
open-codesign
</a>
.
</p>
<a
className='foot-cta'
href={REPO_RELEASES}
aria-label='Download the Open Design desktop app'
{...ext}
>
Download desktop
<span className='meta'>
macOS · <span data-github-version>v0.3.0</span>
</span>
</a>
</div>
<div className='foot-col'>
<h5>Studio</h5>
<ul>
<li>
<a href='#agents'>Capabilities</a>
</li>
<li>
<a href='#labs'>Labs</a>
</li>
<li>
<a href={REPO_DAEMON} {...ext}>
Method
</a>
</li>
<li>
<a href={REPO} {...ext}>
Manifesto
</a>
</li>
</ul>
</div>
<div className='foot-col'>
<h5>Library</h5>
<ul>
<li>
<a href={REPO_SKILLS} {...ext}>
31 Skills
</a>
</li>
<li>
<a href={REPO_DESIGN_SYSTEMS} {...ext}>
72 Systems
</a>
</li>
<li>
<a href={REPO_DESIGN_SYSTEMS} {...ext}>
5 Directions
</a>
</li>
<li>
<a href={`${REPO_SKILLS}/hyperframes`} {...ext}>
5 Frames
</a>
</li>
</ul>
</div>
<div className='foot-col'>
<h5>Connect</h5>
<ul>
<li>
<a href={REPO} {...ext}>
GitHub
</a>
</li>
<li>
<a href={REPO_ISSUES} {...ext}>
Issues
</a>
</li>
<li>
<a href={REPO_CONTRIBUTORS} {...ext}>
Contributors
</a>
</li>
<li>
<a href={REPO_RELEASES} {...ext}>
Releases
</a>
</li>
</ul>
</div>
<div className='foot-col'>
<h5>Docs</h5>
<ul>
<li>
<a href={REPO_DOCS('QUICKSTART.md')} {...ext}>
Quickstart
</a>
</li>
<li>
<a href={REPO_DOCS('docs/architecture.md')} {...ext}>
Architecture
</a>
</li>
<li>
<a href={REPO_DOCS('docs/skills-protocol.md')} {...ext}>
Skill Protocol
</a>
</li>
<li>
<a href={REPO_DOCS('docs/roadmap.md')} {...ext}>
Roadmap
</a>
</li>
</ul>
</div>
</div>
<div className='foot-bottom'>
<span>
<span className='pulse' />{' '}
<b style={{ color: 'var(--ink)' }}>Open Design</b> · Apache-2.0
· 2026 / Volume 01 / Issue 26
</span>
<span className='right'>
<span>Berlin / Open / Earth</span>
<span>52.5200° N · 13.4050° E</span>
<span style={{ color: 'var(--coral)' }}> MMXXVI</span>
</span>
</div>
<div className='foot-mega'>
<div className='word' data-reveal='rise-lg'>
Open <em>Design</em>.
</div>
</div>
</div>
</footer>
</div>
</>
);
}