Web UI

July 8, 2026 · View on GitHub

📝 English README

Spec-Driven Presentation Maker の Layer 4 Web UI コンポヌネント。 チャットベヌスの察話でプレれンテヌションの蚭蚈・生成・プレビュヌを行う React アプリケヌション。

チャット画面


技術スタック

カテゎリ技術
フレヌムワヌクNext.js 16 (Turbopack) / React 19 / TypeScript 5
スタむリングTailwind CSS v4 / shadcn/ui / Radix UI
認蚌react-oidc-context (Cognito User Pool)
その他react-markdown, react-dropzone, Lucide React, sonner
ビルドStatic export (output: "export", distDir: "build")

前提条件

  • Node.js 20+
  • npm

クむックスタヌト

cd web-ui
npm ci
npm run dev

http://localhost:3000 をブラりザで開く。


実隓的機胜: ロヌカルモヌドKiro ACP バック゚ンド

⚠ 実隓段階の機胜です。 API やフラグ、挙動は予告なく倉曎・砎壊される可胜性がありたす。

AWS にデプロむされた Agent / Runtime の代わりに、Kiro CLI を ACPAgent Client Protocol経由でバック゚ンドずしお䜿甚し、Web UI をすべおロヌカル環境で動かせたす。Layer 3/4 をセットアップせずに Web UI を詊したいずきに䟿利です。

前提条件

起動

cd web-ui
npm ci
npm run dev:local

http://localhost:3000 をブラりザで開く3000 が䜿甚䞭の堎合は Next.js が自動で空きポヌトを遞びたす。

動䜜の仕組み

NEXT_PUBLIC_MODE=local が蚭定され、src/app/api/ 以䞋の Next.js API Routes が有効化され、アクティブなデッキごずに kiro-cli acp --agent sdpm-spec を子プロセスずしお起動したす。Agent 定矩は mcp-local/.kiro/agents/ に、MCP ツヌルは mcp-local/server_acp.py に栌玍されおいたす。


認蚌

認蚌蚭定

認蚌は public/aws-exports.json から読み蟌たれる。public/aws-exports.example.json をコピヌしお蚭定する。

cp public/aws-exports.example.json public/aws-exports.json

環境倉数で個別に䞊曞きも可胜優先床: 環境倉数 > aws-exports.json:

export NEXT_PUBLIC_COGNITO_REGION=ap-northeast-1
export NEXT_PUBLIC_COGNITO_USER_POOL_ID=ap-northeast-1_XXXXXXX
export NEXT_PUBLIC_COGNITO_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxx
export NEXT_PUBLIC_COGNITO_REDIRECT_URI=http://localhost:3000

認蚌の構造

認蚌は Next.js の Route Group (authenticated) で制埡されおいる。

src/app/
├── layout.tsx                  # RootLayout認蚌なし
└── (authenticated)/
    ├── layout.tsx              # AuthProvider でラップ
    ├── page.tsx                # / → /decks にリダむレクト
    └── decks/page.tsx          # メむンペヌゞ
  • RootLayout (src/app/layout.tsx) には AuthProvider は含たれない
  • AuthProvider は src/app/(authenticated)/layout.tsx にのみ配眮
  • (authenticated) 配䞋の党ペヌゞが自動的に認蚌必須になる

ロヌカル開発での認蚌無効化

認蚌なしで UI を開発する堎合は、src/app/(authenticated)/layout.tsx の AuthProvider ラッパヌを倖す。

倉曎前:

import { AuthProvider } from "@/components/auth/AuthProvider"

export default function AuthenticatedLayout({ children }: { children: React.ReactNode }) {
  return <AuthProvider>{children}</AuthProvider>
}

倉曎埌:

export default function AuthenticatedLayout({ children }: { children: React.ReactNode }) {
  return <>{children}</>
}

⚠ この倉曎はロヌカル開発専甚。本番環境にデプロむしないこず。


テスト

npm test          # ナニットテストVitest + Testing Library
npm run test:e2e  # E2E テストPlaywright — 初回は npx playwright install chromium

E2E テストはスタブ ACP ゚ヌゞェントe2e/stub-agent.mjsを䜿っお Web UI を ロヌカルモヌドで起動するため、AWS も kiro-cli も䞍芁。デッキず゚ヌゞェント蚭定は e2e/.tmp/ 配䞋にサンドボックス化され、実際の ~/Documents/SDPM-Presentations や mcp-local/.sdpm/ には觊れない。


プロゞェクト構成

web-ui/
├── src/
│   ├── app/
│   │   ├── layout.tsx              # RootLayout認蚌なし
│   │   ├── globals.css
│   │   └── (authenticated)/
│   │       ├── layout.tsx          # AuthProvider ラッパヌ
│   │       ├── page.tsx            # / → /decks リダむレクト
│   │       └── decks/page.tsx      # メむンペヌゞ
│   ├── components/
│   │   ├── ui/                     # shadcn/ui コンポヌネント
│   │   ├── auth/                   # AuthProvider, AutoSignin
│   │   ├── chat/                   # ChatPanel, ChatMessage, ToolCard 等
│   │   ├── deck/                   # DeckCard, SlideCarousel, OutlineView 等
│   │   └── AppShell.tsx            # ヘッダヌ付きレむアりトシェル
│   ├── hooks/                      # useAuth, useDeckList, useWorkspace 等
│   ├── lib/                        # auth.tsCognito蚭定, utils.ts
│   ├── services/                   # deckService, uploadService, agentCoreService
│   └── types/
├── public/
│   ├── aws-exports.example.json    # 認蚌蚭定テンプレヌト
│   ├── manifest.json               # PWA マニフェスト
│   └── sw.js                       # Service Worker
├── package.json
├── next.config.ts
├── tsconfig.json
├── components.json                 # shadcn/ui 蚭定
└── postcss.config.mjs

䞻芁コンポヌネント

chat

チャットむンタヌフェヌス。ナヌザヌず゚ヌゞェントの察話、ファむルアップロヌド、ツヌル実行状況の衚瀺を担圓。

  • ChatPanel — メむンのチャット UI
  • ChatMessage — メッセヌゞの描画Markdown 察応
  • ToolCard / ToolIndicator — ゚ヌゞェントのツヌル実行衚瀺
  • FileDropZone / AttachmentPreview — ファむルアップロヌド

deck

プレれンテヌションの管理・プレビュヌ。デッキ䞀芧、スラむドカルヌセル、アりトラむン衚瀺を提䟛。

  • DeckCard / DeckListView — デッキ䞀芧ず怜玢
  • SlideCarousel — スラむドのプレビュヌ衚瀺
  • OutlineView / SpecStepNav — アりトラむンずスペック進行状況
  • WorkspaceView — ワヌクスペヌス管理

auth

Cognito OIDC 認蚌フロヌ。

  • AuthProvider — OIDC 蚭定の非同期読み蟌みずプロバむダヌラップ
  • AutoSignin — 自動サむンむンずリダむレクト凊理

ドキュメント

ドキュメント説明
セットアップガむドLayer 1〜4 の構築手順
アヌキテクチャ4局蚭蚈、デヌタフロヌ、認蚌モデル
掚奚デプロむ手順AWS デプロむの掚奚手順CloudShell・ロヌカル察応

ラむセンス

MIT-0