CodeSouth Schedule Manager

A WordPress plugin, live at CodeSouth radio, for managing DJ show slots with drag-and-drop scheduling, recurring shows and Google Calendar sync.

Context
Volunteer, CodeSouth
Year
2026
Stack
  • WordPress
  • PHP
  • JavaScript
  • MySQL
  • Python
  • iCalendar
Roles

The problem

CodeSouth’s show schedule was spread across the station’s WordPress theme, a Google Calendar and the DJ onboarding process, with nothing treating any one of them as the source of truth.

What I built

A WordPress plugin, now live and in use at the station, that becomes the single source of the schedule:

  • Drag-and-drop schedule editor for assigning DJs and shows to slots.
  • Recurrence rules for weekly, fortnightly and monthly shows.
  • Plugin as master: the plugin owns schedule data and writes changes back to the station theme’s show data, so the public site stays in step.
  • Google Calendar sync via ICS, with a Python script to parse the existing calendar and match it against live shows.
  • Onboarding integration: builds on an earlier token-gated DJ onboarding form that creates draft show posts for admin review.

How I worked

The work had grown across several separate threads that made conflicting decisions. I consolidated it into one project with architecture decision records and shared standards for security and accessibility, so every later decision had a single place to live.

What I learned

  • Reverse-engineering an undocumented theme data model, including serialised PHP relationships between DJs and shows.
  • Treating calendar data reconciliation as its own problem: matching live shows to calendar entries is messier than generating the schedule itself.