Countdown
A transition timer that displays a countdown before automatically advancing to the next node. Useful for creating anticipation, giving participants time to prepare, or providing breaks between activities.
Example structures
Simple countdown
{
"type": "Countdown",
"autoNext": 5,
"data": {}
}
Countdown with message
{
"type": "Countdown",
"autoNext": 10,
"data": {
"text": "Get ready for the next question!"
}
}
Question preview countdown
{
"type": "Countdown",
"autoNext": 5,
"data": {
"text": "What best describes 'conspiracy hypothesis'?"
}
}
Break timer
{
"type": "Countdown",
"autoNext": 30,
"data": {
"text": "Take a short break!\nWe'll continue in..."
}
}
Required Properties
autoNext(number) - Seconds before automatically advancing to the next node- Must be greater than 0 for the countdown to function
- Inherited from
DefaultNodebase class - Timer is displayed in large text at the center of the screen
Optional Properties
data.text(string, optional) - Message displayed above the countdown timer- Supports multiline text (use
\nfor line breaks in JSON) - Rendered in large, centered format
- Useful for:
- Setting context ("Next up: Quiz Time!")
- Previewing upcoming content
- Giving instructions ("Prepare your answers...")
- Creating anticipation
- If omitted, only the countdown number is shown
- Supports multiline text (use
Visual Design
Layout
- Full-height, full-width centered display
- Vertically and horizontally centered content
- Large typography for maximum visibility
Text Styling
- Font: GT Flexa (custom workshop font)
- Size:
text-6xl(very large) - Alignment: Center
- Message appears above countdown with
mb-20(5rem bottom margin)
Countdown Number
- Displayed in the same large font
- Updates every second
- Positioned below optional text message
- Visible to all participants and host
Behavior
Auto-advancement
- Countdown starts automatically when node is initialized
- Timer decrements every second
- Automatically advances to the next node when reaching 0
- Cannot be paused or stopped by participants (host can manually navigate if needed)
Timing
- Uses workshop tickrate for accurate timing (typically 10 ticks per second)
autoNextvalue is multiplied by tickrate internally- Display shows remaining seconds (rounded up)
- Example:
autoNext: 5creates a 5-second countdown (5, 4, 3, 2, 1, 0 → advance)
Universal Display
- Same view for both host and participants
- No special host controls or participant interactions
- Pure informational display
Use Cases
1. Question Preview
Show the upcoming question text during countdown to build anticipation:
{
"type": "Countdown",
"autoNext": 5,
"data": {
"text": "Next Question:\nWhich element has atomic number 79?"
}
}
2. Activity Transition
Give participants time to prepare for a different activity type:
{
"type": "Countdown",
"autoNext": 10,
"data": {
"text": "Switching to group work!\nFind your team members..."
}
}
3. Break Timer
Create structured breaks in longer workshops:
{
"type": "Countdown",
"autoNext": 60,
"data": {
"text": "Short Break\nBe back in..."
}
}
4. Suspense Builder
Build anticipation without revealing content:
{
"type": "Countdown",
"autoNext": 3,
"data": {
"text": "Results loading..."
}
}
5. Silent Timer
Just show a countdown with no message:
{
"type": "Countdown",
"autoNext": 5,
"data": {}
}
Integration with Workshop Flow
Sequence Example
A typical quiz flow with countdown:
[
{
"type": "Slide",
"data": {
"headline": "Ready for Round 2?",
"text": "Let's test your knowledge!"
}
},
{
"type": "Countdown",
"autoNext": 5,
"data": {
"text": "First question coming up..."
}
},
{
"type": "Quiz",
"data": {
"text": "What is the capital of France?",
"options": ["London", "Paris", "Berlin", "Madrid"],
"answer": [2],
"answerTime": 20
}
}
]
With Question Preview
Use countdown to preview the question before starting the timer:
[
{
"type": "Countdown",
"autoNext": 5,
"data": {
"text": "What is 2+2?"
}
},
{
"type": "Quiz",
"data": {
"text": "What is 2+2?",
"options": ["3", "4", "5", "6"],
"answer": [2],
"answerTime": 15
}
}
]
Node Inheritance
Countdown inherits from DefaultNode, which provides:
autoNextfunctionality (required for Countdown to work)autoNextTimeLeft- Current seconds remaining (displayed on screen)autoNextActive- Whether auto-advance is enabled- Standard node lifecycle methods (
init,loop,sendData)
The Countdown node has no custom logic beyond displaying the inherited autoNextTimeLeft value.
Host View
Host sees identical view to participants with one addition:
- Navigation UI may show "Next node in X seconds" (standard for all auto-advancing nodes)
- Host can manually navigate forward/backward if needed, overriding the countdown
Technical Notes
- No custom server-side logic: Countdown uses only
DefaultNodebase implementation - Purely visual: No participant interaction or data collection
- No state persistence: Countdown resets if node is re-entered
- Responsive: Text automatically wraps on smaller screens
Example: Complete Workshop Section
{
"nodes": [
{
"type": "Slide",
"data": {
"headline": "Round 3: Speed Round!",
"subheading": "Answer as fast as you can"
}
},
{
"type": "Countdown",
"autoNext": 5,
"data": {
"text": "Get ready...\nFirst question in..."
}
},
{
"type": "Quiz",
"data": {
"text": "Question 1: What is H2O?",
"options": ["Water", "Hydrogen", "Oxygen", "Carbon"],
"answer": [1],
"answerTime": 10
}
},
{
"type": "Countdown",
"autoNext": 3,
"data": {
"text": "Next question..."
}
},
{
"type": "Quiz",
"data": {
"text": "Question 2: What is CO2?",
"options": ["Water", "Carbon Dioxide", "Oxygen", "Nitrogen"],
"answer": [2],
"answerTime": 10
}
}
]
}