Getting StartedExample GitHub Repo

Example Github Repo

Our example repository demonstrates how to integrate Pluto Frame libraries in both vanilla JavaScript and React applications.

Quick Start

# Install dependencies
npm install
 
# Run examples
npm run javascript    # Vanilla JavaScript
npm run react        # React

Navigate to http://localhost:5173/ in your browser.

Basic Implementation

The basic examples show minimal setup required for Pluto Frame integration:

React

"use client"; // if using Next.js app router, include "use client" directive
import { Frame } from "@plutoxyz/react-frame";
 
function App() {
  const handleProof = (proof: any) => {
    console.log(proof.data);
  };
 
  const handleError = (error: any) => {
    console.log(error.code);
    console.log(error.display_message);
    console.log(error.message);
  };
 
  return (
    <Frame
      script={`myScript`}
      onProof={handleProof}
      onError={handleError}
      brand={{
        logo: "https://plutoxyz.com/logo.png",
        name: "Plutoxyz",
      }}
    />
  );
}

Vanilla JavaScript

import Pluto, {
  PageHooks,
  ProofPayload,
  ErrorPayload,
} from "@plutoxyz/frame-js";
 
// 1️⃣  Add a container to your HTML
// <div id="pluto-frame"></div>
 
// 2️⃣  Define event handlers
const hooks: PageHooks = {
  onScriptLog: (log) => console.log("Log:", log),
  onSuccess: (data: ProofPayload) => console.log("Success:", data),
  onError: (error: ErrorPayload) => console.error("Error:", error),
};
 
// 3️⃣  Initialize the SDK
await Pluto.initialize(hooks);
 
// 4️⃣  Connect and run your verification script
await Pluto.connect(`
  const accessToken = await oauth({
    title: 'Connect with OAuth Demo',
    description: 'Connect with the local OAuth Debugger',
    clientId: '123',
  });
 
  const balanceText = (await balanceLocator.textContent()) || '';
  const balance = parseFloat(balanceText.replace(/[$,]/g, ''));
 
  await prove('bank_balance', balance);
`);