Skip to content

Instantly share code, notes, and snippets.

@galarant
Created March 11, 2015 21:47
Show Gist options
  • Save galarant/62a9de1c8a2774931418 to your computer and use it in GitHub Desktop.
Save galarant/62a9de1c8a2774931418 to your computer and use it in GitHub Desktop.

##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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment