Skip to content

Implement Comprehensive Achievement & Badge System #2

Description

@CollinsC1O

GoodCommit Feature Request: Comprehensive Achievement & Badge System

Project Context

GoodCommit is a Web3 habit accountability platform built on the Celo blockchain.

Users:

  • Stake G$ tokens
  • Complete verified workouts
  • Complete verified academic quizzes
  • Earn points
  • Grow virtual plants
  • Harvest rewards
  • Build streaks

A streak system has already been implemented.

The next feature is a complete Achievement and Badge System.

The goal is to increase motivation, user retention, habit consistency, and long-term engagement through meaningful milestones and rewards.

This system must be designed as a core platform feature and should be expandable for future gamification systems such as XP, Levels, Leaderboards, Seasonal Challenges, and Social Competitions.


Objective

Create a production-ready badge and achievement system.

Users should automatically earn badges when predefined milestones are reached.

Badges should be permanent achievements once unlocked.

The system must be extensible and data-driven.

Avoid hardcoded badge checks scattered throughout the codebase.


High-Level Architecture

Implement:

  1. Badge Definitions
  2. Badge Evaluation Engine
  3. Badge Awarding Service
  4. Badge Storage
  5. Badge API
  6. Badge Notifications
  7. Frontend Badge Display
  8. Badge Testing Suite

The architecture should support future badge additions without major code changes.


Badge Categories

Implement support for multiple categories.

Suggested categories:

  • Streak Badges
  • Workout Badges
  • Academic Badges
  • Point Badges
  • Plant Growth Badges
  • Harvest Badges
  • Staking Badges
  • Community Badges
  • Special Event Badges

Each badge should belong to a category.


Required Initial Badge Set

Streak Badges

First Step
Requirement:
Reach a 1-day streak

Reward:
Badge only


Consistency Builder

Requirement:
Reach a 7-day streak


Habit Warrior

Requirement:
Reach a 30-day streak


Unstoppable

Requirement:
Reach a 100-day streak


Legend

Requirement:
Reach a 365-day streak


Workout Badges

First Workout

Requirement:
Complete first verified workout


Fitness Enthusiast

Requirement:
Complete 25 workouts


Fitness Champion

Requirement:
Complete 100 workouts


Fitness Legend

Requirement:
Complete 500 workouts


Academic Badges

First Quiz

Requirement:
Complete first verified quiz


Scholar

Requirement:
Complete 25 quizzes


Master Scholar

Requirement:
Complete 100 quizzes


Knowledge Legend

Requirement:
Complete 500 quizzes


Plant Growth Badges

Seed Planter

Requirement:
Plant first seed


Growing Strong

Requirement:
Reach Growing stage


Mature Gardener

Requirement:
Reach Mature stage


Master Gardener

Requirement:
Reach Fruiting stage


Staking Badges

First Commitment

Requirement:
Create first stake


Committed

Requirement:
Stake total 500 G$


Dedicated

Requirement:
Stake total 5000 G$


Whale of Commitment

Requirement:
Stake total 25000 G$


Harvest Badges

First Harvest

Requirement:
Perform first harvest


Fruit Collector

Requirement:
Harvest 10 times


Master Harvester

Requirement:
Harvest 100 times


Point Badges

100 Points Earned

Requirement:
Earn 100 total points


1000 Points Earned

Requirement:
Earn 1000 total points


10000 Points Earned

Requirement:
Earn 10000 total points


Badge Data Structure

Create a reusable badge schema.

Suggested structure:

{
id: string,
slug: string,
title: string,
description: string,
category: string,
icon: string,
rarity: string,
requirementType: string,
requirementValue: number,
rewardType: string | null,
rewardValue: number | null
}


User Badge Storage

Each user should have:

{
walletAddress: string,

badges: [
{
badgeId: string,
unlockedAt: Date
}
]
}

Badges can only be unlocked once.

Duplicate awards must be prevented.


Achievement Evaluation Engine

Create a centralized service.

Example:

AchievementService.evaluateUser(walletAddress)

This service should:

  • Load user statistics
  • Evaluate all badge requirements
  • Award newly earned badges
  • Return newly unlocked badges

The evaluation engine should be reusable and callable from any feature.


Trigger Points

Badge evaluation should run automatically after:

Workout completed

Quiz completed

Stake created

Harvest completed

Plant stage changed

Streak updated

Point rewards earned

Future activities


Badge Notification System

When a badge is earned:

Display:

🏆 Achievement Unlocked!

Badge Name

Badge Description

Notification should appear immediately.

Frontend should support toast/modal notifications.


Frontend Requirements

Create:

Achievements Page

Badge Collection Page

Profile Badge Section

Recent Achievements Widget

Locked Achievements Section


Badge Display

Each badge should show:

Icon

Name

Description

Unlock Date

Category

Rarity

Status

Locked or Unlocked


Badge Rarity System

Implement rarity levels:

Common

Rare

Epic

Legendary

Mythic

Each badge should have rarity metadata.

This will be useful for future leaderboards and profile displays.


Progress Tracking

Users should see progress toward locked badges.

Examples:

7 Day Streak Badge

Current Progress:

5 / 7 Days


Fitness Champion

Current Progress:

72 / 100 Workouts


This should be exposed through API endpoints.


API Requirements

GET /api/achievements/

Returns:

  • unlocked badges
  • locked badges
  • progress percentages
  • achievement statistics

GET /api/achievements/recent

Returns recently earned achievements.


Future XP Integration

Design the system so XP rewards can be attached later.

Example:

{
rewardType: "XP",
rewardValue: 100
}

Do not hardcode XP logic yet.

Just prepare for future compatibility.


Future Leaderboard Compatibility

Design badge metadata so future leaderboards can rank users by:

  • Total Badges
  • Rare Badges
  • Legendary Badges
  • Achievement Score

Testing Requirements

Create comprehensive tests for:

Badge unlocks

Duplicate prevention

Progress tracking

Category filtering

Notification triggering

API responses

Existing users

New users

Edge cases

Race conditions

Database persistence


Deliverables

  1. Badge schema
  2. User badge storage
  3. Achievement evaluation engine
  4. Badge awarding service
  5. API endpoints
  6. Notification system
  7. Frontend achievements page
  8. Progress tracking
  9. Unit tests
  10. Integration tests
  11. Architecture documentation
  12. Migration strategy for existing users

The implementation must be scalable, maintainable, production-ready, and capable of supporting thousands of users and future gamification systems without requiring architectural redesign.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions