From 520454481b466e5dd23b2dda20336fcc380d2eb1 Mon Sep 17 00:00:00 2001 From: mahmood Date: Wed, 28 Oct 2026 16:22:32 +0330 Subject: [PATCH] Remove user-app v1 and ship pending order, auth, and app fixes. Drop the duplicate customer app from the monorepo and keep user-app-v2 as the only app; include order pricing, admin cart, OTP/SMS, and dashboard cache updates. Co-authored-by: Cursor --- .env.example | 1 - DELIVERY.md | 6 +- DOCKER.md | 8 +- .../src/layouts/components/TheNavbar.vue | 24 + apps/admin-panel/src/stores/cart.ts | 18 + .../src/views/branch/order/create.vue | 32 +- apps/admin-panel/src/views/manage/Const.vue | 69 +- apps/admin-panel/src/views/order/List.vue | 3 + apps/admin-panel/src/views/order/OmdeList.vue | 3 + .../admin-panel/src/views/order/TaminList.vue | 3 + apps/admin-panel/src/views/order/create.vue | 37 +- apps/api/prisma/gen-product-images.js | 2 +- apps/api/prisma/insert-mock-products.js | 2 +- .../scripts/legacy-import/steps/catalog.ts | 5 +- .../admin-misc/public-slider.controller.ts | 15 + .../admin-orders/admin-orders.service.ts | 5 +- .../customer-auth/customer-auth.service.ts | 25 +- .../modules/customer-auth/request-otp.spec.ts | 3 + .../src/modules/orders/orders.service.spec.ts | 39 +- apps/api/src/modules/orders/orders.service.ts | 30 +- apps/api/src/modules/pricing/wage-formula.ts | 3 +- apps/api/src/modules/sms/sms.service.ts | 5 +- apps/user-app-v2/src/api/cachedReads.ts | 1 + apps/user-app-v2/src/api/client.ts | 9 + apps/user-app-v2/src/stores/queryCache.ts | 1 + .../src/views/user/DashboardView.vue | 34 +- apps/user-app/.dockerignore | 5 - apps/user-app/Dockerfile | 8 - .../dist/assets/AppPullRefresh-BjycWfIE.js | 1 - .../dist/assets/AppPullRefresh-DFLVD8uo.css | 1 - .../dist/assets/AppearanceView-Bpmd9TYW.js | 1 - .../dist/assets/AppearanceView-COyZOyul.css | 1 - .../dist/assets/CartView-CgiOyb97.css | 1 - .../user-app/dist/assets/CartView-CygA4nbh.js | 1 - .../dist/assets/ChildOrdersView-CICtJkRk.js | 1 - .../dist/assets/ChildOrdersView-RgAfoOoK.css | 1 - .../dist/assets/CollectionView-BDtqEROz.js | 1 - .../dist/assets/CollectionView-DvJKjneK.css | 1 - .../assets/CompleteProfileView-BWSMWjj7.js | 1 - .../assets/CompleteProfileView-Dxkt3Tfb.css | 1 - .../assets/CustomerChoiceView-BQMMXTFH.css | 1 - .../assets/CustomerChoiceView-DUAnSQay.js | 1 - .../dist/assets/DashboardView-Bddx8ByF.css | 1 - .../dist/assets/DashboardView-CueOPTP7.js | 1 - .../dist/assets/FavoritesView-Bu_MOwHa.js | 1 - .../dist/assets/FavoritesView-CXia5ep7.css | 1 - .../dist/assets/FormItemContext-DcImcdHN.js | 1 - .../user-app/dist/assets/HomeView-BgFUA9Oc.js | 1 - .../dist/assets/HomeView-DCADfHrn.css | 1 - .../dist/assets/IamCallback-DTkN0hV1.js | 1 - apps/user-app/dist/assets/KeyCode-aVniBZCl.js | 1 - .../dist/assets/LoginRegisterView-BeGBRS4k.js | 1 - .../assets/LoginRegisterView-S8vHqWtX.css | 1 - .../dist/assets/NewestView-C8TMNyUh.js | 1 - .../dist/assets/NewestView-D1w8Ouy5.css | 1 - .../assets/NotificationsView-BYJ2kMU3.css | 1 - .../dist/assets/NotificationsView-BZVI9j9h.js | 1 - .../dist/assets/OrdersView-BhfwA79j.js | 1 - .../dist/assets/OrdersView-DmgY2uTU.css | 1 - .../user-app/dist/assets/PageBar-BGoTVxJ_.css | 1 - apps/user-app/dist/assets/PageBar-uwR8fLB1.js | 1 - .../dist/assets/ProductCard-B2v_7O2w.js | 1 - .../dist/assets/ProductCard-CFuCVVRu.css | 1 - .../dist/assets/ProfileView-15PPV3MU.css | 1 - .../dist/assets/ProfileView-kNDZrzTJ.js | 1 - .../dist/assets/RateStrip-Cu-pXRqJ.js | 1 - .../dist/assets/RateStrip-DGqcdr-5.css | 1 - .../dist/assets/ReportView-BtBtEC4S.js | 1 - .../dist/assets/ReportView-D7GBA5zr.css | 1 - .../dist/assets/SearchInput-BkDeGG-K.css | 1 - .../dist/assets/SearchInput-PYfnV6wd.js | 1 - .../dist/assets/SearchView-BX3lW_NZ.css | 1 - .../dist/assets/SearchView-DFkHj1td.js | 1 - .../dist/assets/SectionHead-CDGrZss6.css | 1 - .../dist/assets/SectionHead-D83A13Id.js | 1 - .../dist/assets/TransactionsView-CgLi6NJT.js | 1 - .../dist/assets/TransactionsView-QJUT0Agr.css | 1 - .../dist/assets/brand-logo-Q_YZU76j.png | Bin 83511 -> 0 bytes .../dist/assets/catalogStore-B8DvqlRK.js | 1 - .../dist/assets/classCallCheck-Cre2444v.js | 1 - .../dist/assets/dialogEmpty1-B2m57R6G.svg | 447 -- .../dist/assets/dialogEmpty4-CVum_Uqr.svg | 128 - .../dist/assets/dialogEmpty5-B1Z_JmTc.svg | 36 - .../dist/assets/favoritEmpty-kbtPAdi5.svg | 108 - apps/user-app/dist/assets/filters-DIq6V4-2.js | 5 - .../dist/assets/filtersStore-BBO4-Y3S.js | 1 - apps/user-app/dist/assets/index-B6C2_3fl.css | 1 - apps/user-app/dist/assets/index-B82ya0fp.js | 1 - apps/user-app/dist/assets/index-CGp1LOwd.js | 25 - apps/user-app/dist/assets/index-CcUem5HC.js | 6264 ----------------- apps/user-app/dist/assets/raf-nDFcuFT6.js | 1 - .../dist/assets/registerDelay-C2Zjomix.svg | 80 - .../assets/shipping-and-delivery-CyUGL93q.png | Bin 20935 -> 0 bytes .../sports-and-competition-ao926_SX.png | Bin 21591 -> 0 bytes .../dist/assets/usePagedProducts-DF9vKHJH.js | 1 - .../dist/assets/useReveal-8jixPKP5.js | 1 - .../workbox-window.prod.es5-BqEJf4Xk.js | 2 - .../assets/yekan_bakh_fanum_bold-B1U8HUd_.eot | Bin 60024 -> 0 bytes .../assets/yekan_bakh_fanum_bold-BgJhv14C.ttf | Bin 60024 -> 0 bytes .../yekan_bakh_fanum_bold-DiCmzWh_.woff | Bin 60024 -> 0 bytes .../assets/yekan_bakh_fanum_fat-ByLTFLyk.eot | Bin 60300 -> 0 bytes .../assets/yekan_bakh_fanum_fat-D7l80IzQ.ttf | Bin 60300 -> 0 bytes .../yekan_bakh_fanum_heavy-DcWv4PAq.woff | Bin 60096 -> 0 bytes .../yekan_bakh_fanum_heavy-DcdOma-5.ttf | Bin 60096 -> 0 bytes .../yekan_bakh_fanum_heavy-h9lE53XZ.eot | Bin 60096 -> 0 bytes .../yekan_bakh_fanum_light-BVC5pEtm.ttf | Bin 60996 -> 0 bytes .../yekan_bakh_fanum_light-DBLK7lys.eot | Bin 60996 -> 0 bytes .../yekan_bakh_fanum_light-MBz7xfzX.woff | Bin 60996 -> 0 bytes .../yekan_bakh_fanum_medium-C7lE-mP3.woff | Bin 60364 -> 0 bytes .../yekan_bakh_fanum_medium-K0xA3c9N.eot | Bin 60364 -> 0 bytes .../yekan_bakh_fanum_medium-udXv5Dbe.ttf | Bin 60364 -> 0 bytes .../yekan_bakh_fanum_regular-5O8oud7N.ttf | Bin 60576 -> 0 bytes .../yekan_bakh_fanum_regular-D-3AgpAQ.eot | Bin 60576 -> 0 bytes .../yekan_bakh_fanum_regular-DYu11jPk.woff | Bin 60576 -> 0 bytes .../yekan_bakh_fanum_thin-BUP5N_wR.woff | Bin 61088 -> 0 bytes .../assets/yekan_bakh_fanum_thin-DdtkSAK0.eot | Bin 61088 -> 0 bytes .../assets/yekan_bakh_fanum_thin-wM_3S6d2.ttf | Bin 61088 -> 0 bytes apps/user-app/dist/bale.png | Bin 46944 -> 0 bytes apps/user-app/dist/favicon.ico | Bin 37459 -> 0 bytes apps/user-app/dist/icon-192.png | Bin 19802 -> 0 bytes apps/user-app/dist/icon-512.png | Bin 80999 -> 0 bytes apps/user-app/dist/img/brand-logo.png | Bin 83511 -> 0 bytes apps/user-app/dist/img/brand-logo.webp | Bin 45174 -> 0 bytes apps/user-app/dist/img/no-items.png | Bin 54377 -> 0 bytes .../dist/img/products/bracelets-0.svg | 6 - .../dist/img/products/bracelets-1.svg | 6 - .../dist/img/products/bracelets-2.svg | 6 - .../dist/img/products/bracelets-3.svg | 6 - .../dist/img/products/bracelets-4.svg | 6 - .../dist/img/products/bracelets-5.svg | 6 - apps/user-app/dist/img/products/coins-0.svg | 6 - apps/user-app/dist/img/products/coins-1.svg | 6 - apps/user-app/dist/img/products/coins-2.svg | 6 - apps/user-app/dist/img/products/coins-3.svg | 6 - apps/user-app/dist/img/products/coins-4.svg | 6 - apps/user-app/dist/img/products/coins-5.svg | 6 - .../user-app/dist/img/products/earrings-0.svg | 6 - .../user-app/dist/img/products/earrings-1.svg | 6 - .../user-app/dist/img/products/earrings-2.svg | 6 - .../user-app/dist/img/products/earrings-3.svg | 6 - .../user-app/dist/img/products/earrings-4.svg | 6 - .../user-app/dist/img/products/earrings-5.svg | 6 - .../dist/img/products/necklaces-0.svg | 6 - .../dist/img/products/necklaces-1.svg | 6 - .../dist/img/products/necklaces-2.svg | 6 - .../dist/img/products/necklaces-3.svg | 6 - .../dist/img/products/necklaces-4.svg | 6 - .../dist/img/products/necklaces-5.svg | 6 - apps/user-app/dist/img/products/rings-0.svg | 6 - apps/user-app/dist/img/products/rings-1.svg | 6 - apps/user-app/dist/img/products/rings-2.svg | 6 - apps/user-app/dist/img/products/rings-3.svg | 6 - apps/user-app/dist/img/products/rings-4.svg | 6 - apps/user-app/dist/img/products/rings-5.svg | 6 - apps/user-app/dist/index.html | 42 - apps/user-app/dist/manifest.json | 3 - apps/user-app/dist/manifest.webmanifest | 1 - apps/user-app/dist/sw.js | 2 - apps/user-app/dist/version.json | 83 - apps/user-app/dist/whatsapp.png | Bin 196709 -> 0 bytes apps/user-app/index.html | 41 - apps/user-app/nginx.conf | 80 - apps/user-app/package.json | 36 - apps/user-app/postcss.config.js | 7 - apps/user-app/public/bale.png | Bin 46944 -> 0 bytes apps/user-app/public/favicon.ico | Bin 37459 -> 0 bytes apps/user-app/public/icon-192.png | Bin 19802 -> 0 bytes apps/user-app/public/icon-512.png | Bin 80999 -> 0 bytes apps/user-app/public/img/brand-logo.png | Bin 83511 -> 0 bytes apps/user-app/public/img/brand-logo.webp | Bin 45174 -> 0 bytes apps/user-app/public/img/no-items.png | Bin 54377 -> 0 bytes .../public/img/products/bracelets-0.svg | 6 - .../public/img/products/bracelets-1.svg | 6 - .../public/img/products/bracelets-2.svg | 6 - .../public/img/products/bracelets-3.svg | 6 - .../public/img/products/bracelets-4.svg | 6 - .../public/img/products/bracelets-5.svg | 6 - apps/user-app/public/img/products/coins-0.svg | 6 - apps/user-app/public/img/products/coins-1.svg | 6 - apps/user-app/public/img/products/coins-2.svg | 6 - apps/user-app/public/img/products/coins-3.svg | 6 - apps/user-app/public/img/products/coins-4.svg | 6 - apps/user-app/public/img/products/coins-5.svg | 6 - .../public/img/products/earrings-0.svg | 6 - .../public/img/products/earrings-1.svg | 6 - .../public/img/products/earrings-2.svg | 6 - .../public/img/products/earrings-3.svg | 6 - .../public/img/products/earrings-4.svg | 6 - .../public/img/products/earrings-5.svg | 6 - .../public/img/products/necklaces-0.svg | 6 - .../public/img/products/necklaces-1.svg | 6 - .../public/img/products/necklaces-2.svg | 6 - .../public/img/products/necklaces-3.svg | 6 - .../public/img/products/necklaces-4.svg | 6 - .../public/img/products/necklaces-5.svg | 6 - apps/user-app/public/img/products/rings-0.svg | 6 - apps/user-app/public/img/products/rings-1.svg | 6 - apps/user-app/public/img/products/rings-2.svg | 6 - apps/user-app/public/img/products/rings-3.svg | 6 - apps/user-app/public/img/products/rings-4.svg | 6 - apps/user-app/public/img/products/rings-5.svg | 6 - apps/user-app/public/manifest.json | 3 - apps/user-app/public/whatsapp.png | Bin 196709 -> 0 bytes apps/user-app/src/App.vue | 105 - apps/user-app/src/api/cachedReads.ts | 21 - apps/user-app/src/api/client.ts | 671 -- apps/user-app/src/assets/img/1020.jpg | Bin 260948 -> 0 bytes apps/user-app/src/assets/img/Vector.svg | 3 - apps/user-app/src/assets/img/brand-logo.png | Bin 83511 -> 0 bytes .../src/assets/img/empty/cartEmpty.svg | 47 - .../src/assets/img/empty/customerEmpty.svg | 447 -- .../src/assets/img/empty/dialogEmpty1.svg | 447 -- .../src/assets/img/empty/dialogEmpty2.svg | 69 - .../src/assets/img/empty/dialogEmpty3.svg | 127 - .../src/assets/img/empty/dialogEmpty4.svg | 128 - .../src/assets/img/empty/dialogEmpty5.svg | 36 - .../src/assets/img/empty/emp_after_search.svg | 37 - .../src/assets/img/empty/emp_basket.svg | 87 - .../assets/img/empty/emp_before_search.svg | 53 - .../src/assets/img/empty/emp_favorite.svg | 20 - .../src/assets/img/empty/emp_notification.svg | 37 - .../src/assets/img/empty/emp_search.svg | 66 - .../src/assets/img/empty/favoritEmpty.svg | 108 - .../src/assets/img/empty/gozareshEmpty.svg | 121 - .../src/assets/img/empty/ordersEmpty.svg | 90 - .../src/assets/img/empty/transactionEmpty.svg | 85 - apps/user-app/src/assets/img/no-items.png | Bin 54377 -> 0 bytes apps/user-app/src/assets/img/order-open.png | Bin 62807 -> 0 bytes apps/user-app/src/assets/img/pattern.svg | 82 - apps/user-app/src/assets/img/pattern2.svg | 298 - apps/user-app/src/assets/img/pattern3.svg | 10 - .../user-app/src/assets/img/registerDelay.svg | 80 - .../src/assets/img/shipping-and-delivery.png | Bin 20935 -> 0 bytes .../src/assets/img/sports-and-competition.png | Bin 21591 -> 0 bytes apps/user-app/src/assets/styles/fonts.less | 72 - .../styles/fonts/yekan_bakh_fanum_bold.eot | Bin 60024 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_bold.ttf | Bin 60024 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_bold.woff | Bin 60024 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_fat.eot | Bin 60300 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_fat.ttf | Bin 60300 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_fat.woff | Bin 60300 -> 0 bytes .../fonts/yekan_bakh_fanum_hairline.eot | Bin 61132 -> 0 bytes .../fonts/yekan_bakh_fanum_hairline.ttf | Bin 61132 -> 0 bytes .../fonts/yekan_bakh_fanum_hairline.woff | Bin 61132 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_heavy.eot | Bin 60096 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_heavy.ttf | Bin 60096 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_heavy.woff | Bin 60096 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_light.eot | Bin 60996 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_light.ttf | Bin 60996 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_light.woff | Bin 60996 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_medium.eot | Bin 60364 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_medium.ttf | Bin 60364 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_medium.woff | Bin 60364 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_regular.eot | Bin 60576 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_regular.ttf | Bin 60576 -> 0 bytes .../fonts/yekan_bakh_fanum_regular.woff | Bin 60576 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_thin.eot | Bin 61088 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_thin.ttf | Bin 61088 -> 0 bytes .../styles/fonts/yekan_bakh_fanum_thin.woff | Bin 61088 -> 0 bytes apps/user-app/src/assets/styles/style.less | 794 --- apps/user-app/src/assets/styles/tailwind.css | 3 - apps/user-app/src/brand.ts | 2 - .../user-app/src/components/AppUpdateGate.vue | 117 - apps/user-app/src/components/DialogVant.vue | 56 - .../src/components/DialogVantOneButton.vue | 56 - apps/user-app/src/components/EmptyState.vue | 32 - apps/user-app/src/components/Spinner.vue | 118 - .../src/components/expert/ActingAsBar.vue | 114 - .../src/components/home/CategoryRail.vue | 102 - .../src/components/home/RateStrip.vue | 108 - .../src/components/home/SectionHead.vue | 59 - .../src/components/home/ShowcaseCard.vue | 164 - .../src/components/home/ShowcaseSlider.vue | 274 - apps/user-app/src/components/icon/Icon.vue | 54 - apps/user-app/src/components/icon/icons.json | 1027 --- .../src/components/input/OtpInput.vue | 138 - .../src/components/input/SingleOtpInput.vue | 117 - .../src/components/product/CartItem.vue | 255 - .../src/components/product/GallerySlider.vue | 287 - .../src/components/product/OrderCard.vue | 164 - .../src/components/product/OrderItemCard.vue | 237 - .../src/components/product/ProductCard.vue | 202 - .../src/components/product/ProductMorph.vue | 541 -- .../src/components/product/SingleProduct.vue | 1061 --- .../src/components/search/Filters.vue | 592 -- .../src/components/search/SearchInput.vue | 106 - .../src/components/ui/AppPullRefresh.vue | 82 - apps/user-app/src/components/ui/Container.vue | 13 - apps/user-app/src/components/ui/DropDown.vue | 161 - .../user-app/src/components/ui/Navigation.vue | 119 - apps/user-app/src/components/ui/PageBar.vue | 143 - .../src/components/ui/RefreshOverlay.vue | 134 - .../src/components/ui/ScrollFetchSearch.vue | 50 - apps/user-app/src/components/ui/ToastCard.vue | 325 - apps/user-app/src/components/ui/ToastHost.vue | 89 - .../src/components/ui/ToggleSwitch.vue | 59 - .../components/upload/SingleImageUploader.vue | 166 - apps/user-app/src/composables/useAppUpdate.ts | 84 - .../src/composables/useOrderItemProduct.ts | 37 - .../src/composables/usePageTransition.ts | 43 - .../src/composables/usePagedProducts.ts | 65 - apps/user-app/src/composables/useProduct.ts | 95 - .../src/composables/useProductDetail.ts | 69 - .../src/composables/useProductMorph.ts | 43 - apps/user-app/src/composables/useProducts.ts | 55 - apps/user-app/src/composables/useReveal.ts | 43 - apps/user-app/src/composables/useToast.ts | 72 - apps/user-app/src/env.d.ts | 9 - apps/user-app/src/layout/FullPageLayout.vue | 9 - apps/user-app/src/layout/MasterLayout.vue | 92 - apps/user-app/src/main.ts | 65 - apps/user-app/src/router/index.ts | 234 - apps/user-app/src/stores/appearanceStore.ts | 120 - apps/user-app/src/stores/cartStore.ts | 153 - apps/user-app/src/stores/catalogStore.ts | 67 - apps/user-app/src/stores/configStore.ts | 98 - apps/user-app/src/stores/favoritesStore.ts | 60 - apps/user-app/src/stores/filtersStore.ts | 45 - apps/user-app/src/stores/navStore.ts | 85 - apps/user-app/src/stores/queryCache.ts | 123 - apps/user-app/src/stores/session.ts | 136 - apps/user-app/src/stores/transitionStore.ts | 27 - apps/user-app/src/stores/wageQuoteStore.ts | 83 - apps/user-app/src/stores/windowDataStore.ts | 22 - apps/user-app/src/sw.ts | 14 - .../src/types/moment-jalaali-shim.d.ts | 5 - apps/user-app/src/types/swiper-shim.d.ts | 16 - apps/user-app/src/utils/checkAccess.ts | 6 - apps/user-app/src/utils/filters.ts | 38 - apps/user-app/src/utils/orderStatus.ts | 96 - apps/user-app/src/utils/validator.ts | 9 - apps/user-app/src/views/CartView.vue | 438 -- apps/user-app/src/views/HomeView.vue | 396 -- apps/user-app/src/views/NewestView.vue | 76 - .../src/views/expert/ChildOrdersView.vue | 418 -- .../src/views/expert/CustomerChoiceView.vue | 408 -- .../src/views/report/ReportDocument.vue | 188 - apps/user-app/src/views/report/ReportView.vue | 440 -- .../src/views/search/CollectionView.vue | 121 - apps/user-app/src/views/search/SearchView.vue | 414 -- .../src/views/user/AppearanceView.vue | 340 - .../src/views/user/CompleteProfileView.vue | 197 - .../user-app/src/views/user/DashboardView.vue | 617 -- .../user-app/src/views/user/FavoritesView.vue | 131 - apps/user-app/src/views/user/IamCallback.vue | 45 - .../src/views/user/LoginRegisterView.vue | 14 - apps/user-app/src/views/user/LoginView.vue | 364 - .../src/views/user/NotificationsView.vue | 51 - apps/user-app/src/views/user/OrdersView.vue | 910 --- apps/user-app/src/views/user/ProfileView.vue | 329 - apps/user-app/src/views/user/RegisterView.vue | 240 - .../src/views/user/TransactionsView.vue | 357 - apps/user-app/tailwind.config.js | 16 - apps/user-app/themeConfig/appearance.ts | 154 - apps/user-app/themeConfig/colors.dark.json | 31 - apps/user-app/themeConfig/colors.json | 38 - apps/user-app/themeConfig/themeConfig.ts | 53 - apps/user-app/tsconfig.json | 14 - apps/user-app/tsconfig.tsbuildinfo | 1 - apps/user-app/vite.config.ts | 74 - brand.ts | 4 +- docker-compose.yml | 13 +- docs/BRANDING.md | 2 - docs/parity/PROTECTED.md | 7 +- package.json | 2 +- pnpm-lock.yaml | 70 - scripts/app-version.mjs | 6 +- 367 files changed, 335 insertions(+), 28536 deletions(-) delete mode 100644 apps/user-app/.dockerignore delete mode 100644 apps/user-app/Dockerfile delete mode 100644 apps/user-app/dist/assets/AppPullRefresh-BjycWfIE.js delete mode 100644 apps/user-app/dist/assets/AppPullRefresh-DFLVD8uo.css delete mode 100644 apps/user-app/dist/assets/AppearanceView-Bpmd9TYW.js delete mode 100644 apps/user-app/dist/assets/AppearanceView-COyZOyul.css delete mode 100644 apps/user-app/dist/assets/CartView-CgiOyb97.css delete mode 100644 apps/user-app/dist/assets/CartView-CygA4nbh.js delete mode 100644 apps/user-app/dist/assets/ChildOrdersView-CICtJkRk.js delete mode 100644 apps/user-app/dist/assets/ChildOrdersView-RgAfoOoK.css delete mode 100644 apps/user-app/dist/assets/CollectionView-BDtqEROz.js delete mode 100644 apps/user-app/dist/assets/CollectionView-DvJKjneK.css delete mode 100644 apps/user-app/dist/assets/CompleteProfileView-BWSMWjj7.js delete mode 100644 apps/user-app/dist/assets/CompleteProfileView-Dxkt3Tfb.css delete mode 100644 apps/user-app/dist/assets/CustomerChoiceView-BQMMXTFH.css delete mode 100644 apps/user-app/dist/assets/CustomerChoiceView-DUAnSQay.js delete mode 100644 apps/user-app/dist/assets/DashboardView-Bddx8ByF.css delete mode 100644 apps/user-app/dist/assets/DashboardView-CueOPTP7.js delete mode 100644 apps/user-app/dist/assets/FavoritesView-Bu_MOwHa.js delete mode 100644 apps/user-app/dist/assets/FavoritesView-CXia5ep7.css delete mode 100644 apps/user-app/dist/assets/FormItemContext-DcImcdHN.js delete mode 100644 apps/user-app/dist/assets/HomeView-BgFUA9Oc.js delete mode 100644 apps/user-app/dist/assets/HomeView-DCADfHrn.css delete mode 100644 apps/user-app/dist/assets/IamCallback-DTkN0hV1.js delete mode 100644 apps/user-app/dist/assets/KeyCode-aVniBZCl.js delete mode 100644 apps/user-app/dist/assets/LoginRegisterView-BeGBRS4k.js delete mode 100644 apps/user-app/dist/assets/LoginRegisterView-S8vHqWtX.css delete mode 100644 apps/user-app/dist/assets/NewestView-C8TMNyUh.js delete mode 100644 apps/user-app/dist/assets/NewestView-D1w8Ouy5.css delete mode 100644 apps/user-app/dist/assets/NotificationsView-BYJ2kMU3.css delete mode 100644 apps/user-app/dist/assets/NotificationsView-BZVI9j9h.js delete mode 100644 apps/user-app/dist/assets/OrdersView-BhfwA79j.js delete mode 100644 apps/user-app/dist/assets/OrdersView-DmgY2uTU.css delete mode 100644 apps/user-app/dist/assets/PageBar-BGoTVxJ_.css delete mode 100644 apps/user-app/dist/assets/PageBar-uwR8fLB1.js delete mode 100644 apps/user-app/dist/assets/ProductCard-B2v_7O2w.js delete mode 100644 apps/user-app/dist/assets/ProductCard-CFuCVVRu.css delete mode 100644 apps/user-app/dist/assets/ProfileView-15PPV3MU.css delete mode 100644 apps/user-app/dist/assets/ProfileView-kNDZrzTJ.js delete mode 100644 apps/user-app/dist/assets/RateStrip-Cu-pXRqJ.js delete mode 100644 apps/user-app/dist/assets/RateStrip-DGqcdr-5.css delete mode 100644 apps/user-app/dist/assets/ReportView-BtBtEC4S.js delete mode 100644 apps/user-app/dist/assets/ReportView-D7GBA5zr.css delete mode 100644 apps/user-app/dist/assets/SearchInput-BkDeGG-K.css delete mode 100644 apps/user-app/dist/assets/SearchInput-PYfnV6wd.js delete mode 100644 apps/user-app/dist/assets/SearchView-BX3lW_NZ.css delete mode 100644 apps/user-app/dist/assets/SearchView-DFkHj1td.js delete mode 100644 apps/user-app/dist/assets/SectionHead-CDGrZss6.css delete mode 100644 apps/user-app/dist/assets/SectionHead-D83A13Id.js delete mode 100644 apps/user-app/dist/assets/TransactionsView-CgLi6NJT.js delete mode 100644 apps/user-app/dist/assets/TransactionsView-QJUT0Agr.css delete mode 100644 apps/user-app/dist/assets/brand-logo-Q_YZU76j.png delete mode 100644 apps/user-app/dist/assets/catalogStore-B8DvqlRK.js delete mode 100644 apps/user-app/dist/assets/classCallCheck-Cre2444v.js delete mode 100644 apps/user-app/dist/assets/dialogEmpty1-B2m57R6G.svg delete mode 100644 apps/user-app/dist/assets/dialogEmpty4-CVum_Uqr.svg delete mode 100644 apps/user-app/dist/assets/dialogEmpty5-B1Z_JmTc.svg delete mode 100644 apps/user-app/dist/assets/favoritEmpty-kbtPAdi5.svg delete mode 100644 apps/user-app/dist/assets/filters-DIq6V4-2.js delete mode 100644 apps/user-app/dist/assets/filtersStore-BBO4-Y3S.js delete mode 100644 apps/user-app/dist/assets/index-B6C2_3fl.css delete mode 100644 apps/user-app/dist/assets/index-B82ya0fp.js delete mode 100644 apps/user-app/dist/assets/index-CGp1LOwd.js delete mode 100644 apps/user-app/dist/assets/index-CcUem5HC.js delete mode 100644 apps/user-app/dist/assets/raf-nDFcuFT6.js delete mode 100644 apps/user-app/dist/assets/registerDelay-C2Zjomix.svg delete mode 100644 apps/user-app/dist/assets/shipping-and-delivery-CyUGL93q.png delete mode 100644 apps/user-app/dist/assets/sports-and-competition-ao926_SX.png delete mode 100644 apps/user-app/dist/assets/usePagedProducts-DF9vKHJH.js delete mode 100644 apps/user-app/dist/assets/useReveal-8jixPKP5.js delete mode 100644 apps/user-app/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_bold-B1U8HUd_.eot delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_bold-BgJhv14C.ttf delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_bold-DiCmzWh_.woff delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_fat-ByLTFLyk.eot delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_fat-D7l80IzQ.ttf delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_heavy-DcWv4PAq.woff delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_heavy-DcdOma-5.ttf delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_heavy-h9lE53XZ.eot delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_light-BVC5pEtm.ttf delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_light-DBLK7lys.eot delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_light-MBz7xfzX.woff delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_medium-C7lE-mP3.woff delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_medium-K0xA3c9N.eot delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_medium-udXv5Dbe.ttf delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_regular-5O8oud7N.ttf delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_regular-D-3AgpAQ.eot delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_regular-DYu11jPk.woff delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_thin-BUP5N_wR.woff delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_thin-DdtkSAK0.eot delete mode 100644 apps/user-app/dist/assets/yekan_bakh_fanum_thin-wM_3S6d2.ttf delete mode 100644 apps/user-app/dist/bale.png delete mode 100644 apps/user-app/dist/favicon.ico delete mode 100644 apps/user-app/dist/icon-192.png delete mode 100644 apps/user-app/dist/icon-512.png delete mode 100644 apps/user-app/dist/img/brand-logo.png delete mode 100644 apps/user-app/dist/img/brand-logo.webp delete mode 100644 apps/user-app/dist/img/no-items.png delete mode 100644 apps/user-app/dist/img/products/bracelets-0.svg delete mode 100644 apps/user-app/dist/img/products/bracelets-1.svg delete mode 100644 apps/user-app/dist/img/products/bracelets-2.svg delete mode 100644 apps/user-app/dist/img/products/bracelets-3.svg delete mode 100644 apps/user-app/dist/img/products/bracelets-4.svg delete mode 100644 apps/user-app/dist/img/products/bracelets-5.svg delete mode 100644 apps/user-app/dist/img/products/coins-0.svg delete mode 100644 apps/user-app/dist/img/products/coins-1.svg delete mode 100644 apps/user-app/dist/img/products/coins-2.svg delete mode 100644 apps/user-app/dist/img/products/coins-3.svg delete mode 100644 apps/user-app/dist/img/products/coins-4.svg delete mode 100644 apps/user-app/dist/img/products/coins-5.svg delete mode 100644 apps/user-app/dist/img/products/earrings-0.svg delete mode 100644 apps/user-app/dist/img/products/earrings-1.svg delete mode 100644 apps/user-app/dist/img/products/earrings-2.svg delete mode 100644 apps/user-app/dist/img/products/earrings-3.svg delete mode 100644 apps/user-app/dist/img/products/earrings-4.svg delete mode 100644 apps/user-app/dist/img/products/earrings-5.svg delete mode 100644 apps/user-app/dist/img/products/necklaces-0.svg delete mode 100644 apps/user-app/dist/img/products/necklaces-1.svg delete mode 100644 apps/user-app/dist/img/products/necklaces-2.svg delete mode 100644 apps/user-app/dist/img/products/necklaces-3.svg delete mode 100644 apps/user-app/dist/img/products/necklaces-4.svg delete mode 100644 apps/user-app/dist/img/products/necklaces-5.svg delete mode 100644 apps/user-app/dist/img/products/rings-0.svg delete mode 100644 apps/user-app/dist/img/products/rings-1.svg delete mode 100644 apps/user-app/dist/img/products/rings-2.svg delete mode 100644 apps/user-app/dist/img/products/rings-3.svg delete mode 100644 apps/user-app/dist/img/products/rings-4.svg delete mode 100644 apps/user-app/dist/img/products/rings-5.svg delete mode 100644 apps/user-app/dist/index.html delete mode 100644 apps/user-app/dist/manifest.json delete mode 100644 apps/user-app/dist/manifest.webmanifest delete mode 100644 apps/user-app/dist/sw.js delete mode 100644 apps/user-app/dist/version.json delete mode 100644 apps/user-app/dist/whatsapp.png delete mode 100644 apps/user-app/index.html delete mode 100644 apps/user-app/nginx.conf delete mode 100644 apps/user-app/package.json delete mode 100644 apps/user-app/postcss.config.js delete mode 100644 apps/user-app/public/bale.png delete mode 100644 apps/user-app/public/favicon.ico delete mode 100644 apps/user-app/public/icon-192.png delete mode 100644 apps/user-app/public/icon-512.png delete mode 100644 apps/user-app/public/img/brand-logo.png delete mode 100644 apps/user-app/public/img/brand-logo.webp delete mode 100644 apps/user-app/public/img/no-items.png delete mode 100644 apps/user-app/public/img/products/bracelets-0.svg delete mode 100644 apps/user-app/public/img/products/bracelets-1.svg delete mode 100644 apps/user-app/public/img/products/bracelets-2.svg delete mode 100644 apps/user-app/public/img/products/bracelets-3.svg delete mode 100644 apps/user-app/public/img/products/bracelets-4.svg delete mode 100644 apps/user-app/public/img/products/bracelets-5.svg delete mode 100644 apps/user-app/public/img/products/coins-0.svg delete mode 100644 apps/user-app/public/img/products/coins-1.svg delete mode 100644 apps/user-app/public/img/products/coins-2.svg delete mode 100644 apps/user-app/public/img/products/coins-3.svg delete mode 100644 apps/user-app/public/img/products/coins-4.svg delete mode 100644 apps/user-app/public/img/products/coins-5.svg delete mode 100644 apps/user-app/public/img/products/earrings-0.svg delete mode 100644 apps/user-app/public/img/products/earrings-1.svg delete mode 100644 apps/user-app/public/img/products/earrings-2.svg delete mode 100644 apps/user-app/public/img/products/earrings-3.svg delete mode 100644 apps/user-app/public/img/products/earrings-4.svg delete mode 100644 apps/user-app/public/img/products/earrings-5.svg delete mode 100644 apps/user-app/public/img/products/necklaces-0.svg delete mode 100644 apps/user-app/public/img/products/necklaces-1.svg delete mode 100644 apps/user-app/public/img/products/necklaces-2.svg delete mode 100644 apps/user-app/public/img/products/necklaces-3.svg delete mode 100644 apps/user-app/public/img/products/necklaces-4.svg delete mode 100644 apps/user-app/public/img/products/necklaces-5.svg delete mode 100644 apps/user-app/public/img/products/rings-0.svg delete mode 100644 apps/user-app/public/img/products/rings-1.svg delete mode 100644 apps/user-app/public/img/products/rings-2.svg delete mode 100644 apps/user-app/public/img/products/rings-3.svg delete mode 100644 apps/user-app/public/img/products/rings-4.svg delete mode 100644 apps/user-app/public/img/products/rings-5.svg delete mode 100644 apps/user-app/public/manifest.json delete mode 100644 apps/user-app/public/whatsapp.png delete mode 100644 apps/user-app/src/App.vue delete mode 100644 apps/user-app/src/api/cachedReads.ts delete mode 100644 apps/user-app/src/api/client.ts delete mode 100644 apps/user-app/src/assets/img/1020.jpg delete mode 100644 apps/user-app/src/assets/img/Vector.svg delete mode 100644 apps/user-app/src/assets/img/brand-logo.png delete mode 100644 apps/user-app/src/assets/img/empty/cartEmpty.svg delete mode 100644 apps/user-app/src/assets/img/empty/customerEmpty.svg delete mode 100644 apps/user-app/src/assets/img/empty/dialogEmpty1.svg delete mode 100644 apps/user-app/src/assets/img/empty/dialogEmpty2.svg delete mode 100644 apps/user-app/src/assets/img/empty/dialogEmpty3.svg delete mode 100644 apps/user-app/src/assets/img/empty/dialogEmpty4.svg delete mode 100644 apps/user-app/src/assets/img/empty/dialogEmpty5.svg delete mode 100644 apps/user-app/src/assets/img/empty/emp_after_search.svg delete mode 100644 apps/user-app/src/assets/img/empty/emp_basket.svg delete mode 100644 apps/user-app/src/assets/img/empty/emp_before_search.svg delete mode 100644 apps/user-app/src/assets/img/empty/emp_favorite.svg delete mode 100644 apps/user-app/src/assets/img/empty/emp_notification.svg delete mode 100644 apps/user-app/src/assets/img/empty/emp_search.svg delete mode 100644 apps/user-app/src/assets/img/empty/favoritEmpty.svg delete mode 100644 apps/user-app/src/assets/img/empty/gozareshEmpty.svg delete mode 100644 apps/user-app/src/assets/img/empty/ordersEmpty.svg delete mode 100644 apps/user-app/src/assets/img/empty/transactionEmpty.svg delete mode 100644 apps/user-app/src/assets/img/no-items.png delete mode 100644 apps/user-app/src/assets/img/order-open.png delete mode 100644 apps/user-app/src/assets/img/pattern.svg delete mode 100644 apps/user-app/src/assets/img/pattern2.svg delete mode 100644 apps/user-app/src/assets/img/pattern3.svg delete mode 100644 apps/user-app/src/assets/img/registerDelay.svg delete mode 100644 apps/user-app/src/assets/img/shipping-and-delivery.png delete mode 100644 apps/user-app/src/assets/img/sports-and-competition.png delete mode 100644 apps/user-app/src/assets/styles/fonts.less delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_bold.eot delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_bold.ttf delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_bold.woff delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_fat.eot delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_fat.ttf delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_fat.woff delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_hairline.eot delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_hairline.ttf delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_hairline.woff delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_heavy.eot delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_heavy.ttf delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_heavy.woff delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_light.eot delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_light.ttf delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_light.woff delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_medium.eot delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_medium.ttf delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_medium.woff delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_regular.eot delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_regular.ttf delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_regular.woff delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_thin.eot delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_thin.ttf delete mode 100644 apps/user-app/src/assets/styles/fonts/yekan_bakh_fanum_thin.woff delete mode 100644 apps/user-app/src/assets/styles/style.less delete mode 100644 apps/user-app/src/assets/styles/tailwind.css delete mode 100644 apps/user-app/src/brand.ts delete mode 100644 apps/user-app/src/components/AppUpdateGate.vue delete mode 100644 apps/user-app/src/components/DialogVant.vue delete mode 100644 apps/user-app/src/components/DialogVantOneButton.vue delete mode 100644 apps/user-app/src/components/EmptyState.vue delete mode 100644 apps/user-app/src/components/Spinner.vue delete mode 100644 apps/user-app/src/components/expert/ActingAsBar.vue delete mode 100644 apps/user-app/src/components/home/CategoryRail.vue delete mode 100644 apps/user-app/src/components/home/RateStrip.vue delete mode 100644 apps/user-app/src/components/home/SectionHead.vue delete mode 100644 apps/user-app/src/components/home/ShowcaseCard.vue delete mode 100644 apps/user-app/src/components/home/ShowcaseSlider.vue delete mode 100644 apps/user-app/src/components/icon/Icon.vue delete mode 100644 apps/user-app/src/components/icon/icons.json delete mode 100644 apps/user-app/src/components/input/OtpInput.vue delete mode 100644 apps/user-app/src/components/input/SingleOtpInput.vue delete mode 100644 apps/user-app/src/components/product/CartItem.vue delete mode 100644 apps/user-app/src/components/product/GallerySlider.vue delete mode 100644 apps/user-app/src/components/product/OrderCard.vue delete mode 100644 apps/user-app/src/components/product/OrderItemCard.vue delete mode 100644 apps/user-app/src/components/product/ProductCard.vue delete mode 100644 apps/user-app/src/components/product/ProductMorph.vue delete mode 100644 apps/user-app/src/components/product/SingleProduct.vue delete mode 100644 apps/user-app/src/components/search/Filters.vue delete mode 100644 apps/user-app/src/components/search/SearchInput.vue delete mode 100644 apps/user-app/src/components/ui/AppPullRefresh.vue delete mode 100644 apps/user-app/src/components/ui/Container.vue delete mode 100644 apps/user-app/src/components/ui/DropDown.vue delete mode 100644 apps/user-app/src/components/ui/Navigation.vue delete mode 100644 apps/user-app/src/components/ui/PageBar.vue delete mode 100644 apps/user-app/src/components/ui/RefreshOverlay.vue delete mode 100644 apps/user-app/src/components/ui/ScrollFetchSearch.vue delete mode 100644 apps/user-app/src/components/ui/ToastCard.vue delete mode 100644 apps/user-app/src/components/ui/ToastHost.vue delete mode 100644 apps/user-app/src/components/ui/ToggleSwitch.vue delete mode 100644 apps/user-app/src/components/upload/SingleImageUploader.vue delete mode 100644 apps/user-app/src/composables/useAppUpdate.ts delete mode 100644 apps/user-app/src/composables/useOrderItemProduct.ts delete mode 100644 apps/user-app/src/composables/usePageTransition.ts delete mode 100644 apps/user-app/src/composables/usePagedProducts.ts delete mode 100644 apps/user-app/src/composables/useProduct.ts delete mode 100644 apps/user-app/src/composables/useProductDetail.ts delete mode 100644 apps/user-app/src/composables/useProductMorph.ts delete mode 100644 apps/user-app/src/composables/useProducts.ts delete mode 100644 apps/user-app/src/composables/useReveal.ts delete mode 100644 apps/user-app/src/composables/useToast.ts delete mode 100644 apps/user-app/src/env.d.ts delete mode 100644 apps/user-app/src/layout/FullPageLayout.vue delete mode 100644 apps/user-app/src/layout/MasterLayout.vue delete mode 100644 apps/user-app/src/main.ts delete mode 100644 apps/user-app/src/router/index.ts delete mode 100644 apps/user-app/src/stores/appearanceStore.ts delete mode 100644 apps/user-app/src/stores/cartStore.ts delete mode 100644 apps/user-app/src/stores/catalogStore.ts delete mode 100644 apps/user-app/src/stores/configStore.ts delete mode 100644 apps/user-app/src/stores/favoritesStore.ts delete mode 100644 apps/user-app/src/stores/filtersStore.ts delete mode 100644 apps/user-app/src/stores/navStore.ts delete mode 100644 apps/user-app/src/stores/queryCache.ts delete mode 100644 apps/user-app/src/stores/session.ts delete mode 100644 apps/user-app/src/stores/transitionStore.ts delete mode 100644 apps/user-app/src/stores/wageQuoteStore.ts delete mode 100644 apps/user-app/src/stores/windowDataStore.ts delete mode 100644 apps/user-app/src/sw.ts delete mode 100644 apps/user-app/src/types/moment-jalaali-shim.d.ts delete mode 100644 apps/user-app/src/types/swiper-shim.d.ts delete mode 100644 apps/user-app/src/utils/checkAccess.ts delete mode 100644 apps/user-app/src/utils/filters.ts delete mode 100644 apps/user-app/src/utils/orderStatus.ts delete mode 100644 apps/user-app/src/utils/validator.ts delete mode 100644 apps/user-app/src/views/CartView.vue delete mode 100644 apps/user-app/src/views/HomeView.vue delete mode 100644 apps/user-app/src/views/NewestView.vue delete mode 100644 apps/user-app/src/views/expert/ChildOrdersView.vue delete mode 100644 apps/user-app/src/views/expert/CustomerChoiceView.vue delete mode 100644 apps/user-app/src/views/report/ReportDocument.vue delete mode 100644 apps/user-app/src/views/report/ReportView.vue delete mode 100644 apps/user-app/src/views/search/CollectionView.vue delete mode 100644 apps/user-app/src/views/search/SearchView.vue delete mode 100644 apps/user-app/src/views/user/AppearanceView.vue delete mode 100644 apps/user-app/src/views/user/CompleteProfileView.vue delete mode 100644 apps/user-app/src/views/user/DashboardView.vue delete mode 100644 apps/user-app/src/views/user/FavoritesView.vue delete mode 100644 apps/user-app/src/views/user/IamCallback.vue delete mode 100644 apps/user-app/src/views/user/LoginRegisterView.vue delete mode 100644 apps/user-app/src/views/user/LoginView.vue delete mode 100644 apps/user-app/src/views/user/NotificationsView.vue delete mode 100644 apps/user-app/src/views/user/OrdersView.vue delete mode 100644 apps/user-app/src/views/user/ProfileView.vue delete mode 100644 apps/user-app/src/views/user/RegisterView.vue delete mode 100644 apps/user-app/src/views/user/TransactionsView.vue delete mode 100644 apps/user-app/tailwind.config.js delete mode 100644 apps/user-app/themeConfig/appearance.ts delete mode 100644 apps/user-app/themeConfig/colors.dark.json delete mode 100644 apps/user-app/themeConfig/colors.json delete mode 100644 apps/user-app/themeConfig/themeConfig.ts delete mode 100644 apps/user-app/tsconfig.json delete mode 100644 apps/user-app/tsconfig.tsbuildinfo delete mode 100644 apps/user-app/vite.config.ts diff --git a/.env.example b/.env.example index a4cf02d..baffbb3 100644 --- a/.env.example +++ b/.env.example @@ -19,7 +19,6 @@ DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGR # --------------------------------------------------------------------------- API_PORT=3000 ADMIN_PANEL_PORT=5180 -USER_APP_PORT=5181 USER_APP_V2_PORT=5182 # API Configuration (kept for any tooling that still reads bare PORT) diff --git a/DELIVERY.md b/DELIVERY.md index 0e0d043..34816d5 100644 --- a/DELIVERY.md +++ b/DELIVERY.md @@ -240,7 +240,7 @@ pnpm dev # all apps via turbo ``` Ports come from the repo-root `.env` (single source of truth): -API 3000, admin-panel 5180, user-app 5181, user-app-v2 5182. +API 3000, admin-panel 5180, user-app-v2 5182. ### Build @@ -263,8 +263,8 @@ docker compose up -d --build > success. During this delivery's compose run that bundle was four days old and > the container was missing every route added since. Tracked as **DEPLOY-03**. -Services: `db` (Postgres 15), `api` (port 3000), `admin-panel`, `user-app`, -`user-app-v2` (each nginx on port 80). The apps expose no host ports — +Services: `db` (Postgres 15), `api` (port 3000), `admin-panel`, +`user-app-v2` (nginx on port 80). The apps expose no host ports — Dokploy/Traefik routes to them by domain. Uploads persist in the `api_uploads` volume; without it every previously uploaded image 404s after a redeploy. diff --git a/DOCKER.md b/DOCKER.md index 2515837..3aac272 100644 --- a/DOCKER.md +++ b/DOCKER.md @@ -8,7 +8,7 @@ Dokploy only builds thin images that copy those files (no `pnpm install` on the ```bash pnpm install pnpm build:release -git add -f apps/api/release apps/admin-panel/dist apps/user-app/dist apps/user-app-v2/dist +git add -f apps/api/release apps/admin-panel/dist apps/user-app-v2/dist git commit -m "chore: refresh release artifacts" git push ``` @@ -19,8 +19,7 @@ What this produces: |---|---|---| | API | `apps/api/release/app.js` (+ Prisma under `release/vendor`) | `docker.arvancloud.ir/node:20-bookworm` | | Admin | `apps/admin-panel/dist/` | `docker.arvancloud.ir/nginx:latest` | -| User | `apps/user-app/dist/` | `docker.arvancloud.ir/nginx:latest` | -| User v2 | `apps/user-app-v2/dist/` | `docker.arvancloud.ir/nginx:latest` | +| User | `apps/user-app-v2/dist/` | `docker.arvancloud.ir/nginx:latest` | ## Dokploy Environment @@ -45,8 +44,7 @@ different Compose project name for each application. | Service | Domain | Port | |---|---|---| | `admin-panel` | admin.example.com | **80** | -| `user-app` | app.example.com | **80** | -| `user-app-v2` | app-v2.example.com | **80** | +| `user-app-v2` | app.example.com | **80** | | `api` | (optional) | **3000** | Frontends call `/api` on their own domain; nginx proxies to `api:3000`. diff --git a/apps/admin-panel/src/layouts/components/TheNavbar.vue b/apps/admin-panel/src/layouts/components/TheNavbar.vue index 9e115ad..a0d80d2 100644 --- a/apps/admin-panel/src/layouts/components/TheNavbar.vue +++ b/apps/admin-panel/src/layouts/components/TheNavbar.vue @@ -12,6 +12,9 @@ + + + {{ pageTitle }} @@ -75,6 +78,7 @@ import { computed } from 'vue'; import { useRoute, useRouter } from 'vue-router'; import { + ArrowRightOutlined, LogoutOutlined, MenuFoldOutlined, MenuUnfoldOutlined, @@ -104,6 +108,22 @@ const displayName = computed(() => auth.user?.name ?? auth.user?.fullName ?? 'ک const initial = computed(() => displayName.value.trim().charAt(0) || 'ک'); const canSeePermissions = computed(() => Boolean(users.hasPermission('user.permission'))); +function goBack() { + const parent = breadcrumb.value + ?.slice() + .reverse() + .find((c) => c.url && !c.active); + if (parent?.url) { + router.push(parent.url); + return; + } + if (window.history.length > 1) { + router.back(); + return; + } + router.push('/'); +} + async function onLogout() { const left = await auth.logout(); if (!left) router.push('/auth/login'); @@ -133,6 +153,10 @@ async function onLogout() { .nav-right { flex-shrink: 0; } +.nav-back { + color: #1c2d56; + font-size: 16px; +} .page-title { font-size: 16px; color: #1c2d56; diff --git a/apps/admin-panel/src/stores/cart.ts b/apps/admin-panel/src/stores/cart.ts index 6e51a8f..95827ea 100644 --- a/apps/admin-panel/src/stores/cart.ts +++ b/apps/admin-panel/src/stores/cart.ts @@ -23,6 +23,9 @@ export interface CartVariant { price_with_discount?: number; grams?: number; title?: string; + /** Fixed rial making charge on the variant (legacy rial_pay). */ + rial_pay?: number | null; + percentage_pay?: number | null; } export interface CartProduct { @@ -38,6 +41,11 @@ export interface CartItem { product: CartProduct; qty: number; promotion_id?: string | null; + /** + * Operator's per-unit rial charge for this line. Unset means "use the + * variant's rial_pay"; 0 means the operator cleared it. + */ + rial_input?: number | null; } export const useCartStore = defineStore('cart', { @@ -82,6 +90,15 @@ export const useCartStore = defineStore('cart', { this.setItems(this.items); }, + /** Keeps an edited rial charge on the line across quantity changes and reloads. */ + updateItemRial(payload: { index: number; rial: number | null }) { + const item = this.items[payload.index]; + if (!item) return; + const n = payload.rial == null ? 0 : Number(payload.rial); + item.rial_input = Number.isFinite(n) ? n : 0; + this.setItems(this.items); + }, + clear() { this.items = []; this.setItems(this.items); @@ -112,6 +129,7 @@ export const useCartStore = defineStore('cart', { product, qty: cartItem.qty, promotion_id: product.promotion && product.promotion.id ? product.promotion.id : null, + ...(cartItem.rial_input != null ? { rial_input: Number(cartItem.rial_input) } : {}), }); } } diff --git a/apps/admin-panel/src/views/branch/order/create.vue b/apps/admin-panel/src/views/branch/order/create.vue index d232211..f41d23b 100644 --- a/apps/admin-panel/src/views/branch/order/create.vue +++ b/apps/admin-panel/src/views/branch/order/create.vue @@ -82,6 +82,17 @@ {{ record.product.title }} + + +