Project 4 (times 4)

What is project 4 you ask?   I've been working on my Full Stack Developer Nanodegree from Udacity.  To pass the class there are a series of projects that you have to work on independently and submit for code review.  If you your application meets the specifications, is written well, etc.  You pass that project.  I'm starting Project 4, and "Item Catalog".  

The item catalog has a few reqs.  

  • Has to CRUD (Create, Read, Update, Delete).  Which means persistence must be maintained in a database.
  • Users need to be authenticated via OAuth2.
  • Authorized users should be able to create, update, or delete items.  
  • It doesn't require the ability for users to create categories, but I'm adding that (seems silly to be locked into a set of categories).
  • Must have RESTFull endpoint delivering JSON output for the items and categories.
  •  Styled with CSS/Javascript.  
  • I *may* add comments as well (not a requirement)
  • Delivered as a Flask app in Python with CSS and JavaScript

An "Item Catalog" sounds super boring.   They gave a sporting goods catalog as an example.  So, instead, I'm going to write a Pintrest type clone.   My items will be images and I'll categorize accordingly and I'm going to attempt to style similarly to Pintrest.  I figure that will add to the challenge.  I'm ahead of schedule at this point, so I have some extra time.  

To add even more of a challenge and give some good real world experience, I'm going to develop the application in four frameworks in parallel.  

  • Flask  This will satisfy the class requirement.  It's Python based and is more of a bare bones framework with very little "magic".  I will have to pretty much code everything.  
  • Django.  This is the most popular Python based web framework.  Pretty feature rich with quite a bit of automation, but not really "magic".  While flask is awesome, I'll probably encounter Django much more in the real world.  
  • Ruby on Rails.  Probably one of the most popular and successful web frameworks out there.   I've not written a stitch of Ruby (other than the DSL from Puppet).  So this should give me some exposure.  Lots of Magic.  Convention over Configuration.   Kind of opposite of the Python idiom.
  • Express or some similar NodeJS based framework. My boss is big on NodeJS.  After playing with it a little and reading the docs, I can see why.  Certainly seems like a very fast platform.  Also makes for great RESTful services.   First goal of this project is to pick a framework.   I'll post what I chose later.

So... I'll maintain the code on my github profile if you'd like to follow along.  I may spin up some AWS instances to demonstrate each later.   Wish me luck!