ウェブサーフェス
Schiftウェブアプリケーションは、パブリックマーケティングページ、ローカライズされたドキュメント、SEOコンテンツ、認証されたダッシュボードを1つのブラウザ向けのサーフェスで提供するAstroプロジェクトです。
ルートマップ
Section titled “ルートマップ”| ルート | 用途 |
|---|---|
/, /pricing | マーケティングランディングページ |
/docs/* | クイックスタート、SDK、CLI、概念、ウェブリファレンスのためのドキュメントシェル |
/blog/*, /compare/*, /guides/* | SEOおよび教育コンテンツ |
/ko/*, /jp/* | 韓国語および日本語のローカライズされたエントリーポイント |
/app, /app/workflows, /app/oauth-callback | 認証されたダッシュボードシェルおよびワークフロービルダーのエントリーポイント |
注意:
/app/*ルートは認証が必要なため、パブリックサイトマップから除外されています。
スタックとランタイム
Section titled “スタックとランタイム”| 要素 | 現在の選択 |
|---|---|
| Site framework | Astro 6 |
| Interactive UI | React 19 |
| Styling | Tailwind CSS 4 およびローカルUIプリミティブ |
| Localization | Astro i18n with en, ko, and jp |
| Deploy target | Cloudflare Pages with dist/ output from npm run build |
ローカル開発
Section titled “ローカル開発”要件:
- Node.js
>=22.12.0 npm
cd schift-webnpm installnpm run devデフォルトの開発サーバーは http://127.0.0.1:4324 で実行されます。Connectサーフェスを別のポートで実行するには:
npm run dev:connectConnectはデフォルトで http://127.0.0.1:4325 を使用します。
ランタイム構成
Section titled “ランタイム構成”ウェブアプリは、APIリクエストおよびビルド時のSEOアーティファクトのためにブラウザに公開された環境変数を読み取ります。
| 変数 | 用途 |
|---|---|
PUBLIC_API_URL | プロダクトAPIのオリジン |
PUBLIC_AUTH_API_URL | 認証APIのオリジン(ローカル互換性のために PUBLIC_API_URL にフォールバック) |
PUBLIC_CONNECT_ORIGIN | ログイン後の戻り先として許可するConnectアプリのオリジン |
PUBLIC_COOKIE_DOMAIN | アプリとConnectのサブドメインで共有する認証クッキードメイン |
PUBLIC_COOKIE_PREFIX | ダッシュボード認証で使用されるJS読み取り可能なCSRFクッキーのプレフィックス |
PUBLIC_SSO_SECURITY_URL | 2FA設定からリンクするアカウントセキュリティページのHTTPS URL |
PUBLIC_GA_MEASUREMENT_ID | Google Analyticsの測定ID(非プロダクションビルド用にオーバーライド) |
PUBLIC_SITE_URL | ビルド時に必要な正規のパブリックウェブオリジン |
PUBLIC_WIDGET_BROWSER_URL | ウィジェットHTML埋め込みコードに表示するブラウザモジュールURL |
PUBLIC_WIDGET_NPM_PACKAGE | React/Nextウィジェットインストールコードに表示するNPMパッケージ名 |
注意: プロダクション環境で
PUBLIC_API_URLとPUBLIC_AUTH_API_URLの両方を設定しないと、ウェブアプリの異なる部分が異なるバックエンドと通信する可能性があります。
ダッシュボードの認証は、バックエンドで設定された httpOnly クッキーと、PUBLIC_COOKIE_PREFIX から派生したJS読み取り可能なCSRFおよび戻り先クッキーを使用します。アプリとConnectが同じ親ドメインを共有する場合のみ PUBLIC_COOKIE_DOMAIN を設定し、Connectがログイン後に自分のオリジンへ戻す必要がある場合に PUBLIC_CONNECT_ORIGIN を設定します。
プロジェクトの境界
Section titled “プロジェクトの境界”ウェブリポジトリはブラウザ向けのUIのみを所有します。再利用可能なプロダクト契約は schift-api に存在し、ソース同期実行は schift-worker に、検索動作は schift-db に存在します。
| サーフェス | 場所 | 責任 |
|---|---|---|
| Public site | apps/www | マーケティング、ドキュメント、価格設定、およびコンテンツルート |
| Dashboard | apps/app | 認証されたプロダクト画面および /app/api/* BFFハンドラー |
| Connect/onboarding | apps/connect | ソース選択、OAuthハンドオフ、ビジネス登録、 /connect/api/* BFFハンドラー |
注意: 再利用可能なAPI契約をウェブリポジトリに置かないでください。ウェブローカルハンドラーは、セッションブートストラップ、OAuthの戻り、オンボーディングのドラフト状態、および画面固有の集約のためだけに使用されます。
デプロイメント
Section titled “デプロイメント”サイトは静的なAstroサイトとしてビルドされます。Cloudflare Pagesは、wrangler.toml に設定された生成された dist/ ディレクトリを提供します。
npm run buildnpm run preview注意: プロダクションビルドには、正しいSEOアーティファクトを生成するために
PUBLIC_SITE_URLが必要です。