Communitygithub.com

poofdotnew/openapps-skill

Conecta un frontend web o React Native a OpenApps: el SDK @bounded-sh/client (lecturas, escrituras, suscripciones, consultas), frontends estáticos alojados y la UI de autenticación de usuario final (OTP por correo, OAuth, cuentas de invitado/anónimo en el navegador y actualización). Úsalo al construir el cliente de una app OpenApps o al gestionar cómo los usuarios finales inician sesión. Forma parte de la familia de skills OpenApps; las reglas del servidor, funciones y el modelo de actores están en el skill openapps-backend, y la configuración de despliegue/alojamiento en openapps-deploy.

¿Qué es openapps-skill?

Este skill configura el lado del cliente de una aplicación OpenApps, proporcionando el SDK @bounded-sh/client para que tu frontend web o móvil (React Native) realice operaciones de lectura, escritura, suscripciones y consultas en tiempo real. Además, gestiona toda la experiencia de autenticación del usuario final, incluyendo inicio de sesión con OTP por correo electrónico, OAuth, cuentas de invitado/anónimo en el navegador y actualización a cuentas completas. Es parte de la familia de skills OpenApps: combínalo con openapps-backend para definir reglas de política en el servidor y funciones, y con openapps-deploy para el alojamiento y configuración de dominios. El skill sigue el principio de 'vivo por defecto; nunca hagas polling', ya que todas las colecciones son push-based, y proporciona guías detalladas para desarrollo local, autenticación con billeteras, cuentas conectadas y mejores prácticas como el batching de consultas y el manejo de secretos.

Compatible con~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/poofdotnew/openapps-skill/tree/HEAD/openapps-frontend

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

OpenApps frontend

El lado del cliente de una aplicación OpenApps: el SDK al que llama tu aplicación web o móvil, cómo se autentican los usuarios finales y cómo se sirve el frontend alojado. La política sigue rigiendo cada escritura desde el cliente, así que combina esto con el skill openapps-backend cuando una acción del cliente necesite una regla o invariante, y con openapps-deploy para el alojamiento y los dominios. Para enrutar entre la familia, consulta el skill raíz openapps.

Enrutador de referencia

Lee solo la fila que coincida con la tarea o término actual.

Tarea o términoLee
Lecturas, escrituras, suscripciones, paginación del SDK, queryAggregate, count, filtros, orden, cursor, setMany, set(path, null)Referencia del SDK
Construir un frontend webGuía de aplicación web
Servidor de desarrollo local (npm run dev, Vite, localhost), fallo del popup de inicio de sesión, redirect_uri origin is not a registered origin, CORS durante el desarrollo localDesarrollar en localhost
Temporizador de actualización, setInterval, polling, "mantenerlo fresco", cuenta regresiva, UI obsoletaReferencia del SDK
Construir para React Native / móvilGuía de React Native
OTP por correo del usuario de la aplicación, OAuth, openBoundedWidget, widget de inicio de sesión unificado, autenticación Turnkey por defectoAutenticación de la aplicación
Inicio de sesión con billetera propia; walletLogin, authMethod:'phantom', supportsWalletSignIn, billetera no compatible / Wallet StandardInicio de sesión con billetera
Inicio de sesión con billetera perdido al recargar, getCurrentUser() nulo después de recargar, bounded_last_auth_method, método de restauración de sesiónInicio de sesión con billetera - "Las sesiones de billetera sobreviven a las recargas"
Invitados, usuarios anónimos, enlaces de invitación, actualización de cuentaCuentas anónimas
Vincular la cuenta X de un usuario, connect('x'), completeConnection, getConnections, identificador X verificado, __connections__Cuentas conectadas
Frontend alojado y URLs de la aplicaciónAlojamiento de frontend
Inicio de sesión de desarrollador desde CLI o openapps loginCuentas de desarrollador
Billetera incrustada, auth.wallets, @user.address después del inicio de sesión por correo/socialBilleteras incrustadas
onramp(), comprar SOL/USDC con tarjeta, Coinbase Onramp, recarga de billeteraOnramp

Reglas prácticas

  • Cada escritura del cliente está gobernada por la política; un 403 en una escritura es una denegación de regla, no un error del cliente. Consulta el skill openapps-backend para la regla.
  • Las lecturas denegadas devuelven respuestas 200 vacías, nunca 403.
  • Vivo por defecto; nunca hagas polling. Cada colección es push-based, así que un setInterval que relee una ruta es un error, no una elección de ajuste: usa useQuery (React) o subscribe. Las cuentas regresivas se basan en el estado del reloj local, no en una relectura. Para las pocas superficies que no son en vivo (runQuery, functions.invoke, terceros), haz polling de forma deliberada: pausa en una pestaña oculta, limita el temporizador al estado que lo necesita, retrocede y acótalo. Consulta sdk-reference.md.
  • Agrupa lecturas para listas de valores calculados con runQueryMany; nunca uses runQuery sobre una lista. Consulta sdk-reference.md.
  • Pon las claves de API de proveedores en los secretos de OpenApps (backend), nunca en el código del frontend.
  • Si npm audit reporta el aviso uuid GHSA-w5hq-g745-h8pq a través de @solana/web3.js -> jayson, usa la receta de anulación con ámbito. Aborda ese aviso; ejecuta npm audit --omit=dev en el lockfile instalado e investiga cualquier hallazgo restante por separado.
  • Mantén los valores predeterminados de autenticación para la mayoría de las aplicaciones. No agregues authMode o auth.wallets para "habilitar billeteras": el inicio de sesión predeterminado por correo/social de Turnkey ya incluye @user.address. Despliega "auth": { "wallets": true } solo para una sesión de par de claves EXTERNA (inicio de sesión con billetera propia, un cliente SDK de par de claves del servidor, el carril de datos de par de claves de la CLI). Regla completa y las opciones de exclusión: embedded-wallets.md.
  • @user.id (el id de la cuenta) es identidad/propiedad; @user.address es la billetera. Clave de propiedad, membresía y protecciones de autenticación en @user.id (siempre presente). Recurre a @user.address solo para semántica de billetera/onchain, nunca como clave de identidad.
  • El inicio de sesión con billetera en un teléfono necesita el adaptador Solana Mobile. Un navegador de teléfono nunca inyecta aplicaciones de billetera; mantén @solana-mobile/wallet-standard-mobile instalado (legacy-peer-deps=true en .npmrc) y nunca verifiques window.solana antes de abrir el widget. Consulta Solana Mobile.

Skills relacionados