Communitygithub.com

poofdotnew/openapps-skill

Conecte um frontend web ou React Native ao OpenApps: o SDK @bounded-sh/client (leituras, escritas, assinaturas, consultas), frontends estáticos hospedados e interface de autenticação do usuário final (OTP por e-mail, OAuth, contas anônimas/convidadas no navegador e upgrade). Use ao construir o cliente de um aplicativo OpenApps ou ao lidar com como os usuários finais fazem login. Parte da família de skills OpenApps; regras do lado do servidor, funções e o modelo de ator estão na skill openapps-backend, e a configuração de deploy/hospedagem está em openapps-deploy.

O que é openapps-skill?

Esta skill fornece o lado cliente de um aplicativo OpenApps, incluindo o SDK @bounded-sh/client para ler, escrever, inscrever e consultar dados, além de lidar com a autenticação do usuário final (OTP por e-mail, OAuth, contas anônimas e upgrade). Ela suporta aplicativos web (React) e móveis (React Native), oferecendo componentes e hooks para sincronização reativa de dados em tempo real. Uma característica fundamental é que todas as escritas do cliente são governadas por políticas de segurança, e as coleções são live (push-based), eliminando a necessidade de polling manual. Para construir um aplicativo completo, esta skill deve ser combinada com openapps-backend (para regras do servidor e invariantes) e openapps-deploy (para hospedagem e domínios).

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

OpenApps frontend

O lado cliente de um aplicativo OpenApps: o SDK que seu aplicativo web ou móvel chama, como os usuários finais se autenticam e como o frontend hospedado é servido. A política ainda governa cada escrita do cliente, então combine esta com a skill openapps-backend quando uma ação do cliente precisar de uma regra ou invariante, e openapps-deploy para hospedagem e domínios. Para rotear entre a família, veja a skill raiz openapps.

Roteador de Referência

Leia apenas a linha que corresponde à tarefa ou termo atual.

Tarefa ou termoLeia
Leituras do SDK, escritas, assinaturas, paginação, queryAggregate, count, filtros, ordenação, cursor, setMany, set(path, null)Referência do SDK
Construir um frontend webGuia de aplicativo web
Servidor de desenvolvimento local (npm run dev, Vite, localhost), falha no popup de login, redirect_uri origin is not a registered origin, CORS durante desenvolvimento localDesenvolver em localhost
Timer de atualização, setInterval, polling, "manter atualizado", contagem regressiva, interface obsoletaReferência do SDK
Construir para React Native / móvelGuia React Native
OTP por e-mail do usuário do aplicativo, OAuth, openBoundedWidget, widget de login unificado, autenticação Turnkey padrãoAutenticação do aplicativo
Login com carteira própria; walletLogin, authMethod:'phantom', supportsWalletSignIn, carteira não suportada / Wallet StandardLogin com carteira
Login com carteira perdido ao recarregar, getCurrentUser() nulo após recarregar, bounded_last_auth_method, método de restauração de sessãoLogin com carteira - "Sessões de carteira sobrevivem a recarregamentos"
Convidados, usuários anônimos, links de convite, upgrade de contaContas anônimas
Vincular conta X de um usuário, connect('x'), completeConnection, getConnections, handle X verificado, __connections__Contas conectadas
Frontend hospedado e URLs de aplicativoHospedagem de frontend
Login de desenvolvedor via CLI ou openapps loginContas de desenvolvedor
Carteira incorporada, auth.wallets, @user.address após login por e-mail/socialCarteiras incorporadas
onramp(), comprar SOL/USDC com cartão, Coinbase Onramp, recarga de carteiraOnramp

Regras Práticas

  • Toda escrita do cliente é governada por política; um 403 em uma escrita é uma negação de regra, não um bug do cliente. Veja a skill openapps-backend para a regra.
  • Leituras negadas retornam respostas 200 vazias, nunca 403.
  • Ao vivo por padrão; nunca faça polling. Toda coleção é baseada em push, então um setInterval que relê um caminho é um bug, não uma escolha de ajuste - use useQuery (React) ou subscribe. Contagens regressivas marcam no estado do relógio local, não em uma releitura. Para as poucas superfícies que não são ao vivo (runQuery, functions.invoke, terceiros), faça polling deliberadamente: pause em uma aba oculta, escopo o timer para o estado que precisa dele, recue e limite. Veja sdk-reference.md.
  • Agrupe leituras para listas de valores computados com runQueryMany; nunca mapeie runQuery sobre uma lista. Veja sdk-reference.md.
  • Coloque chaves de API de provedores nos segredos do OpenApps (backend), nunca no código do frontend.
  • Se npm audit relatar o aviso uuid GHSA-w5hq-g745-h8pq através de @solana/web3.js -> jayson, use a receita de substituição com escopo. Ela aborda esse aviso; execute npm audit --omit=dev no lockfile instalado e investigue quaisquer outras descobertas separadamente.
  • Mantenha os padrões de autenticação para a maioria dos aplicativos. Não adicione authMode ou auth.wallets para "habilitar carteiras": o login padrão Turnkey por e-mail/social já carrega @user.address. Implemente "auth": { "wallets": true } apenas para uma sessão de PAR DE CHAVES EXTERNA (login com carteira própria, cliente SDK com par de chaves do servidor, via de dados do par de chaves da CLI). Regra completa e as exceções: embedded-wallets.md.
  • @user.id (o id da conta) é identidade/propriedade; @user.address é a carteira. Chave de propriedade, associação e proteções de autenticação em @user.id (sempre presente). Alcance @user.address apenas para semântica de carteira/onchain - nunca como a chave de identidade.
  • Login com carteira em um telefone precisa do adaptador Solana Mobile. Um navegador de telefone nunca injeta aplicativos de carteira; mantenha @solana-mobile/wallet-standard-mobile instalado (legacy-peer-deps=true no .npmrc) e nunca verifique window.solana antes de abrir o widget. Veja Solana Mobile.

Habilidades Relacionadas