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 ã詊ããããšãã«äŸ¿å©ã§ãã
åææ¡ä»¶
kiro-cliãã€ã³ã¹ããŒã«æžã¿ã§ PATH ã«éã£ãŠããããš â Kiro CLI ã€ã³ã¹ããŒã«ã¬ã€ã
èµ·å
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â ã¡ã€ã³ã®ãã£ãã UIChatMessageâ ã¡ãã»ãŒãžã®æç»ïŒMarkdown 察å¿ïŒToolCard/ToolIndicatorâ ãšãŒãžã§ã³ãã®ããŒã«å®è¡è¡šç€ºFileDropZone/AttachmentPreviewâ ãã¡ã€ã«ã¢ããããŒã
deck
ãã¬ãŒã³ããŒã·ã§ã³ã®ç®¡çã»ãã¬ãã¥ãŒããããäžèЧãã¹ã©ã€ãã«ã«ãŒã»ã«ãã¢ãŠãã©ã€ã³è¡šç€ºãæäŸã
DeckCard/DeckListViewâ ãããäžèŠ§ãšæ€çŽ¢SlideCarouselâ ã¹ã©ã€ãã®ãã¬ãã¥ãŒè¡šç€ºOutlineView/SpecStepNavâ ã¢ãŠãã©ã€ã³ãšã¹ããã¯é²è¡ç¶æ³WorkspaceViewâ ã¯ãŒã¯ã¹ããŒã¹ç®¡ç
auth
Cognito OIDC èªèšŒãããŒã
AuthProviderâ OIDC èšå®ã®éåæèªã¿èŸŒã¿ãšãããã€ããŒã©ããAutoSigninâ èªåãµã€ã³ã€ã³ãšãªãã€ã¬ã¯ãåŠç
ããã¥ã¡ã³ã
| ããã¥ã¡ã³ã | 説æ |
|---|---|
| ã»ããã¢ããã¬ã€ã | Layer 1ã4 ã®æ§ç¯æé |
| ã¢ãŒããã¯ã㣠| 4å±€èšèšãããŒã¿ãããŒãèªèšŒã¢ãã« |
| æšå¥šãããã€æé | AWS ãããã€ã®æšå¥šæé ïŒCloudShellã»ããŒã«ã«å¯Ÿå¿ïŒ |