Skip to main content

Engagement

Code First

Gamification made simple

Complete gamification infrastructure for user engagement. Define streaks (daily login, weekly activity), leaderboards (global, weekly, segmented), and achievements (standard, hidden, incremental) in your code. The SDK syncs your configuration automatically—Console is read-only for observability. Track progress, award points, and keep users coming back.

Overview
Pricing
Usage
Docs
Examples
Define Config (Code First)config.ts
typescript
import { createEngagementConfig, defineStreak, defineLeaderboard, defineAchievement } from '@sylphx/sdk'

export const engagementConfig = createEngagementConfig({
  streaks: [
    defineStreak({
      id: 'daily-login',
      name: 'Daily Login Streak',
      frequency: 'daily',
      gracePeriodHours: 12,
    }),
  ],
  leaderboards: [
    defineLeaderboard({
      id: 'weekly-points',
      name: 'Weekly Points',
      sortDirection: 'desc',
      resetPeriod: 'weekly',
      aggregation: 'sum',
    }),
  ],
  achievements: [
    defineAchievement({
      id: 'first-steps',
      name: 'First Steps',
      description: 'Complete your profile',
      type: 'standard',
      tier: 'bronze',
      points: 10,
    }),
  ],
})
Record Streak Activitystreak.ts
typescript
import { sylphx } from '@sylphx/sdk'

// Record user activity to maintain streak
const result = await sylphx.engagement.recordStreakActivity({
  userId: 'user_123',
  streakId: 'daily-login',
})

console.log('Current streak:', result.current)
console.log('Longest streak:', result.longest)
Submit Leaderboard Scoreleaderboard.ts
typescript
// Submit score to leaderboard
await sylphx.engagement.submitScore({
  userId: 'user_123',
  leaderboardId: 'weekly-points',
  value: 100,
})

// Get leaderboard rankings
const rankings = await sylphx.engagement.getLeaderboard({
  leaderboardId: 'weekly-points',
  period: 'current',
  limit: 10,
})
Unlock Achievementachievement.ts
typescript
// Unlock achievement for user
const unlock = await sylphx.engagement.unlockAchievement({
  userId: 'user_123',
  achievementId: 'first-steps',
})

console.log('Points awarded:', unlock.achievement.points)
console.log('Total points:', unlock.totalPoints)

Looking for more examples?

View on GitHub