Normal Events: Standard quest-based events focusing on task completion
Score-Based Events: Competitive events with point-based leaderboards
Normal Events
Normal Events are standard events where users can complete one or more quests to earn rewards. These events do not track a cumulative score for participants but focus on task completion.
Score-Based Events involve quests where participants earn points to compete on a leaderboard. These events are commonly used for competitive scenarios where scoring determines ranking or rewards.
The type field identifies the event as a SCORE quest event, while the quests array contains ScoreQuest objects that define tasks contributing to the participant's total score.
Event Data Structure
All event types inherit from the BasicEventType, which provides the foundation for handling event data in the UI. This includes essential information like dates, participation status, requirements, and rewards.
Type Definition
Key Fields Explained
General Information
containerId: Identifies the hosting community or group
title: The name of the event
description: Detailed information about the event, either as plain text or parsed content
Timelines
startDate and endDate: Define the active period of the event
registrationStartDate and registrationEndDate: Define when users can register for the event
Participants and Capacity
maxParticipants: Maximum number of users allowed to join
totalParticipants: Current number of registered users
Rewards
rewards: Defines the rewards available for participating or completing quests in the event
Participation Details
participation: Includes fields to track whether the current user is participating, their status, and the synchronization status with the backend
Requirements
requirements: Specifies any conditions that users must meet to join the event (e.g., completed quests or prior achievements)
Visuals
images: Contains optional media assets such as a cover image for the event
Metadata
createdAt, createdBy, updatedAt, updatedBy: Provide audit information about the event's creation and last modification
Deep Dive: BasicEventType Options
Status
The status field of BasicEventType reflects the current state of the event. Common statuses include:
DRAFT: The event has been created but isn't published yet (not visible in community UI)
PUBLISHED: The event has been created and is visible in the UI
RESOLVING: The event is currently active
COMPLETED: The event has concluded
CANCELLED: The event has been canceled
Rewards
The rewards field is an optional array of rewards associated with the event:
Participation
The participation object tracks the user's involvement in the event. Example usage:
Requirements
The requirements field defines prerequisites for event participation. Example:
type BasicEventType = {
containerId: string; // ID of the container or community hosting the event
createdAt: FlexDate; // Timestamp for when the event was created
createdBy: string; // Creator of the event
description: string | ParsableContent[]; // Description of the event
summary?: string | ParsableContent[]; // Shorter description for main event view
endDate: FlexDate; // Date when the event ends
eventId: string; // Unique identifier for the event
maxParticipants: number; // Maximum number of participants allowed
registrationEndDate: FlexDate; // End date for registrations
registrationStartDate: FlexDate; // Start date for registrations
startDate: FlexDate; // Date when the event begins
title: string; // Event title
totalParticipants: number; // Total number of current participants
updatedAt: FlexDate; // Timestamp for the last update to the event
updatedBy: string; // User who last updated the event
rewards?: EventRewardType[]; // Optional array of rewards for the event
status: QUEST_EVENT_STATUS; // Current status of the event
slug: string; // Slug for URL or identification
participation?: { // Participant-specific details
isParticipating: boolean; // Whether the current user is participating
status: string; // Participant's current status in the event
syncStatus: ParticipantSyncStatusType; // Backend sync status for the participant
};
requirements?: Array<EventRequirementType>; // Optional array of requirements for joining the event
images?: { // Optional image assets
coverImageUrl: string; // URL for the event's cover image
displayImageUrl?: string; // A secondary image
iconImageUrl?: string; // Icon for event
};
};
{
isParticipating: true, // User has joined the event
status: "COMPLETED", // User's progress (e.g., "IN_PROGRESS", "COMPLETED")
syncStatus: "SYNCED", // Sync status of participation
}