reopt designreopt design
DocsExploreToolsPricingBuilder
Start
Overview
Start
Core Concepts
Core Concepts
Surface
Surface 카탈로그
Build & Operate
서버 계약
Production readiness
Obrandapp-ui
reopt designreopt design

A design system for the AI era

  • Docs
  • Pricing
  • Releases
  • GitHub
  • Terms of Service
  • Privacy Policy

© 2026 reopt-ai. All rights reserved.

Core Concepts
  1. Docs
  2. /
  3. Core Concepts
  4. /
  5. Core Concepts

핵심 개념

brandapp-ui는 런타임 UI 라이브러리가 아니라 BrandApp 기능을 제품에 빠르게 붙이는 copy-paste source package입니다.

reopt design · Updated Jun 26, 2026

개요시작하기핵심 개념Surface 카탈로그서버 계약Production readiness

1. Copy-paste package

package.json의 공개 export는 metadata뿐입니다. 실제 Surface는 opt-cli registry에 들어가고, 소비자는 opt surface add로 파일을 복사합니다. 복사된 뒤에는 SemVer upgrade 대상이 아니라 consumer app 코드입니다.

text
@reopt-ai/brandapp-ui
├─ src/surfaces
│  ├─ sign-in-with-reopt-button.tsx
│  ├─ reopt-user-menu.tsx
│  ├─ sign-in-gate.tsx
│  ├─ session-expired-dialog.tsx
│  ├─ reopt-ai-chat.tsx
│  ├─ reopt-ai-image-studio.tsx
│  └─ reopt-record-table.tsx
├─ src/surfaces/_meta.ts
└─ src/meta.ts

2. 책임 경계

brandapp-ui가 SDK와 UI를 모두 대신 소유하지 않습니다. secret, API route, 제품 정책은 consumer app에 남기고, Surface는 검증된 출발점을 제공합니다.

text
Consumer app
  owns env, server routes, auth route, product copy, final UX policy

@reopt-ai/brandapp-sdk
  owns OAuth, sessions, EAV, AI provider, typed SDK errors

@reopt-ai/brandapp-ui
  owns copy-paste source templates and registry metadata

@reopt-ai/opt-ui / opt-chat
  owns primitives, DataTable, Conversation, PromptInput

3. Import boundary

Surface source는 소비자 프로젝트로 복사되므로 내부 monorepo 경로나 app-specific API에 의존하면 안 됩니다. 인증 Surface는 반드시 consumer app의 @/lib/auth-client를 사용합니다.

tsx
// Surface source 안에서는 consumer project 경로를 사용합니다.
import { authClient } from "@/lib/auth-client";
import { SignInWithReoptButton } from "./sign-in-with-reopt-button";

// OK: public package API
import { Button, Avatar, DataTable } from "@reopt-ai/opt-ui";
import { Conversation, useChatSession } from "@reopt-ai/opt-chat";

// 금지: opt-ui 내부 파일 경로, app-specific router, secret SDK client
// import { Button } from "@reopt-ai/opt-ui/src/core/button";
// import { useRouter } from "next/navigation";
// import { createReoptSDK } from "@reopt-ai/brandapp-sdk";

4. Client/server split

SurfaceClient sideServer side
Auth surfaces@/lib/auth-client, authClient.useSession(), signInWithReoptBetter Auth route and createReoptBetterAuth live in consumer app
AI surfacesReoptAiChat, ReoptAiImageStudio receive endpoint propscreateBrandappProvider/createReoptSDK and typed error mapping live in route handlers
EAV surfacesReoptRecordTable fetches recordsEndpoint and renders DataTablesdk.eav.records(entityId).list() proxy keeps clientSecret off the browser

5. Surface authoring rules

  • 모든 auth/session Surface는 "use client"로 시작합니다.
  • opt-ui는 public export만 사용합니다. 내부 파일 경로 import는 consumer project에서 깨집니다.
  • prop을 과하게 늘리지 않습니다. copy-paste 모델에서는 소비자가 파일을 직접 수정합니다.
  • secret SDK client는 Surface에 넣지 않습니다. AI/EAV 기능은 server route contract로 연결합니다.
PreviousStartbrandapp-sdk × opt-ui copy-paste Surface 블록. env, Better Auth, auth-client, opt surface add까지의 빠른 시작 가이드Start
Go to Start
NextSurface 카탈로그brandapp-ui 인증, AI, EAV, 운영 콘솔 Surface 선택 기준과 설치 명령Surface