Behind the scenes幕後
Project 99 % AI Project 99 % AI
How this site got made, slide by slide. 這個網站是怎麼蓋起來的,一頁一頁說。
Scroll ↓往下捲 ↓
By the share of code按程式碼比例
99%
Of what you scrolled through was written by AI. The remaining 1 % is David — the questions, the decisions, the “不行”. 你滑過的內容,99 % 是 AI 寫的。剩下的 1 % 是 David——提問題、做決定、講「不行」。
The collaboration loop合作流程
Brief. Build. Review. Ship. 下指令。動手做。檢查。上線。
01 · David01 · David
Sends intent — a precise correction, a new idea, a creative direction, or why the current version doesn’t read right. Sometimes with a screenshot. 把想法丟過來 — 可能是精準的修正、一個新點子、一個大方向,或現在這版為什麼不對。有時候會附張截圖。
~30 sec約 30 秒
02 · AI02 · AI
Reads the brief, analyses it — risks, better options — pushes back if needed, then writes the code and opens a PR. Preview auto-deploys. 讀懂 brief,先分析 — 風險、更好的做法 — 必要時回頭討論,再寫 code、開 PR。預覽站自動部署。
~5 min約 5 分鐘
↓ ↓
03 · David reviews03 · David 檢查
Opens dev on his iPhone. One word back: yes / no / keep going. 在 iPhone 打開 dev 看。一個字回覆:可以 / 不行 / 繼續。
~1 min約 1 分鐘
04 · Ship04 · 上線
PR opens, auto-merges to master, GitHub Actions ships to production. 開 PR、自動合併到 master,GitHub Actions 推到正式版。
~2 min約 2 分鐘
Eight versions, one site八個大版本,一個網站
From v2 to v8.67 從 v2 到 v8.67
- v2.x Early days. Static photo manifest, Netlify Functions, manual classification. 早期。靜態照片 manifest、Netlify Functions、人工分類。
- v3.x Apple rewrite. Cloudflare Pages, iCloud proxy, hero parallax, blur-up lightbox, the AI-intro black screen. Apple 風格大改。Cloudflare Pages、iCloud 代理、hero parallax、blur-up lightbox、AI intro 黑屏開場。
- v4.x Polish wave. Section rail, cinema-mode lightbox, magnetic CTA hover, style essays. 大量 polish。section rail、lightbox cinema mode、磁吸 hover、風格散文。
- v5.x Bilingual. EN/ZH toggle, paired Chinese prose, de-AI-ified Chinese, /keynote + /journey + /prompts. 雙語化。中英切換、中文段落配對、中文去 AI 腔、新增 /keynote + /journey + /prompts。
- v6.x Curated by heart. iCloud likes per photo drive the featured reel and the front of the grid. 用愛心策展。iCloud 上點的愛心決定首頁 reel 跟相片格的第一排。
- v7.x More 5-minute units. /lookbook silent slideshow, /frames AI essay, /compose triptych, /quiet ambient room, /making chat-film. 更多 5 分鐘小單位。/lookbook 幻燈片、/frames AI 六幀小品、/compose 三幀組合、/quiet 靜室、/making 對話紀錄片。
- v8.x Wayfinding, then launch-ready. Next-chapter CTAs and a flat numbered drawer. Photos became static local files (only videos still ride iCloud) and the gallery self-heals stale URLs. Hand-curated Journey heroes and Art page, an Instagram-Story export on /compose, and a long pre-launch hardening pass — now at v8.67. 先做導引,再備戰上線。下一章 CTA、扁平編號抽屜。照片改成本地靜態檔(只剩影片還走 iCloud),相簿過期網址會自動修復。Journey 主視覺與 Art 頁手動策展、/compose 加上 Instagram 限動匯出,還有一長段上線前的穩定化 — 目前到 v8.67。
By the numbers數字側寫
A small site, a big shape 小站,大形狀
1
HTML fileHTML 檔案
~8.5k
Lines in the main page主頁程式碼行數
130+
PRs mergedPR 上線
0
npm packagesnpm 套件
2
Gallery blackouts survived照片變黑事件
~1.3k
Words bilingual essay雙語散文字數
The bug that taught us caches讓我們重新認識 cache 的那個 bug
3 hours vs 6 hours 3 小時 vs 6 小時
Half of every day, every photo was a 403. The fix that stuck: the photos moved out of iCloud entirely and became static files in the repo — no expiring links, no caches to misalign. 每天有一半時間,每張照片回的都是 HTTP 403。真正一勞永逸的解法:照片整個搬出 iCloud,變成 repo 裡的靜態檔 — 沒有會過期的連結,也沒有對不齊的 cache。
Four modes of direction四種下指令的方式
Decide. Ask. Choose. Explain. 下決定。問。給選項。解釋。
The art tiles took three attempts藝術縮圖試了三次
From 「都還沒好」 to 「可以」 從 「都還沒好」 到 「可以」
- Fetch Instagram’s og:image. Cloudflare Function calls IG embed, parses og:image, proxies bytes.Result: IG blocks Cloudflare’s edge IPs. Dead. 抓 Instagram 的 og:image。Cloudflare Function 打 IG embed、解析 og:image、proxy 圖檔。結果:IG 把 Cloudflare 邊緣 IP 也擋了。死路。
- Pure typographic cards. No image at all — gold accent + serif title + IG link.Result: David: 「不行 就是要圖片」. 純文字卡片。完全不放圖、金線 + serif 標題 + IG 連結。結果:David 一句「不行 就是要圖片」。
- IG embed iframe, chrome clipped. Use IG’s own /embed iframe, hide the username + like-button with CSS overflow:hidden + negative offsets.Result: 「可以」. IG embed iframe,上下裁掉。用 IG 自己的 /embed iframe,CSS overflow:hidden 加負位移把帳號頭跟按讚列推出視窗外。結果:「可以」。
What makes this site weird (in a good way)這個網站不太一樣的地方
No build. No packages. Just files. 沒 build。沒套件。只有 檔案。
- ·01 One HTML file does the job of what most teams ship in 100+ files. 一個 HTML 檔案做完別人 100+ 個檔案才做完的事。
- ·02 The photos are static image files, shipped with the site itself. 照片是靜態圖檔,跟著網站一起上線。
- ·03 Cloudflare hosts the site and serves it fast, worldwide. Cloudflare 負責 host,把網站快速送到世界各地。
- ·04 The author writes prompts, not code. The AI does the typing. 作者寫的是 prompt,不是 code。打字的是 AI。
- ·05 Every change ships as a Pull Request — reviewed on a live preview before it merges to master. 每個改動都走 Pull Request — 先在預覽站看過,再合併進正式版。
Last slide最後一張
…
How long until 100 %? 距離 100 % 還有多久?
David still has to say 可以. Maybe forever. Maybe that’s the point. David 還是要說一句「可以」。也許永遠這樣。也許這就是重點。
— Project 99 % AI · 2026 — Project 99 % AI · 2026