As with most iOS applications, the code is split into three modules:
- DDShop - Application Code
- DDShopTests - Unit Testing
- DDShopUITests - UI Testing
I hope this is pretty self-explanatory. Within the application code, the code split into Framework and Functional. Currently Functional contains only UI code, while Framework contains the Models, State and Networking code.
Initially I was considering using (SnapKit)[http://snapkit.io] for building the UI programmatically. However, as this is a very short term (solo) project, I have elected to use storyboards to speed up development time. While storyboards can often cause horrible merge conflicts and I would not recommend using them for larger projects with multiple developers, this was unlikely to be an issue here.
- As a Customer I can view the products and their category, price and availability information.
- As a Customer I can add a product to my shopping cart.
- As a Customer I can remove a product from my shopping cart.
- As a Customer I can view the total price for the products in my shopping cart.
- As a Customer I am unable to add Out of Stock products to the shopping cart.
- As a Customer I can add a product to my wishlist.
- As a Customer I can remove a product from my wishlist.
- As a Customer I can move a product from my wishlist to the shopping cart.