An application that allows a current user to buy fruit from the Nozami e-commerce online store. It uses a custom Express API to create, read, update and delete user orders. This implementation supports multiple users one at a time but only the current user's orders are displayed and are able to be updated and/or deleted. This application is deployed online at the URL found below.
-
Single page application (SPA) using a custom back end API Express implementation written in JavaScript.
-
Full user sign up, sign in, change password and sign out authentication with custom back end Express server.
-
Complete user authentication error handling for user sign up, sign in, change password and sign out to promote user experience.
-
Full support of orders API AJAX events with custom back end Express server that can create, read, update and delete orders data in a SQL database using custom GET, POST, PUT/PATCH, and DELETE RESTful requests. All actions which change data are authenticated and the changed data is "owned" by the current user performing the change.
-
Use of a Express ORM to create an orders database table structure and interact with the data.
-
Use of jQuery and Handlebars templates for DOM manipulation and event handling.
-
Use of Stripe 3rd party Checkout API for payment processing.
-
Bootstrap Modals, Drop-down menus and Navbar
https://github.com/Coast-2-Coast/c2c-nozama-client
Start with grunt serve
.
- HTML, CSS, JavaScript
- jQuery, SASS
- Bootstrap modals and drop-down menus
- Handlebars templates
- Express Model/Controller
- AJAX
- Mongoose
- MongoDB
Front-end: GRUNT server (http://localhost:7165/)
Back-end EXPRESS server: [c2c-nozama-api] (http://localhost:4741/)
Install with npm install
.
The team first created a simple UI and turned our attention to the the backend to focus on building out the schema. There was a lot of back and forth on how many collections we would have and what would be contained in each. We struggled with the “flexibility” of a non-relational database and once we had one collection schema defined, we then moved to the front end to make progress on displaying our products. From there it was a parallel work track with some teammates working on the client side while another worked on the api side.
We worked in a blend of silos and pair/trio programming. For more challenging efforts the team would work as a group with one laptop projected and everyone working on the same task. This proved to be beneficial as it was a learning experience for all.
- Using Google Chrome Development Tools (Inspect).
- Add console.log messages to code.
- Add debugger and step through code examining variables and logic.
- Review WDI class notes and previous trainings, labs, and/or studies.
- Google issue (i.e. handlebars)
- Open issue in GitHub team-product repository.
- Used git source code control and GitHub repositories.
- Commented code to describe use of functions and variables as well as authorization and client/API logic.
- Used semantic naming for functions, variables and parameters.
- Used semantic naming for HTML tags, classes and IDs.
- Followed all linter suggestions including proper spacing and indentations.
- Frequent and small commits to git hub repository.
- Followed separation of concerns as often as possible.
http://i.imgur.com/ffIPYtA.jpg
http://i.imgur.com/XJEgvba.jpg http://i.imgur.com/iiV0M5H.jpg
- Original client will show all available products before signing up or signing in.
- As a user, I want to sign up and create an account.
- As a user, I want to sign in so I can make orders.
- As a user, I want to be able to change my password.
- As a user, I want to be able to sign out of the application.
- As a user, I want to create an order selecting products with quantities for each selected product.
- As a user, I want to only have one active order at a time.
- As a user, I want to view products so I can add to my order.
- As a user, I want to add additional items to a shopping cart before submitting order for payment.
- As a user, I want to be able to update the quantity for an item in my shopping cart /order.
- As a user I want to be able to cancel my order, which clears out my shopping cart.
- As a user, I want to add credit card information so I can make a purchase.
- As a user, I want to view my orders so I can see my previous purchases.
- As a user, I want to remove a product from my shopping cart.
- As a user, I want to submit my order, which clears out the shopping cart.
- As a user, I want to be able to delete all items in my shopping cart.
- All content is licensed under a CCBYNCSA 4.0 license.
- All software code is licensed under GNU GPLv3. For commercial use or alternative licensing, please contact [email protected].