Skip to main content

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 DefaultNode base 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 \n for 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

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)
  • autoNext value is multiplied by tickrate internally
  • Display shows remaining seconds (rounded up)
  • Example: autoNext: 5 creates 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:

  • autoNext functionality (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 DefaultNode base 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
}
}
]
}