gitextract_0zyx3uia/ ├── .azurepipelines/ │ ├── aks-cost-optimization.yml │ └── contoso-traders-cloud-testing.yml ├── .devcontainer/ │ └── devcontainer.json ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── pull_request_template.md │ └── workflows/ │ ├── aks-cost-optimization.yml │ ├── codeql.yml │ └── contoso-traders-cloud-testing.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── SUPPORT.md ├── demo-scripts/ │ ├── azure-chaos-studio/ │ │ └── walkthrough.md │ ├── azure-load-testing/ │ │ ├── aks-cost-optimization.md │ │ ├── private-endpoints.md │ │ └── walkthrough.md │ ├── dev-workflow/ │ │ └── walkthrough.md │ └── testing-with-playwright/ │ └── walkthrough.md ├── docs/ │ ├── architecture/ │ │ ├── .$contoso-traders-enhancements.drawio.bkp │ │ ├── .$contoso-traders-enhancements.drawio.dtmp │ │ └── contoso-traders-enhancements.drawio │ ├── deployment-instructions-azure-pipelines.md │ ├── deployment-instructions.md │ └── running-locally.md ├── iac/ │ ├── createPrivateDnsZone.bicep │ ├── createResourceGroup.bicep │ ├── createResources.bicep │ ├── createResources.parameters.json │ ├── dashboard.json │ ├── rsa │ ├── rsa.pub │ └── scripts/ │ └── enable-static-website.ps1 ├── loadtests/ │ ├── contoso-traders-carts-internal.yaml │ ├── contoso-traders-carts.jmx │ ├── contoso-traders-carts.yaml │ ├── contoso-traders-products.jmx │ └── contoso-traders-products.yaml └── src/ ├── .dockerignore ├── ContosoTraders.Api.Carts/ │ ├── ContosoTraders.Api.Carts.csproj │ ├── Controllers/ │ │ ├── ProfilesController.cs │ │ └── ShoppingCartController.cs │ ├── Dockerfile │ ├── Program.cs │ ├── Properties/ │ │ ├── ServiceDependencies/ │ │ │ └── tailwind-traders-cart - Zip Deploy/ │ │ │ └── profile.arm.json │ │ └── launchSettings.json │ └── Usings.cs ├── ContosoTraders.Api.Core/ │ ├── Constants/ │ │ ├── AuthConstants.cs │ │ ├── CosmosConstants.cs │ │ ├── KeyVaultConstants.cs │ │ └── RequestHeaderConstants.cs │ ├── ContosoTraders.Api.Core.csproj │ ├── Controllers/ │ │ └── ContosoTradersControllerBase.cs │ ├── DependencyInjection.cs │ ├── Exceptions/ │ │ ├── CartNotFoundException.cs │ │ ├── ContosoTradersBaseException.cs │ │ ├── MatchingProductsNotFoundException.cs │ │ ├── ProductNotFoundException.cs │ │ ├── ProfileNotFoundException.cs │ │ └── StockNotFoundException.cs │ ├── Models/ │ │ ├── AutoMapperProfile.cs │ │ ├── Implementations/ │ │ │ ├── Dao/ │ │ │ │ ├── Brand.cs │ │ │ │ ├── CartDao.cs │ │ │ │ ├── Feature.cs │ │ │ │ ├── Product.cs │ │ │ │ ├── Profile.cs │ │ │ │ ├── StockDao.cs │ │ │ │ ├── Tag.cs │ │ │ │ └── Type.cs │ │ │ └── Dto/ │ │ │ ├── AccessToken.cs │ │ │ ├── CartDto.cs │ │ │ ├── ProductDto.cs │ │ │ ├── StockDto.cs │ │ │ └── TokenRequest.cs │ │ └── Interfaces/ │ │ └── ICosmosDao.cs │ ├── Repositories/ │ │ ├── Implementations/ │ │ │ ├── CartRepository.cs │ │ │ ├── CosmosGenericRepositoryBase.cs │ │ │ └── StockRepository.cs │ │ ├── Interfaces/ │ │ │ ├── ICartRepository.cs │ │ │ ├── ICosmosGenericRepository.cs │ │ │ └── IStockRepository.cs │ │ ├── ProductsDbContext.cs │ │ └── ProfilesDbContext.cs │ ├── Requests/ │ │ ├── Definitions/ │ │ │ ├── AddItemToCartRequest.cs │ │ │ ├── DecrementStockCountRequest.cs │ │ │ ├── GetCartRequest.cs │ │ │ ├── GetPopularProductsRequest.cs │ │ │ ├── GetProductRequest.cs │ │ │ ├── GetProductsRequest.cs │ │ │ ├── GetProfileRequest.cs │ │ │ ├── GetProfilesRequest.cs │ │ │ ├── GetStockRequest.cs │ │ │ ├── LoadTestRequest.cs │ │ │ ├── PostImageRequest.cs │ │ │ ├── RemoveItemFromCartRequest.cs │ │ │ ├── SearchTextRequest.cs │ │ │ └── UpdateCartItemQuantityRequest.cs │ │ ├── Handlers/ │ │ │ ├── AddItemToCartRequestHandler.cs │ │ │ ├── DecrementStockCountRequestHandler.cs │ │ │ ├── GetCartRequestHandler.cs │ │ │ ├── GetPopularProductsRequestHandler.cs │ │ │ ├── GetProductRequestHandler.cs │ │ │ ├── GetProductsRequestHandler.cs │ │ │ ├── GetProfileRequestHandler.cs │ │ │ ├── GetProfilesRequestHandler.cs │ │ │ ├── GetStockRequestHandler.cs │ │ │ ├── LoadTestRequestHandler.cs │ │ │ ├── PostImageRequestHandler.cs │ │ │ ├── RemoveItemFromCartRequestHandler.cs │ │ │ ├── SearchTextRequestHandler.cs │ │ │ └── UpdateCartItemQuantityRequestHandler.cs │ │ └── Validators/ │ │ ├── AddItemToCartRequestValidator.cs │ │ ├── DecrementStockCountRequestValidator.cs │ │ ├── GetCartRequestValidator.cs │ │ ├── GetPopularProductsRequestValidator.cs │ │ ├── GetProductRequestValidator.cs │ │ ├── GetProductsRequestValidator.cs │ │ ├── GetProfileRequestValidator.cs │ │ ├── GetProfilesRequestValidator.cs │ │ ├── GetStockRequestValidator.cs │ │ ├── PostImageRequestValidator.cs │ │ ├── RemoveItemFromCartRequestValidator.cs │ │ ├── SearchTextRequestValidator.cs │ │ └── UpdateCartItemQuantityRequestValidator.cs │ ├── Services/ │ │ ├── ContosoTradersServiceBase.cs │ │ ├── Implementations/ │ │ │ ├── CartService.cs │ │ │ ├── ImageAnalysisService.cs │ │ │ ├── ImageSearchService.cs │ │ │ ├── ProductService.cs │ │ │ ├── ProfileService.cs │ │ │ └── StockService.cs │ │ └── Interfaces/ │ │ ├── ICartService.cs │ │ ├── IImageAnalysisService.cs │ │ ├── IImageSearchService.cs │ │ ├── IProductService.cs │ │ ├── IProfileService.cs │ │ └── IStockService.cs │ └── Usings.cs ├── ContosoTraders.Api.Products/ │ ├── ContosoTraders.Api.Products.csproj │ ├── Controllers/ │ │ ├── LoginController.cs │ │ ├── ProductsController.cs │ │ ├── ProfilesController.cs │ │ └── StocksController.cs │ ├── Dockerfile │ ├── Manifests/ │ │ ├── Certificate.yaml │ │ ├── ClusterIssuer.yaml │ │ ├── ClusterRole.yaml │ │ ├── Deployment.yaml │ │ ├── Ingress.yaml │ │ ├── NamespaceCertManager.yaml │ │ ├── NamespaceChaosTesting.yaml │ │ └── Service.yaml │ ├── Migration/ │ │ └── productsdb.sql │ ├── Program.cs │ ├── Properties/ │ │ ├── ServiceDependencies/ │ │ │ ├── tailwind-traders-product - Web Deploy/ │ │ │ │ └── profile.arm.json │ │ │ └── tailwind-traders-product - Web Deploy1/ │ │ │ └── profile.arm.json │ │ └── launchSettings.json │ └── Usings.cs ├── ContosoTraders.Api.Profiles/ │ ├── .gitignore │ ├── ContosoTraders.Api.Profiles.csproj │ ├── Controllers/ │ │ └── ProfilesController.cs │ ├── Properties/ │ │ ├── serviceDependencies.json │ │ └── serviceDependencies.local.json │ ├── Usings.cs │ └── host.json ├── ContosoTraders.Ui.Website/ │ ├── .gitignore │ ├── README.md │ ├── package.json │ ├── playwright.config.ts │ ├── public/ │ │ ├── browserconfig.xml │ │ ├── index.html │ │ ├── manifest.json │ │ └── site.webmanifest │ ├── src/ │ │ ├── App.css │ │ ├── App.js │ │ ├── App.test.js │ │ ├── actions/ │ │ │ └── actions.js │ │ ├── components/ │ │ │ ├── Input/ │ │ │ │ └── checkbox.js │ │ │ ├── accordion/ │ │ │ │ ├── accordion.js │ │ │ │ ├── accordion.scss │ │ │ │ └── sidebarAccordion.js │ │ │ ├── breadcrumb/ │ │ │ │ ├── breadcrumb.js │ │ │ │ └── breadcrumb.scss │ │ │ ├── corousel/ │ │ │ │ ├── corousel.js │ │ │ │ └── corousel.scss │ │ │ ├── dropdowns/ │ │ │ │ ├── categories.js │ │ │ │ └── categories.scss │ │ │ ├── footer/ │ │ │ │ ├── footer.js │ │ │ │ └── footer.scss │ │ │ ├── header/ │ │ │ │ ├── appbar.js │ │ │ │ ├── header.js │ │ │ │ ├── header.scss │ │ │ │ └── headerMessage.js │ │ │ ├── imageSlider/ │ │ │ │ ├── imageSlider.js │ │ │ │ └── imageSlider.scss │ │ │ ├── loadingSpinner/ │ │ │ │ ├── loadingSpinner.js │ │ │ │ └── loadingSpinner.scss │ │ │ ├── minimalSelect/ │ │ │ │ ├── minimalSelect.js │ │ │ │ ├── minimalSelect.scss │ │ │ │ └── minimalSelect.styles.js │ │ │ ├── productCard/ │ │ │ │ ├── product.js │ │ │ │ └── product.scss │ │ │ ├── quantityCounter/ │ │ │ │ ├── productCounter.js │ │ │ │ └── productCounter.scss │ │ │ ├── shared/ │ │ │ │ └── index.js │ │ │ ├── slider/ │ │ │ │ ├── slider.js │ │ │ │ └── slider.scss │ │ │ └── uploadFile/ │ │ │ ├── uploadFile.js │ │ │ └── uploadFile.scss │ │ ├── helpers/ │ │ │ ├── errorsHandler.js │ │ │ ├── localStorage.js │ │ │ ├── refreshJWTHelper.js │ │ │ ├── toast.js │ │ │ └── tokensHelper.js │ │ ├── index.css │ │ ├── index.js │ │ ├── main.scss │ │ ├── pages/ │ │ │ ├── arrivals/ │ │ │ │ ├── arrivals.js │ │ │ │ └── arrivals.scss │ │ │ ├── cart/ │ │ │ │ ├── cart.js │ │ │ │ └── cart.scss │ │ │ ├── detail/ │ │ │ │ ├── detail.scss │ │ │ │ ├── detailContainer.js │ │ │ │ └── productDetails.js │ │ │ ├── error/ │ │ │ │ ├── errorPage.js │ │ │ │ └── errorPage.scss │ │ │ ├── home/ │ │ │ │ ├── home.js │ │ │ │ ├── home.scss │ │ │ │ ├── homeContainer.js │ │ │ │ └── sections/ │ │ │ │ ├── banner.js │ │ │ │ ├── finalSection.js │ │ │ │ ├── gridSection.js │ │ │ │ └── hero.js │ │ │ ├── index.js │ │ │ ├── legals/ │ │ │ │ ├── aboutUs.js │ │ │ │ ├── legals.scss │ │ │ │ ├── refundPolicy.js │ │ │ │ └── termsOfService.js │ │ │ ├── list/ │ │ │ │ ├── list.js │ │ │ │ ├── list.scss │ │ │ │ ├── listContainer.js │ │ │ │ └── sections/ │ │ │ │ ├── banner/ │ │ │ │ │ └── offerBanner.js │ │ │ │ ├── index.js │ │ │ │ ├── listAside/ │ │ │ │ │ └── listAside.js │ │ │ │ └── listGrid/ │ │ │ │ └── listGrid.js │ │ │ ├── profile/ │ │ │ │ ├── myAddressBook.js │ │ │ │ ├── myOrders.js │ │ │ │ ├── myWishlist.js │ │ │ │ ├── personalInformation.js │ │ │ │ ├── profile.scss │ │ │ │ └── profileForm.js │ │ │ └── suggestedProductsList/ │ │ │ ├── suggestedProductsList.js │ │ │ └── suggestedproductslist.scss │ │ ├── reducers/ │ │ │ ├── login.reducer.js │ │ │ └── reducers.js │ │ ├── reportWebVitals.js │ │ ├── services/ │ │ │ ├── authB2CService.js │ │ │ ├── cartService.js │ │ │ ├── configService.js │ │ │ ├── index.js │ │ │ ├── productsService.js │ │ │ ├── telemetryClient.js │ │ │ └── userService.js │ │ ├── setupTests.js │ │ ├── store.js │ │ ├── styles/ │ │ │ ├── abstracts/ │ │ │ │ ├── _variables.scss │ │ │ │ └── mixins/ │ │ │ │ ├── _ellipsis.scss │ │ │ │ ├── _font-placeholders.scss │ │ │ │ ├── _font-scale.scss │ │ │ │ ├── _fonts.scss │ │ │ │ └── _loader.scss │ │ │ ├── base/ │ │ │ │ ├── _base.scss │ │ │ │ ├── _typography.scss │ │ │ │ └── _utilities.scss │ │ │ └── vendor/ │ │ │ └── _normalize.scss │ │ └── types/ │ │ └── types.js │ ├── tests/ │ │ ├── account.ts │ │ ├── api/ │ │ │ ├── cart.spec.ts │ │ │ ├── data.spec.ts │ │ │ └── products.spec.ts │ │ ├── auth.setup.ts │ │ ├── cart.spec.ts │ │ ├── darkmode.spec.ts │ │ ├── discounts.spec.ts │ │ ├── fileupload.spec.ts │ │ ├── map.spec.ts │ │ ├── mocks.spec.ts │ │ ├── pages.spec.ts │ │ └── test-data.csv │ └── tsconfig.json ├── ContosoTraders.sln └── ContosoTraders.sln.DotSettings