Giter Site home page Giter Site logo

amazin-online-bookstore's Introduction

Amazin

Build Status Total alerts

Amazin is an Amazon inspired online book store written in Java, using the Spring Web MVC framework and JPA.

Features

Amazin is considered a proof-of-concept/simulation of an online book store since it simulates purchases of books and does not actually allow or attempt to complete credit card payments. Amazin is being developed as a learning process for the entire software development life cycle, working as a team, learning the Spring MVC framework, continous integration, and web application technologies.

  • book store owners can upload, edit, or remove books - book information and inventory
  • users can view/browse through the current books in the book store
  • allow searching for books based on name and other fields
  • the state of the bookstore is persisted permanently in PostgreSQL
  • users can add books to cart
  • shopping cart is saved to the users account and persists even after logging out
  • users can 'purchase' books, ensuring book purchases do not exceed inventory, where users first put the books in their shopping cart then proceed to checkout
  • shows users book recommendations based on their searches

UML Class Diagram

UML Class Diagram

Entity Relationship Diagram

Entity Relationship Diagram

License

"Amazon" is an official trademark of Amazon.com, Inc. This work is not formally related to, endorsed by, or affiliated with Amazon or Amazon.com Inc.

Amazin is available under the MIT License; see LICENSE for details.

amazin-online-bookstore's People

Contributors

abungay avatar hajar1 avatar lauramachado21 avatar mohamedzalat avatar snyk-bot avatar zaidoon1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

amazin-online-bookstore's Issues

Log In and Registration UI

Acceptance Criteria:
[ ] Create Log In Page

  • Form requesting email and password
  • Link to forgot password
  • Link to Registration

[ ] Create Registration Page

  • Form requesting name, email, and password
  • Link to Log In Page

[ ] Create Forgot Password page

  • Form requests email to reset password

Tech Spec:

  • Use template sb-admin from startbootstrap.com

Navigation Back to Homepage

The user should be able to navigate back to the home page if they are on one of the other pages e.g. /addbook and want to abort what they are doing or just return back to home. Should this be a little Amazon logo icon in the top left corner of the navbar which is clickable? Or should this be handled for now by simply having the user click the back button?

Non-production deployments for testing

It would facilitate our Pull Request process if we had deployments for branches other than master to help the reviewers test the UI changes without having to pull them locally and run it for each PR.

These deployments would go to either github deployments or heroku on a separate URL than the one we are using for our master branch on heroku.

Refactor Page Header Into Fragment

We need this as a fragment since this code is used on multiple pages e.g. main page, create book, update book, etc. This new fragment controller method should also fetch the currently logged in user and display their first and last name as well as an avatar with the first letter of their first name capitalized to replace the template user we are currently displaying in our header bar (currently showing the placeholder user name and avatar for "Valerie Luna").

Weekly scrum โ€“ [February 27 to March 6]

Please comment on this issue with answers the following questions:

  • what have I done this week?
  • what will I do next week?
  • what is holding me back? (if applicable)

Expected length: 1-2 sentences per item.

Submit book does not have error page

Assignee: @zaidoon1 @MohamedZalat

Related pull request: #3 #5

Description:

On submitting a book with string instead of an interger for ISBN attribute. The book controller is not able to do safely deny creation nor gracefully exit.

Incident:

image

Observer error:

image

Suggested solution:

Assignee: @zaidoon1
Tasks:

  • Apply front end Input validation prior to submission

  • Create an error page

  • do input validation in the book controller prior to the creation of the object --> redirect if unable to create object

Assignee: @MohamedZalat
Tasks:

  • Test book controller by doing Post request

Replace the H2 database with Postgres database

We are currently using the H2 database, however, since this is an in memory database and we are using Heroku, all the data stored in the database is deleted once the dynos of Heroku go to sleep due to inactivity (we are using the free version of Heroku). Therefore, we need to switch to a disk-optimized database (Postgres).

Add favion.ico

Should be a small square Amazin logo, e.g. the book part of the logo?

Log In and Registration Back-end

Acceptance Criteria

[ ] Create User Model (First Name, Last Name, Email and Password)
[ ] Create endpoints for login and registration
[ ] Update UI to reflect endpoints

Weekly scrum - [March 13 to March 20]

Please comment on this issue with answers the following questions:

  • what have I done this week?
  • what will I do next week?
  • what is holding me back? (if applicable)

