ShipFastの代替としてsupastackを選ぶ理由は?
ロードマップが単一のWebアプリにとどまるかどうかによります。ShipFastは個人開発者がAuth.jsとStripeで素早くプロトタイプを作るための優れたテンプレートです。一方のsupastackは、持続的に成長する事業のために設計されています。Next.js 16 Web、Expoモバイル(iOS/Android)、Tauriデスクトップを単一モノレポで提供し、144のテスト、Better Auth、組織マルチテナント、8つの決済プロバイダー、暗号化BYOK AI予算を備えています。将来の大規模な作り直しを防ぐならsupastackが最適です。
単一アプリの限界:個人MVPがWebの枠を超えたとき
ShipFastは、Next.js、Auth.js、Stripe決済、高CVRランディングページ部品を1つのフォルダにまとめることで、商用ボイラープレートの市場を確立しました。
しかし、初期の検証に成功した創業者はすぐにShipFastの限界に直面します。ユーザーからのネイティブモバイルアプリの要望、企業顧客からのチーム権限管理の要求、トークン制限のないAI機能による想定外の請求、そしてテストのないコードをAIエージェントで変更する際のリグレッションリスクという4つの壁です。
厳格なモノレポパッケージ境界 vs 単一フォルダ構造
ShipFastはすべてのコードを単一のNext.jsアプリディレクトリに配置します。これは直感的ですが、ユーティリティ、DBクエリ、UIコンポーネントが強く結合します。モバイル版やバックグラウンドワーカーを追加しようとすると、コードを複製するかリポジトリを再構築するしかありません。
supastackは洗練されたTurborepoモノレポを採用しています。共有機能はヘッドレスな型安全パッケージに分離されています。@supastack/authが全クライアントのセッションを検証し、@supastack/dbがDrizzle ORMスキーマを管理し、@supastack/billingが8つの決済プロバイダーを統括します。Web、モバイル、デスクトップがコード重複ゼロで連携します。
| 機能・項目 | ShipFast | supastack |
|---|---|---|
| アーキテクチャ | 単一Next.jsアプリディレクトリ | パッケージ境界が厳格なTurborepoモノレポ |
| 対応クライアント | Next.js Webのみ | Next.js 16 Web + TanStack Start + Expoモバイル + Tauriデスクトップ |
| 認証システム | Auth.js (NextAuth v5 beta) | Better Auth (OAuth、パスキー、2FA、なりすましログイン) |
| マルチテナント | 単一ユーザーモデル | 個人および組織ワークスペース、RBAC、席課金 |
| 自動テスト | テストファイルなし | 144テストファイル(ローカル完結テストゲート付き) |
| 決済ゲートウェイ | StripeおよびLemon Squeezy | 8つのWeb決済 (Stripe, Lemon Squeezy, Polar, Creem, Dodo, Paddle, Whop, PayPal) + RevenueCat |
| 開発者向けAPI機能 | なし | ワークスペースAPIキー、署名付き送信Webhook、監査ログ、OpenAPI |
| AIコスト保護機能 | 簡易プロンプトラッパー | 能力対応ルーター、暗号化BYOK、トークン予算制御 |
AI協調開発において144の自動テストが不可欠な理由
現代のエンジニアはCursor、Claude Code、GitHub CopilotなどのAIとペアプログラミングを行います。テストのないコードベースでAIに機能追加を指示すると、知らないうちにWebhookの冪等性やセッション検証が破壊される危険があります。
supastackには144の自動テストファイルと、外部APIなしで全重要フローを実行できるローカル検証ゲート(pnpm verify:local)が同梱されています。人間やAIがコードを変更しても、数秒で安全性を確認できます。
選択基準:ShipFastを継続すべきか、supastackへ移行すべきか
ShipFastを選ぶべき場合:個人で軽量なWebツールを素早く作りたいとき、構造のシンプルさを重視するとき、当面モバイルアプリやチーム機能が必要ないとき。
supastackを選ぶべき場合:本格的なB2B SaaSを展開したいとき、コスト管理付きのAIツールを作るとき、単一のTypeScriptコードベースからiOS、Android、デスクトップアプリを同時展開したいとき。