Modules Documentation
Status & badge logic
How statuses transition and what badges render.
Complete
Event status is mostly computed, not stored. 5 of the 7 EventStatus values are derived from time arithmetic (upcoming / open / closing-soon / live / completed). Only 2 (postponed / cancelled) are manual overrides that an editor must explicitly set. This keeps badges accurate without requiring constant manual updates.
Computed statuses
- upcoming
- startDate is in the future AND (applicationDeadline is null OR applicationDeadline > now + 7 days). The default state for a verified future event with no urgent deadline.
- open
- For accelerator/incubator/pitch-competition categories: applicationDeadline ≥ now + 7 days. Registration / applications are accepting and not yet urgent.
- closing-soon
- applicationDeadline OR registrationDeadline is within the next 7 days (and still in the future). Triggers warning tint + "Apply (closing soon)" CTA upgrade.
- live
- now ≥ startDate AND (endDate is null OR now ≤ endDate). Renders with accent pulse animation on the badge.
- completed
- endDate < now (or, if no endDate, startDate + 1 day < now). Badge desaturates; the event remains discoverable for the historical record.
Manual override statuses
- postponed
- Editor set. The event was scheduled but pushed back without a new date confirmed yet. Banner appears in the hero: "This event has been postponed. We’re tracking the new date."
- cancelled
- Editor set. The event is permanently cancelled. JSON-LD emits eventStatus=https://schema.org/EventCancelled. CTAs become disabled. Filters exclude cancelled events by default.
