Building a content management system from scratch