Here at WGBH, we recently launched a large portion of a newly redesigned and rebuilt Antiques Roadshow website. Roadshow is one of PBS’s most popular series, and the website is a treasure trove of information around the program, including an appraisal archive of everything that’s been appraised throughout Roadshow’s many seasons. The site hadn’t seen significant updates in several years, to either the design or the application behind it. It was due for some work.
For our development team, rebuilding Roadshow’s online presence was a big undertaking that involved Roadshow’s content management system, a RESTful django API and Node.js. Throughout the process we learned a lot about how to iterate quickly and work together without a heavy waterfall process. One big part of that success was our use of Node.js to act as a web server. I’d like to share a bit about how we used Node in this way.
When we began the project, we knew we would expose Roadshow’s data as a content API because Roadshow uses an internal content management system that doesn’t have an easy way to expose data to the outside world. Working within this limitation, we decided to build an API (written in python) to bring Roadshow’s program data to the web in a structured way. The API works by sucking data into a django application from Roadshow’s internal content management system, and exposing it to the web as a RESTful content API. Once we’d built the content API, we turned to the question of building a website on top of it. This is where Node.js came into the picture.
We found several other advantages to setting things up this way with Node, too. It decouples Roadshow’s data – and all the business rules around it – from the way the user experiences that data. It meant we could rapidly build, test and iterate the design and other UI pieces, such as templating and routing, without waiting for backend work to proceed or being constrained to the assumptions of back-end developers who are mostly concerned with data and rules around it. It also let the back-end developer focus more on real business logic problems, like exactly how to format an Appraiser’s name or how to calculate the median value of an appraisal object.
I’m excited by our success with this model, and I’m excited to see how this approach will pay dividends in the future. The next time we want to redesign the Roadshow site, we can work on the house without having to pull up the entire foundation. That’s all thanks to using Node as a web server and building an API to use Roadshow’s data in a simple, logical way. Moreover, now that Roadshow’s content is in a structured API, other applications besides the website can use it. In fact, we’ve already built a play-along game around the same API data that the website uses. See it in action here: http://www.pbs.org/wgbh/roadshow/games/playalong.
We hope everyone enjoys the new Roadshow website and getting a little peek under the hood!
Jesse Weisbeck – Senior Developer – WGBH Digital – @jlweisbeck