← Projects
CTFd Plugin

WaveManager

CTFd plugin for scheduled challenge releases. Organizers define waves — the plugin reveals challenges automatically, keeping competition pace controlled.

PythonFlaskSQLAlchemyCTFdBootstrap 4

Problem

CTFd drops every challenge at competition start. Fast teams solve everything in the first hour; everyone else watches. The competition is over before it begins.

Solution

WaveManager lets organizers group challenges into named waves with scheduled release times. On each incoming request, the plugin checks for due waves and sets them visible — no cron job needed. Includes a Release Now override for live adjustments, real-time countdown timers, global participant notifications, and full timezone handling (local input → UTC storage).

Impact

Keeps competitions alive for their full duration. Used in PSUT CSC CTF events.

Outcomes

  • Scheduled auto-release triggered on incoming requests — no cron required
  • Release Now button for instant manual override during live events
  • Real-time countdown timers on all pending waves
  • Global notifications broadcast to participants on wave drop
  • Local timezone input converted to UTC on the server
  • Drop-in CTFd plugin — no core modifications, no extra dependencies