Challenge Overview

We have been very pleased with a series of challenges using Contentful.com (cms as a service) and we have gotten some nice components and some good ideas.  Now it is time to put some of the pieces together for a new “Contentful Core App”   Basically we are using contentful and building a simple CMS platform.   You may think of it as a Blog or a simple document repository it should be flexible enough to do both.  Although we have run some challenges using Salesforce Lightning we are going to focus on the MEAN framework for this app.  (We will replicate this in Salesforce later)   For this challenge you will integrate the winning solutions for Contentful Client Showcase and Contentful Showdown Integration Challenge into a single useable app.   You are welcome to use whatever MEAN framework you like but should support your choice in your documentation.  The solutions of the above mentioned challenges provide a list, detail and edit views for content hosted on Contentful.com

 

Requirements

1. Starting with your choice of a MEAN stack incorporate the features of the two provided solutions into a simple yet versatile custom CMS platform.
2. Your solution should provide local auth and OAUTH2.   You are welcome to use any OAUTH provider you like (both mean.io and mean.js come with passport OAUTH support) but github is prefered.
3. The two provided solutions use the Contentful sample schema called “Blog” which includes the following content types: Post, Author, and Category.   We would like to flatten and simplify this model with the following changes.
  3.1 Rename the Post Content Type to Article and remove the Author and Category content types.  (This space will only have one content type “Article”, which was formerly “Post”.
  3.2 Change the Article.Author  type reference to type JSON object (in the next challenge we are going to pass the MEAN user object as the Author payload )
  3.3 remove the Article.Category field and add Post.Tags’ text list (Array)
  3.4 The rest of the fields can remain.   There should be no reference field types any more.
4. Once a user is Authenticated in your app, they should be presented with a list of the titles of the articles and a meaningful way to search all fields by keyword and filter Articles by tags or authors.
5. A user should also be able to create new Articles.  User articles will start out in an “unpublished” status.
6. ($300 Bonus) pass the user object from MEAN into the Article.Author JSON object.
7. ($600 Bonus) Create an admin view that allows unpublished articles to be published by an admin.

 

Notes:  

Both mean.js and mean.io come with their version of Articles that are stored in Mongo, although our version will be a bit more advanced (editing in markdown, tags, etc), your solution should encompass all the features of the mean.[io|js] Application.

You should use mongo to store the local users and are welcome to use a standalone mongodb on your local machine or you may use mongolab.  (they have a very nice free tier)

We are considering open sourcing this project so do your best work and you will be credited as a contributor.  We would like to eventually turn this project into a ‘Deploy to Heroku Button’ but that level is not required at this time.

Long term we would break out the API (calls to Contentful) into a separate Heroku app (microservices style) However for this challenge it is fine to only create a single app that includes the calls to Contentful.

 

Good Luck

kbowerma



Final Submission Guidelines

1.  Deploy your solution to Heroku and make sure to include your working Heroku instance URL as part of your documentation
2.  Provide your code and documentation in a single zip file. Make sure you include steps to deploy to Heroku
3. The bulk of your documentation should be in the Readme.md and you should assume that this will be open source so make sure you cover all the steps to set up,  If you have specific information that should not be included in a public readme (like your heroku link or links to your video) put them in a file called submission.txt and they will be omitted from the project if it is open sourced.
4.  Provide a quick video of your solution in action (feel free to annotate your video if you are not comfortable with spoken English or don’t like the sound of your own voice)

 

ELIGIBLE EVENTS:

2016 TopCoder(R) Open

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30052335