尚未偵測到更新。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.