跳轉到內容
supastack
瀏覽檔案

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh-tw/docs/web/database.md (or send Accept: text/markdown).

資料庫與遷移

準備 Postgres,並用已提交的遷移演進 Drizzle 模式。

詢問本指南
開啟方式

安裝與配置

在執行任何步驟之前,請閱讀開始之前 和終端基礎知識。這些說明假設您在 VS Code 中開啟了完整的 supastack monorepo;它的根 package.json 標記儲存庫根。在 pnpm 命令中,工作區包是應用程式或共享程式碼資料夾;在產品中,工作空間是團隊的資料容器和安全邊界。 corepack pnpm --filter ... 從 monorepo 選擇一個包,同時從其根執行命令。如果您僅開啟同步的移動或桌面資料夾,則它不包含 Web 後端、Docker 設定或根指令碼:從此 monorepo 或可訪問的託管伺服器執行後端,並使用平臺資料夾自己的指令碼。環境變數是儲存在本地 .env 檔案或託管儀錶板中的命名設定;更改後重新啟動相關應用程式,並將伺服器機密保留在 NEXT_PUBLIC_ 和 EXPO_PUBLIC_ 值之外。

1.安裝並啟動Docker Desktop。

2. 將 .env.example 複製到遷移工具根目錄中的 .env,將 Next.js 複製到 apps/web/.env.local(PowerShell:Copy-Item .env.example .env;Copy-Item .env.example apps/web/.env.local. macOS/Linux/Git Bash:cp .env.example .env;cp .env.example apps/web/.env.local)。保持兩個檔案中的 DATABASE_URL 相同;該示例已與本地 Docker 資料庫匹配。

3. 從儲存庫根目錄執行 docker compose up -d postgres 和 docker compose ps;等到 postgres 報告健康。

4. 從根執行 corepack pnpm --filter @supastack/db db:migrate 以應用套件中已附帶的遷移。僅在編輯 packages/db/src/schema.ts 後,執行 db:generate,檢查生成的 SQL,然後執行 ​​db:migrate。預期:本地 Postgres 容器執行正常,並且 Web 應用程式使用其遷移的資料庫。切勿將首次執行指向生產環境。

在服務端環境中為目標 Postgres 資料庫配置 DATABASE_URL。整合驗收使用獨立的一次性資料庫。絕不要把測試遷移指向生產資料庫。

資料庫 workspace 匯出模式定義與持久化助手。引入表或列之前,先閱讀 packages/db/src/schema.ts 與遷移目錄。

docker compose up -d postgres
docker compose ps
corepack pnpm --filter @supastack/db db:migrate

# Only after changing packages/db/src/schema.ts:
corepack pnpm --filter @supastack/db db:generate
corepack pnpm --filter @supastack/db db:migrate

# Optional Compose / Supabase settings in .env:
# POSTGRES_PASSWORD=supastack
# SUPABASE_ACCESS_TOKEN=
# DATABASE_POOLER=transaction

要複製的命令

按照註釋檢視命令在哪個資料夾中執行。如果標記了兩個終端,請開啟兩個終端視窗,並在使用第二個命令時保持第一個命令執行。

# Choose one copy method for your terminal:
# PowerShell:
Copy-Item .env.example .env
Copy-Item .env.example apps/web/.env.local

# macOS/Linux/Git Bash alternative:
# cp .env.example .env
# cp .env.example apps/web/.env.local

docker compose up -d postgres
docker compose ps
corepack pnpm --filter @supastack/db db:migrate

實現流程

修改模式後生成遷移,檢查生成的 SQL,並與模式變更一起提交。新增必填列之前,先規劃既有記錄如何取值。

每條使用者記錄都帶 workspaceId,並把這個邊界帶進讀寫。AI 記賬使用不可變的模型-價格歷史,而不是重寫已被用量記錄引用的價格。

驗證與排障

