Getting Started
Build your first Canton dApp in 5 minutes.
1. Install the SDK
npm install @partylayer/enterprise-react2. Get Your API Key
Sign up at the PartyLayer Dashboard (opens in a new tab) and create an app. Copy your App ID and API Key from the API Keys section.
3. Wrap Your App
// app/layout.tsx or App.tsx
import { PartyLayerProvider } from '@partylayer/enterprise-react';
export default function RootLayout({ children }) {
return (
<PartyLayerProvider
config={{
appId: 'app_your_app_id',
apiKey: 'pk_live_your_api_key',
auth: {
providers: ['google', 'email'],
},
wallet: {
createOnLogin: true,
},
}}
>
{children}
</PartyLayerProvider>
);
}4. Add Login
import { LoginButton } from '@partylayer/enterprise-react';
export function Header() {
return (
<nav>
<h1>My dApp</h1>
<LoginButton providers={['google', 'email']} />
</nav>
);
}5. Use the Wallet
import { useAuth, useWallet } from '@partylayer/enterprise-react';
export function Dashboard() {
const { user, isAuthenticated } = useAuth();
const { wallet, submitTransaction, isReady } = useWallet();
if (!isAuthenticated) return <p>Please log in.</p>;
if (!isReady) return <p>Setting up wallet...</p>;
return (
<div>
<p>Welcome, {user.name}</p>
<p>Canton Party: {wallet.partyId}</p>
<p>Trust Level: {wallet.trustLevel}</p>
<button
onClick={() =>
submitTransaction({
templateId: {
package_id: 'your-package-id',
module_name: 'YourModule',
entity_name: 'YourTemplate',
},
args: { field1: 'value1' },
})
}
>
Submit Transaction
</button>
</div>
);
}Full Working Example
import {
PartyLayerProvider,
LoginButton,
useAuth,
useWallet,
} from '@partylayer/enterprise-react';
function App() {
return (
<PartyLayerProvider
config={{
appId: 'app_demo',
apiKey: 'pk_test_demo',
auth: { providers: ['google'] },
wallet: { createOnLogin: true },
}}
>
<Main />
</PartyLayerProvider>
);
}
function Main() {
const { user, isAuthenticated, logout } = useAuth();
const { wallet, isReady } = useWallet();
if (!isAuthenticated) {
return (
<div style={{ textAlign: 'center', marginTop: '4rem' }}>
<h1>Welcome to My Canton dApp</h1>
<LoginButton providers={['google']} />
</div>
);
}
return (
<div style={{ padding: '2rem' }}>
<h1>Dashboard</h1>
<p>Name: {user.name}</p>
<p>Email: {user.email}</p>
{isReady && <p>Wallet: {wallet.partyId}</p>}
<button onClick={logout}>Logout</button>
</div>
);
}
export default App;Next Steps
- Authentication Guide — Configure auth providers
- Embedded Wallets — Understand trust levels
- Transactions — Submit Daml commands
- Webhooks — Listen for events