##Intermediate Bootcamp
The goal of this bootcamp is to create a simple MVC web application in Django from scratch.
The app should be built on your local machine and then pushed to a public repo when it is finished, for review.
###App: The Forum
The "Forum" is a single-page application with the following functionality:
- The app has a Welcome page with a list of Threads
- The Welcome page also has a form where visitors can anonymously create new Threads (no need for a User model or for signup / authentication / etc)
- A "Thread" consists of the following:
- A title field (simple varchar field, required)
- A username field (simple varchar field, required)
- A description field (simple varchar field, optional)
- A list of child Comments
- Clicking a Thread should bring up the "Thread Detail View"
- The Thread Detail View should show the Thread's child Comments and a form to (anonymously) submit a new Comment
- A "Comment" consists of the following:
- A text field (simple varchar field, required)
- A username field (simple varchar field, required)
- A score field (integer, this should not be included in the Comment form but users should be able to modify the score by upvoting or downvoting an existing Comment. negative scores should be supported)
###Basic Considerations
The basic app functionality requires the developer to do the following:
- Install and configure Python and Django
- Create a basic Django project
- Write a basic MVC architecture to handle the functionality: views, models, routes, etc
- Set up a local datastore and generate migrations to back up the models.
- Install and configure Django REST Framework to add a REST API on top of the models
- Build a front-end which will render templates and retrieve data from the API through AJAX calls
###Additional Considerations
- The front-end should be built using a Javascript framework
- Front-end dependencies and build tasks should be managed with npm and grunt
- Back-end models should have created_at and updated_at fields
- Threads should be sorted by most recently updated, descending
- Comments should be sorted by highest score, descending
- Routing between the "Welcome" page and the "Thread Detail View" page should not trigger a page load (i.e. handle this using the front-end routing system)
###Extra Credit
- Provide pagination for Thread lists and Comment lists
- Provide front-end Validation for Thread and Comment fields, to catch bad entries before they are submitted
- Style it nicely with Bootstrap