replica-deploy
讀取 replica/ 中的所有內容。寫入 replica/deploy.md(此資料夾中 preflight.md 的檢查清單,已填寫完成)。
規則
- 未經使用者同意,不得上線。 顯示預檢結果並詢問。
- 使用者購買並登入。 代理永遠不會購買網域、輸入信用卡號、輸入密碼或貼上正式金鑰。代理撰寫精確的 DNS 記錄、環境變數名稱和命令;使用者負責帳號相關步驟。
- 直到重新品牌完成之前不可上線。 必須徹底清理,沒有例外。
步驟 1:預檢
執行每項檢查並將結果貼到 deploy.md 中:
npx playwright test # replica-test
python3 .cursor/skills/replica-diff/parity.py replica/features.csv # 必須完成的功能
python3 .cursor/skills/replica-brand/sweep.py . --config replica/brand.json # 退出碼 0:乾淨
python3 .cursor/skills/replica-launch/listing.py replica/launch/listing.json # 如果要發佈到商店
npm run build # 生產建置成功
(路徑假設套件位於專案根目錄的 .cursor/skills/ 中。如果將資料夾複製到其他地方,請將 python3 命令指向那些路徑。)
另外手動檢查:沒有未解決的 S1 或 S2 錯誤、隱私權政策和服務條款頁面已上線(列出所有處理者)、如果在歐盟或英國使用非必要 Cookie 則需有 Cookie 橫幅、帳號刪除功能正常、favicon、標題和 OG 圖片皆為你的內容。
任何失敗都會阻止部署。說明是哪一項失敗以及原因。
步驟 2:生產服務
- 一個獨立的生產專案用於資料庫(絕不與開發共用),啟用備份,遷移由部署執行而非手動。
- 在宿主端設定生產環境變數,與
.env.example相符。僅在此處放置正式金鑰。 - Stripe:切換到正式模式,重新建立產品和價格,新增生產 webhook 端點及其簽章密鑰,測試一筆真實購買並退款。
- OAuth:將生產網域新增到每個提供者的重新導向 URI 和授權來源中。需要驗證的 Google 範圍必須獲得批准,否則只有測試使用者可以登入。
- 電子郵件:在郵件供應商處驗證寄件網域。
步驟 3:宿主與網域
預設:Vercel 用於 Next.js(否則使用 Netlify、Cloudflare Pages、Fly 或 Render)。連接儲存庫,使 main 分支部署,且拉取請求獲得預覽 URL。
使用者在任何註冊商購買網域後:
| 記錄 | 名稱 | 值 |
|---|---|---|
| A | @ | 宿主的頂級 IP(Vercel:在網域設定中顯示) |
| CNAME | www | 宿主的目標(Vercel:cname.vercel-dns.com) |
| TXT | @ 或子網域 | 宿主的驗證值(如果要求) |
來自郵件供應商的電子郵件 DNS:SPF(TXT)、DKIM(CNAME 或 TXT)以及 DMARC 記錄,起始為 v=DMARC1; p=none; rua=mailto:you@yourdomain,然後在報告乾淨後收緊為 quarantine。沒有這些,你的確認郵件會進入垃圾郵件。
選擇一個主要宿主(頂級或 www)並將另一個重導向。以上宿主會自動啟用 HTTPS;請檢查。
步驟 4:監控
錯誤追蹤(Sentry 或宿主內建)、首頁及核心流程 API 的正常運行檢查、保留日誌、分析工具(隱私友善的版本可避免 Cookie 橫幅),以及向使用者的電子郵件或手機發送警報。然後自己在正式網站上執行核心流程,並請使用者在其手機上執行。
步驟 5:行動應用(如果有應用程式)
Expo:eas build 然後 eas submit 到 TestFlight 和 Play 內部測試。原生:在 Xcode 中封存,上傳到 App Store Connect;Gradle 套件上傳到 Play Console。使用者擁有開發者帳號(Apple 每年 $99,Google 一次 $25)。先進行 Beta 測試,然後使用 replica-launch 的清單進行審查。
輸出
replica/deploy.md 包含每項檢查及其結果、正式 URL、設定的 DNS 記錄,以及第一週應監控的事項。克隆現在是一個帶有你名字的應用程式。