@engagefabricsdk/sdk
v0.1.0
Published
EngageFabric Gamification SDK for JavaScript/TypeScript - Power your app with XP, levels, quests, leaderboards, and real-time multiplayer features
Maintainers
Readme
@playpulse/sdk
Official JavaScript/TypeScript SDK for PlayPulse Gamification Framework.
Installation
npm install @playpulse/sdk
# or
pnpm add @playpulse/sdk
# or
yarn add @playpulse/sdkQuick Start
Basic Usage
import { PlayPulse } from '@playpulse/sdk'
const playpulse = new PlayPulse({
apiKey: 'pp_live_xxx',
projectId: 'your-project-id',
})
// Identify a player
const player = await playpulse.identify('user-123', {
displayName: 'John Doe',
})
// Track an event
await playpulse.trackEvent('purchase', {
productId: 'item-456',
amount: 9.99,
})
// Get player state
console.log(player.xp, player.level, player.currencies)React Integration
import { PlayPulseProvider, usePlayer, useTrackEvent } from '@playpulse/sdk/react'
function App() {
return (
<PlayPulseProvider
config={{
apiKey: 'pp_live_xxx',
projectId: 'your-project-id',
}}
>
<GameUI />
</PlayPulseProvider>
)
}
function GameUI() {
const { player, identify, isLoading } = usePlayer()
const { trackEvent } = useTrackEvent()
useEffect(() => {
identify('user-123')
}, [])
if (isLoading) return <div>Loading...</div>
if (!player) return <div>Not logged in</div>
return (
<div>
<h1>Welcome, {player.displayName}!</h1>
<p>Level: {player.level}</p>
<p>XP: {player.xp}</p>
<button onClick={() => trackEvent('button_click')}>
Click me!
</button>
</div>
)
}API Reference
PlayPulse Client
const playpulse = new PlayPulse({
apiKey: string, // Required: Your API key
projectId: string, // Required: Your project ID
baseUrl?: string, // Optional: API base URL
wsUrl?: string, // Optional: WebSocket URL
timeout?: number, // Optional: Request timeout (ms)
debug?: boolean, // Optional: Enable debug logging
})Core Methods
identify(externalUserId, options?)- Identify/create a playertrackEvent(eventName, properties?, idempotencyKey?)- Track an eventtrackEvents(events)- Track multiple eventsconnect(token)- Connect to WebSocketdisconnect()- Disconnect from WebSocketon(eventType, handler)- Listen to WebSocket eventsgetPlayer()- Get current playerreset()- Reset player state
API Modules
playpulse.players- Player managementplaypulse.events- Event trackingplaypulse.quests- Quest managementplaypulse.adventures- Adventure/season managementplaypulse.leaderboards- Leaderboard accessplaypulse.lobbies- Lobby managementplaypulse.chat- Chat functionality
React Hooks
usePlayer()- Player state and actionsuseQuests()- Quest progress and actionsuseLeaderboard(id)- Leaderboard entriesuseLobby(id?)- Lobby state and actionsuseChat(channelId)- Chat messages and sendinguseWebSocket()- WebSocket connection stateuseTrackEvent()- Event trackinguseEvent(type, handler)- Listen to specific events
WebSocket Events
Subscribe to real-time updates:
playpulse.on('xp_updated', (data) => {
console.log('New XP:', data.newXp)
})
playpulse.on('level_up', (data) => {
console.log('Leveled up to:', data.newLevel)
})
playpulse.on('quest_completed', (data) => {
console.log('Quest completed:', data.questId)
})License
MIT
