First, let's think about the overall app and the user flow.
We are going to be creating a shop without a payment processing gateway. The shop homepage will display a hand-picked list of products. The user will be able to browse the products using categories and narrow down the selection using filters we've made. They will be able to select a product and view more details about it. The product will have variations (size, color, and such) and may have several product images. The user will be able to add a variation to their basket. From there, they can either continue browsing the products and add more to their basket, or proceed to checkout, where they will be asked for their name and address, and to pay. An order confirmation screen will be shown.
The whole shop app will be created in Vue and will run client-side. This will not cover any server...