Communitygithub.com

poofdotnew/openapps-skill

웹 또는 React Native 프론트엔드를 OpenApps에 연결합니다: @bounded-sh/client SDK (읽기, 쓰기, 구독, 쿼리), 호스팅된 정적 프론트엔드, 최종 사용자 인증 UI (이메일 OTP, OAuth, 브라우저 게스트/익명 계정 및 업그레이드). OpenApps 앱의 클라이언트를 구축하거나 최종 사용자의 로그인 방식을 처리할 때 사용합니다. OpenApps 스킬군의 일부입니다. 서버 사이드 규칙, 함수, 액터 모델은 openapps-backend 스킬에, 배포/호스팅 설정은 openapps-deploy에 있습니다.

openapps-skill란 무엇인가요?

OpenApps 프론트엔드 스킬은 웹 또는 React Native 앱이 OpenApps와 통신할 수 있게 해주는 클라이언트 SDK입니다. 이 SDK는 읽기, 쓰기, 구독, 페이지네이션, 집계 쿼리와 같은 핵심 기능을 제공하며, 실시간 데이터 동기화를 지원하여 폴링 없이도 최신 상태를 유지합니다. 최종 사용자 인증을 위해 이메일 OTP, OAuth, 게스트/익명 계정, 지갑 로그인 등 다양한 방법을 지원하며, Solana Mobile 어댑터를 통한 모바일 환경도 고려하고 있습니다. 모든 클라이언트 쓰기 작업은 정책에 의해 제어되므로 안전하며, 서버 사이드 규칙은 openapps-backend 스킬과 함께 사용됩니다. 또한 호스팅된 프론트엔드 제공과 도메인 관리를 위해서는 openapps-deploy 스킬과 페어링할 수 있습니다.

지원 대상~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/poofdotnew/openapps-skill/tree/HEAD/openapps-frontend

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

OpenApps 프론트엔드

OpenApps 앱의 클라이언트 측: 웹 또는 모바일 앱이 호출하는 SDK, 최종 사용자 인증 방식, 호스팅된 프론트엔드 제공 방식입니다. 정책은 모든 클라이언트 쓰기 작업을 제어하므로, 클라이언트 작업에 규칙이나 불변 조건이 필요할 때는 openapps-backend 스킬과 함께 사용하고, 호스팅 및 도메인 관리는 openapps-deploy 스킬을 사용하세요. 전체 스킬군에 걸친 라우팅은 루트 openapps 스킬을 참조하세요.

참조 라우터

현재 작업이나 용어와 일치하는 행만 읽으세요.

작업 또는 용어읽기
SDK 읽기, 쓰기, 구독, 페이지네이션, queryAggregate, count, 필터, 정렬, 커서, setMany, set(path, null)SDK 참조
웹 프론트엔드 구축웹 앱 가이드
로컬 개발 서버 (npm run dev, Vite, localhost), 로그인 팝업 실패, redirect_uri origin is not a registered origin, 로컬 개발 중 CORSlocalhost에서 개발
새로고침 타이머, setInterval, 폴링, "상태 유지", 카운트다운, 오래된 UISDK 참조
React Native / 모바일용 구축React Native 가이드
앱 사용자 이메일 OTP, OAuth, openBoundedWidget, 통합 로그인 위젯, 기본 Turnkey 인증앱 인증
자체 지갑 로그인; walletLogin, authMethod:'phantom', supportsWalletSignIn, 지원되지 않는 지갑 / Wallet Standard지갑 로그인
새로고침 시 지갑 로그인 손실, getCurrentUser() null 반환, bounded_last_auth_method, 세션 복원 방법지갑 로그인 - "지갑 세션은 새로고침에도 유지됩니다"
게스트, 익명 사용자, 초대 링크, 계정 업그레이드익명 계정
사용자의 X 계정 연결, connect('x'), completeConnection, getConnections, 인증된 X 핸들, __connections__연결된 계정
호스팅된 프론트엔드 및 앱 URL프론트엔드 호스팅
CLI 개발자 로그인 또는 openapps login개발자 계정
임베디드 지갑, auth.wallets, @user.address (이메일/소셜 로그인 후)임베디드 지갑
onramp(), 카드로 SOL/USDC 구매, Coinbase Onramp, 지갑 충전onramp

핵심 원칙

  • 모든 클라이언트 쓰기는 정책에 의해 제어됩니다. 쓰기 시 403 응답은 클라이언트 버그가 아닌 규칙 거부입니다. 해당 규칙에 대해서는 openapps-backend 스킬을 참조하세요.
  • 거부된 읽기는 절대 403이 아닌 빈 200 응답을 반환합니다.
  • 기본적으로 실시간; 절대 폴링하지 마세요. 모든 컬렉션은 푸시 기반이므로, 경로를 다시 읽는 setInterval은 튜닝 선택이 아닌 버그입니다. useQuery (React) 또는 subscribe를 사용하세요. 카운트다운은 로컬 클록 상태에서 작동하며, 다시 읽지 않습니다. 실시간이 아닌 몇몇 표면(runQuery, functions.invoke, 서드파티)에서는 의도적으로 폴링하되, 숨겨진 탭에서는 일시 중지하고, 타이머를 필요한 상태로만 제한하며, 백오프하고, 바운드를 설정하세요. sdk-reference.md 참조.
  • 계산된 값 목록은 runQueryMany로 배치 읽기하세요. 리스트에 runQuery를 매핑하지 마세요. sdk-reference.md 참조.
  • 제공업체 API 키는 OpenApps 시크릿(백엔드)에 넣고, 프론트엔드 코드에는 절대 넣지 마세요.
  • npm audit이 @solana/web3.js -> jayson을 통한 uuid 권고 GHSA-w5hq-g745-h8pq를 보고하면, 범위가 지정된 오버라이드 레시피를 사용하세요. 해당 권고를 해결하며, 설치된 lockfile에 npm audit --omit=dev를 실행하고 나머지 발견 사항은 별도로 조사하세요.
  • 대부분의 앱에서는 인증 기본값을 유지하세요. 지갑을 "활성화"하기 위해 authMode나 auth.wallets를 추가하지 마세요. 기본 Turnkey 이메일/소셜 로그인은 이미 @user.address를 제공합니다. 외부 키페어 세션(자체 지갑 로그인, 서버 SDK 키페어 클라이언트, CLI 키페어 데이터 레인)에만 "auth": { "wallets": true }를 배포하세요. 전체 규칙 및 옵트아웃: embedded-wallets.md.
  • @user.id (계정 ID)는 식별/소유권이고, @user.address는 지갑입니다. 키 소유권, 멤버십, 인증 가드는 항상 존재하는 @user.id에 대해 설정하세요. @user.address는 지갑/온체인 의미에만 사용하고, 절대 식별 키로 사용하지 마세요.
  • 휴대폰에서의 지갑 로그인은 Solana Mobile 어댑터가 필요합니다. 휴대폰 브라우저는 지갑 앱을 주입하지 않습니다. @solana-mobile/wallet-standard-mobile을 설치하고 (.npmrc에 legacy-peer-deps=true), 위젯을 열기 전에 window.solana를 미리 확인하지 마세요. Solana Mobile 참조.

관련 스킬