Wow… This sounds like a very complicated project
I’ll give the logic a go, not sure it’d work out in practice, but here goes…
Each user should have a field “Cart”, 1:n relationship with a Cart table. The cart is basically the shopping card for each user. Also add a field “Wishlist”, exactly the same as the Cart table.
The Cart and Wishlist tables should then have a field for each product type. In your case, Catering, Photography, Wedding accessories(?).
Those fields should have a 1:n relationship with their respective tables. For eg. Catering products, Photography products, etc.
In each table, that’s where you’ll have your product items here.
So when a user adds a product to their cart, it’d create a record in the cart, with the corresponding product type and product item. Or they could add it to their wishlist.
On the Cart screen, display all the items added to the cart. Also add a button to allow users to remove any item from the cart. If you expect users to add many items, perhaps add checkboxes beside each item and allow users to remove multiple items at a go.
Then have a checkout button that pushes all the items to a checkout page, where price and VAT are calculated, before pushing to a page with a Stripe component.
For the Wishlist screen, display all the items added to the wishlist. Probably have two buttons, one for moving to cart, and the other to remove it.
I personally think you shouldn’t allow users to create multiple wishlists, because it’d complicate matters on the backend and frontend. It’d open a lot more room for errors and bugs.
Sounds like a complicated job, but it’s inspiring me to try it out too