I'm designing a 'custom portal' and i'm stuck on how to design our application in the right way. The portal has a view as on picture below where:
- Shopping carts dropdown where user can select 'current' shopping cart(can be empty)
- a. Button that redirect to 'current' shopping cart details page.
- Application menu. Where we can navigate f.e to Catalogs
- The main application area.

I have the following workflow:
- User goes to catalogs menu.
url: domain/catalogs; state: catalogs
User select a catalog and see products in the catalog
url: domain/catalogs/catalog1ID; state:catalogs.detail.
User can click on product tile and go to product detail view
url: domain/catalogs/catalog1ID/product1ID;state:catalogs.detail.product
Looks natural and nothing special for now. Now the main problem how to integrate to this workflow a 'shopping cart' functionality. I mean that if user select a shopping cart the data on views might be different(Because shopping cart related to different customers and we can show different catalogs/price/products for different customers). F.e The price for Product1 from Catalog1 might be different for shopping cart 1 and shopping cart 2 and shopping cart not selected. I'm trying to find answers for next questions:
- Where to keep selected shopping cart(state/url)?
- How to inform current state that shopping cart changed?
- How to make F5/refresh works correctly(f.e if my current state is catalogs.detail.product and i have a shopping cart selected)?