Project Specifications -- V1
Basic functionalities
In this project you are going to create an online store for a retail company. Your job involves
designing, implementing, testing and deploying a web application that supports Customers and
Administrators to interact with the e-store.
Customers can execute several use cases, including
- Register (sign up)
- Sign in
- Sign out
- List catalogue items
- Sort items by prices (sort items based on ascending prices or based on the descending prices)
- Sort items by names (i.e., in the alphabetical order)
- Filter catalog items by categories
- Filter catalog items by brand
- View details (description, brand, price etc) of a product
- Add items to shopping cart
- Edit or remove items from the shopping cart
- “Check out” by providing credit card information and shipping information to purchase the
items in the shopping cart
Administrators: are the owners of the store; they have access to the following use case
- Check sales history.
You are welcome to add more features, some examples are given in the Executive Summary part later in
this document.
Development and Runtime Frameworks
You will develop a multi-tier web application, with clear separation between front and back-end.
You are allowed to use any technology presented in class, and are also encouraged to go
beyond the APIs covered in lectures and Labs. For example, you can use Java Spring or
Sprint Boots for back-end content, use React or JS/Angular for front end, use Node.js
frameworks for both front and back ends. (Some tutorials on the topics will be provided).
You can also use databases other than MySQL and SQLite, e,g., PostgreSQL and even Mongodb.
Design and implementation
It is important that the architecture of your store exhibits:
• Clear separation between front and back-end
• MVC design with a clear separation of business logic and presentation. Web API that mediates
between front- and back-end,
• DAO design pattern.
• Other architecture and Design patterns when appropriate (Factory, Singleton, Observer etc.)
• Testcases (based on curl) for the back-end
• Good coding style (modularity, comments, readability, etc.) • Robustness to user inputs
Below are the SUGGESTED main components/services of your e-store. It is acceptable to
deviate from this as long as you justify it in the design document. So, your architecture may
comprise more components/services than the ones reported below.
Back-end and Model services
A. Data Access This component mediates between your application’s business logic and
the data base(s). It should be scalable and configurable.
B. Catalog Component/Service
The Catalog provides the APIs and the implementation to support use cases related to the products
sold by the estore
C. Ordering Component/Service
The Ordering provides the APIs and the implementation of use cases than manage user orders
D.Identity management component/service. Provides the interfaces and the implementation for
user registration, log in and log out.
E. Shopping cart component/service. Provides services for managing the shopping basket,
including the management of state
Web APIs (this is the set of API exposed by the back-end)
F. Controller/API Gateway
The component/service mediates between the “model” and the “views”.
Front-end components
The front end can be built as a collection of dynamic views. Below are the three main views, use
them as examples:
G. Catalog View
Displays the contents of the store organized by category and by product. The visitor must be able to
1. browse the catalog and see All, By Brand, By Categories products
2. select an item and see the detailed information for that item (description, brand, price etc.).
3. add an individual item to shopping cart.
H. Shopping Cart View
The Shopping Cart Page allows a visitor to review the order
1. view all items in the shopping cart and their information (price, etc.).
2. remove individual items from the shopping cart or increase/decrease the quantity. While
doing so, the total bill is updated.
3. Button or link that allow user to go back to continue shopping.
4. “Checkout” submit button indicating they wish to purchase the items in the shopping cart.
I. Checkout View
1. either log into their account with a password, or create a new account to check out.
2. for a new account they enter their account name, password, and default billing and
shipping information. The new account is submitted to the Order Processing service.
3. to submit their order, they verify their billing and shipping information, and enter in their
credit card number.
4. Confirm order” button
Note: You do not need to use a 3rd party payment service for this project, create a simple
payment web service that mimics a real payment. Design a simple algorithm to accept or
deny a payment request. E.g., deny every 3rd request of payment, or other dummy algorithms .
If the order is approved, you should display “Order Successfully Completed.” If it is denied,
you should display “Credit Card Authorization Failed.”, and allow user the enter again or
quit.
J. Registration View. Provides the user interface for registering/maintaining an account.
1. log in
2. log out
3. Register
K. Administrator/Analytics Page View
The Administrator should be able to
1. view the items sold
Executive summary
You can use any tools you choose. You are free to design the interface and business logic. Listed
below are required features (in red), and examples of extra features (in blue)
Here are required functionalities:
• Design and implementation:
- Use MVC design pattern with a clear separation of business logic and presentation. Web API
that mediates between front- and back-end,
- Use DAO design pattern
• Customers can execute several use cases, including
- Register (sign up)
- Sign in
- Sign out
- List catalogue items
- Sort items by prices (sort items based on ascending prices or based on the descending prices)
- Sort items by names (i.e., in the alphabetical order)
- Filter catalog items by categories
- Filter catalog items by brand
- View details of a product
- Add items to shopping cart
- Edit or remove items from the shopping cart - Go back to continue shopping.
- “Check out” by providing credit card information and shipping information to purchase the
items in the shopping cart
• Administrators: are the owners of the store; they have access to the following use case - Check
sales history.
List above are required features.
You are welcome to add more features. Extra features can get bonus marks. Listed below are some
suggested example features (you are not limited to these features. You are encouraged to be creative in
designing your project):
- Design and implementation
- Use design patterns (in addition to MVC and DAO which are required), e.g,. Singleton,
Factory, Observer, Façade etc
- Has one or more Web services that follow REST API (e.g., payment as a separate Web
Service).
Customer:
- All products have images.
- Product has inventory information (quantity remaining)
- Read and write reviews on items and rate items using five stars - Ask questions to a live
chatbot able to answer basic questions - send confirmation email to customer after checkout.
- See their account page with customer info, purchase history etc…
- …. Other creative features…
Administrator:
- Can run a Reports on sales with option to save as disk file (e.g. as PDF files).
- Maintain customer account pages with customer info, purchase history etc
- Maintain inventory, to change quantity of product (add inventory) - …. Other creative
features…