Skip to main content

Developer Page Specifications

Status Logic

5 computed statuses (upcoming/open/closing-soon/live/completed) + 2 manual overrides (postponed/cancelled). Timezone-aware.

Complete

Calendar event status is mostly computed at every read, with 2 manual-override states. 5 statuses derived from time (upcoming / open / closing-soon / live / completed). 2 manual overrides (postponed / cancelled). All computation uses the event’s declared Timezone for fairness across geographies.

Computed statuses

upcoming
startDate > NOW() AND no relevant deadline within 7 days. The default state for a verified future event.
open
For accelerator/incubator/pitch-competition categories: applicationDeadline > NOW() + INTERVAL '7 days'. Registration / applications live and not yet urgent.
closing-soon
applicationDeadline OR registrationDeadline within next 7 days AND still > NOW(). Drives warning tint + "Closing soon" pill + upgraded CTA label.
live
NOW() >= startDate AND (endDate IS NULL OR NOW() <= endDate). Renders accent-pulse animation on badge.
completed
endDate < NOW() (or, if no endDate, startDate + 1 day < NOW()). Card desaturates; remains discoverable for historical record.

Manual override statuses

postponed
Editor explicitly sets. Banner in hero: "This event has been postponed. We’re tracking the new date." JSON-LD eventStatus=EventPostponed.
cancelled
Editor explicitly sets. Banner + CTAs disabled. JSON-LD eventStatus=EventCancelled. Default listing queries EXCLUDE cancelled events.

Re-verification cadence

  • Verified events older than 30 days since LastVerifiedAt OR within 14 days of StartDate auto-flag for editorial re-verification. Admin re-pings sourceUrl, confirms nothing shifted, bumps LastVerifiedAt.
  • Postponements that slip through cause the worst trust damage — re-verification cadence is the defence.