Project 0 Requirements - 12062021-dynamics365-uta/12062021-batch-repo GitHub Wiki

P0 - Store Application

You are in charge of building a console-based Store Application.

Presentation

  • you will be presenting on December 27, 2021
  • you are expected to present at least the MVP requirements

Technology Stack

  • C# (console app)
  • Coverlet
  • xUnit
  • ADO.NET

Minimum Viable Product (MVP)

  • a customer should be able to view a list of store locations and select one (2pts)
  • a customer should be able to view available products to purchase at that store (2pts)
  • a customer should be able to purchase at least 1 product (2pts)
  • a customer should be able to view their past purchases (2pts)
  • a customer should be able to view past purchases of a store (2pts)
  • a solution containing 4 projects (Client(FE), Domain(Business Layer), Storage(Repository Layer), Testing) should be implemented (10pts)
  • test coverage of at least 30% should be implemented (10pts)
  • data storage using a DB with ADO.NET should be implemented (10pts)
  • runtime monitoring with logging should be implemented (10pts)

Requirements

The application is anchored around the objects: Customer, Product, Order, Store.

customer

  • must be able to view past purchases
  • must be able to view available store locations
  • must be able to purchase 1 or more products
  • must be able to view current cart
  • must be able to checkout
  • must be able to cancel a purchase

product

  • must have a name, price, and description

order

  • must be able to compute its total cost
  • must be able to contain at least 1 product
  • must be able to limit its content to no more than 50 items
  • must be able to limit its total cost to no more than $500

store

  • must be able to view past sales
  • must be able to view sales by store location
  • [stretch goal] must be able to manage product inventory (add, edit, delete any product)

Architecture

  • StoreApplication (solution - sln template)
    • Client (executable - console template)
    • Domain (library - classlib template)
    • Storage (library - classlib template)
    • Testing (unit testing - xunit template)