尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Sonder landing page — Plum dark theme (handoff v2.1). Static HTML/CSS/JS, deployed on Vercel.
翻译准备中
正在加载完整 README。
查看完整 README ↗Static landing page for yousonder.com. Replaces the current Lovable build. Built to brand v2.1 (Plum Black + Aurora Mint, Magician/Effortless archetype).
A single-file static site. No build step, no framework, no npm install. Three files (index.html, style.css, app.js) plus an assets/ folder. Open index.html in any browser and the whole site runs locally.
Tech stack:
fast.wistia.com, used for the tutorial + showcase reels)That means deploying is just: upload the folder to any static host. That's it.
cd "Landing Page"
npx vercel
Drag the folder onto vercel.com → New Project → "Deploy as static." Vercel will give you a preview URL. Then add yousonder.com as a custom domain in Vercel project settings.
Landing Page folder onto the drop zone.yousonder.com to it via DNS.S3 + CloudFront, GitHub Pages, traditional shared hosting — all fine. Just upload the folder. Set index.html as the default document.
Total page weight: ~25 MB once all hero frames are loaded (the bulk is the 168-frame scroll-driven hero video). On a modern CDN with image compression this delivers in 2–3 seconds on 4G.
These are placeholders right now. Search for the marker in the code, swap the value, and you're done.
Search: https://yousonder.com/pricing
Currently: every "Be seen →" button across the page points to yousonder.com/pricing (with ?tier=starter/?tier=author/?tier=studio/?tier=agency on the pricing-tier buttons).
Action: confirm yousonder.com/pricing exists in the Sonder app. If the pricing page is somewhere else (/upgrade, /checkout, etc.) update the URLs.
File: app.js
Search: [Sonder free-video claim]
Currently: the form just console.logs the email + first name when submitted, then shows a "Welcome. Check your inbox" success state.
Action: replace the console.log line with a real fetch() POST to whatever endpoint Sonder uses for leads — Mailchimp, HubSpot, ConvertKit, or a Sonder backend route. Payload object is already built ({ firstname, email, source, ts }).
#Search: href="#"
Currently: these go nowhere — Sign in, Manifesto, Founders link in footer, Terms, Privacy, Contact.
Action: wire each to its real destination. Or remove them from the footer if they don't have pages yet.
The 9 Wistia videos are embedded by media-id. In Wistia → Customize → Embed & Share → check that embeds are allowed for the yousonder.com domain. If you don't add the production domain to the allowlist, the player will refuse to embed and show an error in production. Currently it works on localhost because Wistia permits localhost by default.
Wistia media-IDs in use (search data-wistia-id to see them all):
oenqanb3ejle99g7qi7f1ymppelyqm2tnccunxqxxqg4ugdw8zebeee2cm3zejw6zhrgpo66x1be2gyp2um9n (this is the share-ID, real media-id resolves automatically)gi0j9axtu9roe4n (same)Landing Page/
├── index.html # The page itself
├── style.css # All styles
├── app.js # All JS (canvas scroll-driver, lightbox, pricing toggle, exit-intent, etc.)
├── README.md # This file
│
├── assets/
│ ├── sonder-logo-plum-flat.svg # Used as favicon
│ ├── sonder-logo-plum-night.svg # Canonical brand mark
│ │
│ ├── frames/hero/ # Hero scroll-driven video (168 JPEG frames @ ~50KB each, ~8MB total)
│ │ ├── frame_001.jpg
│ │ ├── ...
│ │ └── frame_168.jpg
│ │
│ ├── stills/ # Showcase tile + tutorial thumbnails
│ │ ├── how-demo.jpg # Tutorial walkthrough thumbnail (Nano Banana branded card)
│ │ ├── european-cartoon.jpg # 8 showcase reels — one per Wistia video
│ │ ├── expert-podcaster.jpg
│ │ ├── neon-wireframe.jpg
│ │ ├── expert-panelist.jpg
│ │ ├── yellow-cartoon.jpg
│ │ ├── expert-speaker.jpg
│ │ ├── skeleton.jpg
│ │ └── stick-figure.jpg
│ │
│ ├── founders/ # About Sonder section avatars
│ │ ├── lexi.jpg # 200×200 — replace with a higher-res shot when available
│ │ └── mike.jpg # 200×200 — same
│ │
│ ├── receipts/ # Proof section customer screenshots
│ │ ├── forty-four-sales.jpg
│ │ ├── ten-sales-happy-dance.jpg
│ │ ├── lynn-dashboard.jpg
│ │ ├── lexi-profile.jpg
│ │ ├── lexi-insights.jpg
│ │ └── headline-numbers.png
│ │
│ └── images/ # Section background photos (low-opacity ambient)
│ ├── stats-bg.jpg # Behind the 2.9M views numbers (32% opacity)
│ └── final-bg.jpg # Behind the closing "Be seen" section (28% opacity)
│
└── _source/ # OPTIONAL — the raw hero MP4 master
└── Test hero trimmed.mp4 # If you want to re-extract frames at different quality, the source is here.
# Safe to delete if you don't need it. Frames are pre-extracted.
<canvas> element fills the hero section. As the user scrolls through the hero's 320vh tall container, app.js calculates scroll progress (0→1) and draws the corresponding frame (0→167) onto the canvas.position: sticky keeps the canvas pinned during scroll.<button data-reel data-wistia-id="..."> — clicking it opens the lightbox modal.<body> ([data-lightbox]).<wistia-player> element with the correct media-id, aspect (portrait or landscape), and autoplay="true". The Wistia player loads, autoplays, and the user closes via × button, backdrop click, or Esc.data-monthly / data-annual attributes on each .tier-num, .tier-pervideo, and the section headline's $6.97 span..pricing[data-cycle="annual"] .tier-billed { display: block }.mouseleave with clientY <= 0 (cursor exits via the top edge of the viewport — signal of moving to close/back).sessionStorage to only show once per session.?v=N to the src and bump N. Example currently in the codebase: how-demo.jpg?v=2.cache-control: max-age=... and use content-hashed filenames. That's a 30-minute setup, optional.Full brand guidelines live in SONDER/Brand/ (separate from this folder). Key values used throughout:
#0A0613 — canvas#7FFFD4 — signature accent#4A2F6E, Plum Mid #2D1A48, Plum Deep #1A0F2E — gradient halo stops#F5F5F7 — primary text#8B8FA3 — secondary text#B794F4 — motion-only (used in CSS variable, currently unused since the violet-sweep moment was removed with the hero rewrite)Fonts: Inter for everything except the Nunito 900 wordmark "Sonder".
Ping me — I'll connect you with the original author of these files. Otherwise: drag the folder onto Vercel, do the 4 wire-up tasks above, and you're live.
— Generated 2026-05-29 for the Sonder pre-launch handoff.