A custom Wordpress theme. I always prototype a static HTML version of a designer's mock-up to begin a project, making sure the designer and the client signed off on it before working on any back-end code. For a project like this, I'd then take a barebones Wordpress template and convert my prototype into Wordpress templates, adding in custom post types with custom fields as needed.