如果 Docker 表示無法連線到其引擎,請啟動 Docker Desktop 並等待其完成載入。如果 postgres 執行狀況不佳,請從根目錄執行 docker compose log postgres 並在遷移之前修復該錯誤。如果Web顯示DATABASE_URL缺失,請檢查apps/web/.env.local;如果 db:migrate 無法連線,請檢查 root .env。如果更改資料庫,請更新這兩個檔案。重試之前讀取第一個失敗的遷移語句;切勿在生產中重複此操作。

在隔離資料庫上應用遷移並在其上執行資料庫門檻測試。缺少憑證應產生明確的跳過門檻,而不是“持久化已通過”的斷言。遷移失敗時,先看是哪條語句失敗以及當前模式,再重試。

常見問題

14 個問題

supastack 是什麼?

supastack 是用於構建 AI 驅動 SaaS 產品的模組化基礎。它把通用基礎設施整合在一起,讓你專注於產品專屬的功能。

它支援 Web 和移動端嗎?

支援。supastack 包含 Next.js 與 Expo 應用,作為 Web 與移動端體驗的起點。

包含哪些認證方式?

Better Auth 覆蓋郵箱/密碼、OTP 與社交登入。個人工作區隨賬戶一起開通,產品記錄從第一天起就有邊界。

AI 是如何支援的?

supastack 包含可配置的多供應商 AI、用量追蹤、預算,以及加密的自帶金鑰(BYOK)支援。

訂閱如何處理?

對於基於該套件構建的產品,Stripe 計費、訂閱與許可權構成付費訪問的基礎。供應商金鑰僅存於服務端。

我的產品專屬程式碼放在哪裡?

產品專屬功能保留在獨立的程式碼庫中,產品通過配置接入 supastack 的基礎模組。

supastack 如何定價?

套件為一次性購買、終身更新:單棧 249 美元(Next.js(Web)、Expo(iOS 與 Android)、Tauri(macOS 與 Windows 桌面)倉庫任選其一),雙棧 398 美元(任選兩個倉庫),或完整套裝 399 美元(全部三個倉庫與完整 monorepo),每個額外開發者席位 75 美元。套件本身沒有訂閱。本站結賬後通過郵件傳送許可證金鑰,倉庫訪問通過 GitHub 邀請授予。

工作區如何界定我的資料?

使用者記錄按 workspaceId 劃定邊界。身份、許可權、AI 用量、計費事件與審計條目都留在個人工作區邊界內。

後臺任務如何工作?

Trigger.dev 是明確的任務執行時。JobRunner 契約只承諾 enqueue、status 與 cancel——工作流語義保持 Trigger.dev 專有且顯式。

郵件與營銷觸達有何不同?

事務性郵件覆蓋產品工作流,如任務完成通知。冷觸達與營銷活動屬於產品自身的範疇,不在本套件的郵件模組內。

移動端購買如何運作?

移動端已支援 RevenueCat 原生購買和恢復購買,訪問許可權由服務端驗證。釋出前需配置商店賬戶並完成裝置測試。Web 計費保持獨立。

AI 供應商金鑰存放在哪裡?

自帶金鑰憑證經過加密且僅存於服務端。金鑰在日誌中被脫敏;用量與預算在工作區級別保持可見。

結賬支援哪些付款方式?

Stripe 託管結賬接受銀行卡,在 Stripe 賬戶啟用後還可提供支付寶與微信支付——方便中國買家。錢包授權為非同步確認,付款完成後許可證頁面會立即更新。

我能申請退款嗎?

獲得程式碼倉庫訪問許可權後,supastack 將永久歸你所有,因此無法退款。但請放心,你將獲得包含終身更新的完整原始碼,可為你自己或客戶構建併發布無限數量的產品。你只需注意不能轉賣程式碼,也不能將倉庫作為啟動模板二次分發。唯一的例外是上線返現——上線一款用 supastack 打造的真實產品並公開分享,在購買後 60 天內達到 5,000 次自然瀏覽或 50 個自然按讚,即可退還已付款項的 50%;詳見條款。

TW
主題