SaaSus Platformを使った実装(サーバレス)
SaaSus Platformを使ったサーバレス方式でのSaaSアプリケーション実装例です。 認証、テナント管理、ユーザー管理など、SaaSに必要な機能をサーバレス環境で動かしながら学習できます。
主な特徴
- サーバレス構成: AWS Lambda + CloudFront + S3 を活用
- React + TypeScript: フロントエンドにReactを使用
- JWT認証: ブラウザのローカルストレージでトークン管理
- CDK対応: AWS CDKを使用したインフラ一括構築・デプロイ
- モノリポ: フロントエンドとバックエンドを1つのリポジトリで管理
実装方式について
このサンプルアプリケーションは、サーバレス版として実装されています。
サーバレス版の特徴
バックエンドをサーバレスで構成する実装方式で、以下のような特徴があります:
- SaaSus Platformの認証情報となるトークン(JWT)を、ブラウザのローカルストレージに保管
- SaaS Platform利用者はJWTを使って本人確認を行う
- フロントエンドはReactで実装、S3 + CloudFrontでホスティング
- バックエンドはLambda上で動作するAPIサーバとして実装
アーキテクチャ
ブラウザ
│
▼
CloudFront (*.cloudfront.net)
├── /* → S3(React フロントエンド)
└── /api/* → Lambda Function URL (Hono API)
※ Lambda リソースポリシーで特定の CloudFront Distribution のみ許可
フロントエンドも API も同じ CloudFront ドメインから配信されるため、クロスドメイン問題なしに Cookie を利用できます。
処理フロー(ログイン〜ユーザ一覧表示)

実装されている画面・機能一覧
認証関連画面
Callback.tsx - 認証後遷移先画面
- SaaSus Platformからの認証情報を受け取り
- JWTトークンをローカルストレージに保存
- ユーザーのロールに応じて適切な画面に自動遷移
- ※リダイレクト処理のため、ユーザーには表示されません
SelfSignUp.tsx - セルフサインアップ画面
- 新規ユーザーが自分でテナント作成
- テナント名の入力
- ユーザー属性・テナント属性の設定
- 属性タイプ別の入力フィールド(文字列、数値、真偽値、日付)
ユーザー・テナント管理画面
TenantList.tsx - テナント一覧画面
- 複数テナントに所属するユーザー向け
- テナント属性の表示(設定済み/未設定の表示)
- 各テナントのユーザー一覧画面への遷移
UserPage.tsx - ユーザー一覧画面(メイン画面)
- ログインユーザー情報表示: テナント名、名前、メールアドレス、ロール
- ユーザー一覧テーブル: テナント内の全ユーザー表示
- ユーザー属性表示: カスタム属性の動的表示