Level Up Gamification Package for Laravel

Packages

July 27th, 2023

Level Up Gamification Package for Laravel

The Level Up package is a Laravel package introducing gamification into your applications. Users can earn experience points (XP) and gain levels through your application. It also includes a dynamic leaderboard feature.

This package has three concepts that make up the gamification:

  • Experience points (XP)
  • Levels
  • Achievements

Once you import the GiveExperience trait on your user model:

use LevelUp\Experience\Concerns\GiveExperience;
 
class User extends Model
{
use GiveExperience;
 
// ...
}

This model trait unlocks various methods to work with the gamification API:

$user->addPoints(10);
$user->deductPoints(10);
$user->setPoints(10);
$user->getPoints();

You can create levels for your app with the following API:

Level::add(
['level' => 1, 'next_level_experience' => null],
['level' => 2, 'next_level_experience' => 100],
['level' => 3, 'next_level_experience' => 250],
);

And finally, here's how you create achievements

Achievement::create([
'name' => 'Hit Level 20',
'is_secret' => false,
'description' => 'When a User hits Level 20',
'image' => 'storage/app/achievements/level-20.png',
]);
 
// Unlock an achievement
$achievement = Achievement::find(1);
$user->grantAchievement($achievement);
 
// Set achievement progress
$user->grantAchievement(
achievement: $achievement,
progress: 50 // 50%
);

You can also define secret achievements hidden from the user until they are unlocked. This package also supports auditing, tracking when a user gains points, levels up, etc.

You can learn more about this package, get full installation instructions, and view the source code on GitHub.

Filed in:

Paul Redmond

Full stack web developer. Author of Lumen Programming Guide and Docker for PHP Developers.