Skip to content

Components

Mike Nichols edited this page Jun 1, 2019 · 3 revisions

Event Indexers

Services that index event information from disparate sties to compile into a single database. These services are scheduled to run a regular interval and push structured results into a staging database with some additional metadata such as the date the information was indexed and the source site.

Event Loaders

Services that take events from the staging database and move them into the live database. As events are moved into the live database, metadata is added that indicates the events are new. Once all events have been moved from staging to live, an atomic transaction should be completed to update the status of currently live/active events to "inactive" and all the "new" events to "active." This logic can be accomplished in other ways, and any simpler implementation is welcomed. The problem we're trying to avoid is determining when an event may have been removed from the source site i.e. if we index a site on day 1 and find events A, B, and C, and then later index that site on day two, but only pull events A and C, we would need some way of knowing that we should remove event B from the live database, I believe the easiest solution to this problem is just to replace all events in the live database once each iteration of scraping and transforming event data is complete.

Events API

This service feeds the UI with live event information. Ideally the API will provide sorting and filtering functionality, but initially may simply provide paginated events in chronological order starting from the current date. In future iterations, the user would ideally be able to:

  1. Perform a keyword search
  2. Filter by date (and perhaps time of day)
  3. Filter by event type
  4. Filter by distance from a given location
  5. Filter by free/paid events

Events UI

The user interface that allows users to find events. The UI should focus on being simple and unobstructed. Each event displayed should have enough information to convey its title, type, price, time, and location. UI

Clone this wiki locally