dawoodkhan82 / final-project-example

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

(Name of your project) Shoppy Shoperson

Overview

(Write a brief one or two paragraph, high-level description of your project here) Remembering what to buy at the grocery store is waaaaay too difficult. Also, shopping for groceries when you're hungry leads to regrettable purchases. Sooo... that's where Shoppy Shoperson comes in!

Shoppy Shoperson is a web app that will allow users to keep track of multiple grocery lists. Users can register and login. Once they're logged in, they can create or view their grocery list. For every list that they have, they can add items to the list or cross off items.

Data Model

(Describe the documents that you'll be storing - assuming that you're using a document based NoSQL database, like mongoose ... this can be in the form of commented plain JavaScript objects or an actual Mongoose schema)

Minimally, we'll have to store Users, Lists and Items

  • users can have multiple lists
  • each list can have multiple items

First draft schema:

// users
// * our site requires authentication...
// * so users have a username and password
// * they also can have 0 or more lists
var User = new mongoose.Schema({
  // username, password provided by plugin
  lists:  [{ type: mongoose.Schema.Types.ObjectId, ref: 'List' }]
});

// an item (or group of the same items) in a grocery list
// * includes the quantity of this item (multiple of the same item does not 
//   require additional Item documents; just increase the quantity!)
// * items in a list can be crossed off
var Item = new mongoose.Schema({
  name: {type: String, required: true},
  quantity: {type: Number, min: 1, required: true},
  checked: {type: Boolean, default: false, required: true}
}, {
  _id: true
});

// a grocery list
// * each list must have a related user
// * a list can have 0 or more items
var List = new mongoose.Schema({
  user: {type: mongoose.Schema.Types.ObjectId, ref:'User'},
  name: {type: String, required: true},
  createdAt: {type: Date, required: true},
  items: [Item]
});

Wireframes

(these are html mockups for wireframes, though they can be created using wireframing tools or even hand-drawn)

/list/create - page for creating a new shopping list

list create

/list - page for showing all shopping lists

list

/list/slug - page for showing specific shopping list

list

Site map

Add site map here

Here's a complex example from wikipedia, but you can create one without the screenshots, drop shadows, etc. ... just names of pages and where they flow to.

User stories

  1. as a user, I can create a new grocery list
  2. as a user, I can view all of the grocery lists I've created in a single list
  3. as a user, I can add items to an existing grocery list
  4. as a user, I can cross off items in an existing grocery list

Research Topics

  • (6 points) Integrate user authentication
    • I'm going to be using passport for user authentication
    • And account has been made for testing; I'll email you the password
    • see cs.nyu.edu/~jversoza/ait-final/register for register page
    • see cs.nyu.edu/~jversoza/ait-final/login for login page
  • (4 points) Perform client side form validation using a JavaScript library
    • see cs.nyu.edu/~jversoza/ait-final/my-form
    • if you put in a number that's greater than 5, an error message will appear in the dom
  • (2 points) Some amazing new JavaScript library
    • the library does...
    • you can see it working in these pages:
      • link 1
      • link 2
    • I set it as 2 points because integration will be easy
  • ... for total of 12 points (more than required)
    • addtional points will not count for extra credit

About