Note: This feed-based calendar is experimental. It’s a giant pile of Bloomington area events. The color coding is probably not super helpful. But the filter-by-text at the top is pretty neat. Try typing in “Jacobs” or “Ostrom” and see how it winnows down the set of events into something sensible.
WordPress is a fantastic platform for running all kinds of websites—from news sites that generate lots of chronological posts, to websites that are mostly static, and serve up encyclopedic information.
For added, very specific functionality, WordPress fosters a robust ecosystem of plugins.
But there’s one kind of plug-in that is worth developing as a platform in its own right: a feed-based calendar. What if the whole point of the website is to host a feed-based community calendar? Such as this one here. We can do that with the WordPress ICS Calendar plug-in, as we do at that link. But why use a plug-in to do a platform’s job?
Let’s call this as yet undeveloped calendar platform DatePress, just as a placeholder. DatePress would be a calendar hosting web engine that is built from the ground up to host feed-based calendars. Maybe some enterprising soul develops a plug-in for DatePress that allows a user to add a blog to their calendar. But the one job for DatePress would be: Publish community calendars.
DatePress does what?
What kind of functions should DatePress have? For starters, it should have the kind of features that the WordPress ICS Calendar plug-in already includes. Specifically:
- It should be easy to add feeds to a calendar, and specify a background color and label for each feed.
- The published display should include ways for a visitor to the published calendar to filter by typing into a box.
- The published display should make it possible to add any individual feed displayed by the published calendar to their personal calendar.
But there should be so many more tools for calendar administrators..
- For any calendar feed, it should be possible to add a prefix to any event title in a specific feed, to help people who visit the published calendar understand what kind of event it is, without clicking through.
- For any calendar feed, it should be possible to assign multiple tags, and it should be possible for calendar visitors to filter by tag.
- For any view that a visitor to the published calendar generates with a filter, the parameters for that view should be passed to the URL window, so that a visitor can send someone a link to that view, or embed that specific view of the calendar in their own website. That view should also define a new feed, to which someone can subscribe.
DatePress itself should know all about the content of feeds:
- Duplicate events across feeds should be automatically identified and collapsed into a single event.
- When a feed is slightly non-compliant with the standard, behind the scenes, DatePress should be able to convert the feed into one that is 100-percent compliant.
Why does DatePress need different levels of logged-in users, which really demands that it be a platform? Here’s how that looks:
- Only some users, like the administrator, should be able to add or delete feeds from the calendar.
- A curator should be able to manually flag events across all feeds—and all the events flagged by some curator would define a new feed. Visitors to the published calendar should be able to look at events by curator, and to add the curator’s feed to their own personal calendar. A curator should be able to embed a display of their curated calendar into their own website.
- Annotators could add information to event displays, especially after an event is over. After the events are over, their status will change to “archived.” Annotations could include a simple confirmation that the event took place. Or maybe an annotation includes a caution that the event did not actually take place, because it was canceled. Annotations could include links to published news articles about the event. The calendar archive becomes a draft of a historical timeline for everything that happened in some place.
Let’s please build this thing called DatePress.