Pular para o conteúdo
Studeia Docs

Gamificacao nativa: XP, badges, leaderboards, contests, rewards

Gamificação Studeia: XP engine hierárquico, 11 critérios de badge AND/OR, OB 3.0, leaderboards Redis (curso/turma, weekly/monthly), contests 7 métricas, rewards shop com coins e agente IA

2026-06-03 7 min
Resposta curta

Studeia tem gamificacao nativa completa: XP engine com config hierarquica (tenant→curso), 11 criterios de badge com logica booleana AND/OR, badges exportaveis como JSON-LD compativel com Open Badges 3.0 (modelo W3C VC; assinatura criptografica no roadmap), leaderboards Redis ZSET (escopo curso/turma, janelas alltime/weekly/monthly), contests com 7 metricas (lifecycle draft→active→ended), rewards shop com moedas virtuais e agente IA dedicado para admin criar estrategia via chat natural.

Modelo

TenantGamificationConfig (XP rules, level thresholds, features)
  └── CourseGamificationConfig (override per-course)

UserGamificationProfile (totalXp, currentLevel, currentStreakDays, coins)
  ├── XpLog (cada XP earned com source)
  ├── UserBadge[]
  ├── ContestParticipant[]
  └── RewardRedemption[]

XP engine

XP earned por atividade. Config em xpRules JSON:

{
  "lessonComplete": 50,
  "quizPass": 30,
  "quizPassFirstTry": 50,
  "assignmentSubmit": 40,
  "forumPostCreate": 10,
  "forumReplyCreate": 5,
  "chatTutorMessage": 2,
  "liveClassJoin": 20,
  "dailyLogin": 5,
  "streakBonus": [
    { "days": 7, "bonus": 100 },
    { "days": 30, "bonus": 500 }
  ]
}

handleGamificationEvent() integrado em 7 rotas (lesson complete, quiz, chat tutor, forum post/reply, live class join, assignment submit).

Niveis

Thresholds configuraveis (default: nivel N = 100 × N²):

Nivel 1: 0 XP
Nivel 2: 100 XP
Nivel 3: 400 XP
Nivel 4: 900 XP
Nivel 5: 1600 XP
...

Level up dispara o evento level_up (automacao) + push notification (mobile). O evento badge_earned e emitido quando um badge e concedido.

Badges

11 tipos de criterio com logica booleana AND/OR:

CriterioTrigger
lesson_countN aulas completas
module_countN modulos completos
course_countN cursos completos
xp_thresholdXP >= N
streak_daysstreak de N dias
mastery_avgmedia de mastery >= X
quiz_perfect_countN quizzes com 100%
forum_post_countN posts em forum
study_minutesN minutos estudados
badge_collectionconjunto de badges conquistado
compoundregras AND/OR aninhadas

Compound criteria (AND/OR, max depth 3):

{
  "logic": "AND",
  "rules": [
    { "type": "quiz_perfect_count", "value": 3 },
    {
      "logic": "OR",
      "rules": [
        { "type": "streak_days", "value": 7 },
        { "type": "mastery_avg", "value": 0.9 }
      ]
    }
  ]
}

Badges manuais usam criteriaType=manual e podem ser concedidos por professores/admins autorizados; manual nao e um tipo automatico de criterio.

Open Badges 3.0

Badge earned cria UserBadge com pagina publica:

  • /badges/verify/[userBadgeId] (sem autenticacao)
  • /api/badges/verify/[userBadgeId] retorna JSON-LD compativel com Open Badges 3.0 (modelo de dados W3C VC)
  • Schema.org EducationalOccupationalCredential para descoberta no Google/LinkedIn
  • Autenticidade verificada pela URL/API publica + registro da plataforma. Assinatura/proof criptografico e botao nativo LinkedIn ainda nao implementados (roadmap); compartilhamento manual via URL

Leaderboards

Redis ZSET (sorted sets) para performance:

ZADD leaderboard:tenant:{tenantId}:scope:course:{courseId}:window:weekly {xp} {userId}
ZADD leaderboard:tenant:{tenantId}:scope:class:{classId}:window:alltime {xp} {userId}

Escopos: course, class_group. Janelas: alltime, weekly, monthly.

Modo anonimo: aluno aparece como "Aluno #42" (config por tenant).

Contests

Lifecycle: draft → active → ended (cron auto-start/end).

7 metricas:

  1. xp_earned (XP total no periodo)
  2. lessons_completed
  3. quizzes_passed
  4. avg_quiz_score
  5. study_minutes
  6. forum_posts
  7. badges_earned

Configurable: escopo (course/class/tenant), data inicio/fim, premios (rewards).

Rewards shop

Catalogo de recompensas virtuais. Aluno gasta coins (acumulados via XP):

  • certificate_template — diploma estilizado
  • profile_customization — avatar/borda
  • badge_special — badge unica
  • virtual_item — sticker, cor de nome, etc

Redemption atomico (anti-race condition). Refund automatico se admin nega.

Agente IA de gamificacao

Admin pode criar/gerenciar gamificacao via chat:

"Crie 5 badges para meu curso de Matematica focando em consistencia
(streaks) e mastery (>= 80% de acerto). Bonus para alunos que ajudam
no forum."

19 ferramentas (CRUD badges/contests/rewards, config XP, analytics, award manual). Loop tool_use max 15 iteracoes.

O Gamification Agent (IA) permite criar badges, contests e rewards via chat.

Parent reports

Gamificacao integrada em packages/core/src/monitoring/advanced-reports.ts:

  • StudentReport inclui XP, nivel, badges recentes, streak
  • Portal pais mostra secao "Conquistas" com badge grid + streak counter
  • Relatorio LLM cita conquistas: "Maria completou 3 cursos e ganhou 5 badges este mes"

Veja tambem

FAQ

Studeia tem gamificacao nativa?

Sim, completa. XP por atividade (config hierarquica tenant→curso), niveis configuraveis, badges com 11 criterios automaticos (compound AND/OR), leaderboards Redis ZSET com escopo curso ou turma e janelas weekly/monthly/alltime, contests com 7 metricas, rewards shop com moedas virtuais. Plus agente IA dedicado para admin criar estrategia via chat.

Badges seguem padrao Open Badges?

Sim. Badges exportam como JSON-LD compativel com Open Badges 3.0 (modelo de dados W3C Verifiable Credential). Cada UserBadge tem pagina publica em /badges/verify/[userBadgeId] e API JSON-LD em /api/badges/verify/[userBadgeId], com schema.org EducationalOccupationalCredential para descoberta no Google/LinkedIn. A autenticidade e verificada pela URL/API publica e pelo registro da plataforma. Assinatura/proof criptografico e botao nativo LinkedIn 'Add to Profile' estao no roadmap; hoje o compartilhamento no LinkedIn e manual via URL publica.

Como configuro XP por aula completa?

Tenant Settings > Gamification > XP Rules. Cada atividade tem base XP (lessonComplete: 50, quizPass: 30, etc). Curso pode override (CourseGamificationConfig). Bonus por streak diaria, primeira vez, dificuldade, etc.

Posso desativar gamificacao em um curso?

Sim. CourseGamificationConfig.enabled=false. Sidebar do aluno esconde 'Gamificacao' se aluno nao tem curso ativo com gamif habilitada. Course sub-nav esconde tab 'Gamificacao' para cursos especificos com flag off.

Veja tambem

Gamificacao nativa: XP, badges, leaderboards, contests, rewards