(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.
(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]
});
(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 - page for showing all shopping lists
/list/slug - page for showing specific shopping list
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.
- as a user, I can create a new grocery list
- as a user, I can view all of the grocery lists I've created in a single list
- as a user, I can add items to an existing grocery list
- as a user, I can cross off items in an existing grocery list
- (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
- see
- (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