Expected length: 1-2 sentences per item.

Error message not showing on create and update book page

When a user enters an invalid input and attempts to create/ update a book, they are redirected back to create/update book page as expected (since it shouldn't save the changes), however, the error messages don't appear next to the fields.

Refactor Create Book and Update Book Pages to Remove Duplicated Code

Might want to merge create-book.html and update-book.html into the same file and compare check a query param or something so that this fieldset code isn't duplicated in two files, seems like it could get annoying having to maintain two different files if we change a single field name or anything on here

Weekly scrum - [March 27 to April 3]

Please comment on this issue with answers the following questions:

what have I done this week?
what will I do next week?
what is holding me back? (if applicable)
Expected length: 1-2 sentences per item.

Filter Book(s)

Acceptance Criteria

[ ] Ability to filter books after search or from view all book(s) page
[ ] Side nav that lists all book criterias

Add ISSUE_TEMPLATE.md

Nice to have so we don't forget about certain common things we should report for issues.

Shopping Cart

Acceptance Criteria

[ ] Create a shopping cart table that stores each customers shopping cart
[ ] User can view shopping cart from navbar
[ ] View Shopping Cart UI
[ ] User can add item(s) to shopping cart through book details page
[ ] User can add more than 1 of an item
[ ] User can delete item from shopping cart
[ ] User can reduce the amount of an item

Clean up Add new Book/Update Book page syling

The Add new Book/Update Book page needs the following style changes:

  • make book Description label top-aligned with the description text area so the user can tell what the field is for
  • make book Description text area the same width as the other input fields of the form
  • make all input fields a bit wider so they are at least wider than the end of the "No file chosen" text
  • add a bit of vertical margin to space out the input fields of the form a bit so they won't be stuck together
  • add a bit of horizontal (and maybe vertical too) margin to the "Create Book"/"Update Book"/"Reset" buttons at the bottom of the form so they are not stuck together

Add to cart should redirect user when not logged in

Currently, when a non-logged in user tries to add a book to their cart, nothing happens and the url redirects to /# which may be confusing to the user.

Instead in this case, the user should not be redirected to /# and the user should be redirected to /login instead.

We may want to replace the href="#" with Add to cart so that the user isn't redirected to the anchor tag #.

Weekly scrum โ€“ [March 6 to March 13]

Please comment on this issue with answers the following questions:

  • what have I done this week?
  • what will I do next week?
  • what is holding me back? (if applicable)

Expected length: 1-2 sentences per item.

Search Book(s)

Acceptance Criteria

[ ] User can search for book through nav bar
[ ] Add search bar to UI
[ ] Results will list all books that have a string match with any book field

Empty objects being created

Assignee: @zaidoon1 @MohamedZalat

Related pull request: #3 #5

Description:

Users are able to create books that do not have any values

Incident:

image

Suggested Solution:

Assignee: @zaidoon1
Tasks:

  • Assure front end validation for critical information

  • Turn book Model attributes critical information to required in the book model

Assignee: @MohamedZalat
Tasks:

  • Assure books are not able to be created with empty fields

Check Out

Acceptance Criteria

[ ] User can checkout from shopping cart page
[ ] Update item(s) inventory
[ ] Store items purchased to user

Fix/shopping-cart-icon

When the user is not logged-in and they try to add an item to the cart the following shows in the cart icon:
Screen Shot 2019-04-03 at 6 38 27 AM
This button should instead redirect the user to the /login page when they try to add an item to their cart when they are not logged in.

Weekly scrum - [March 20 to March 27]

Please comment on this issue with answers the following questions:

  • what have I done this week?
  • what will I do next week?
  • what is holding me back? (if applicable)

Expected length: 1-2 sentences per item.

Implement User Types

ACCEPTANCE CRITERIA

[ ] Create a User table
[ ] Allow for 2 user types: User, BookStoreOwner
[ ] Create a login page
[ ] Create a registration page
[ ] Create a hidden admin (BookStoreOwner) registration page
[ ] Tests

TECHNICAL SPEC

[ ] User fields: name, email, password
[ ] User Table should have a boolean isBookStoreOwner (one to many relationship)
[ ] Hidden URL opens up a registration page for bookStoreOwner and asks for a specific authentication code

Move to GitHub projects from Trello

As requested in project requirements so that the grading TA can view our tasks, and to have better GitHub integration into the tasks board.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.