@mohasinac/appkit 4.1.1 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_internal/client/features/maintenance/index.d.ts +2 -0
- package/dist/_internal/client/features/maintenance/index.js +1 -0
- package/dist/_internal/client/features/maintenance/views/CloudLogsListView.d.ts +9 -0
- package/dist/_internal/client/features/maintenance/views/CloudLogsListView.js +55 -0
- package/dist/_internal/server/features/auctions/index.d.ts +1 -1
- package/dist/_internal/server/features/auctions/index.js +1 -1
- package/dist/_internal/server/features/auctions/service.js +2 -2
- package/dist/_internal/server/features/checkout/actions.d.ts +15 -0
- package/dist/_internal/server/features/checkout/actions.js +245 -182
- package/dist/_internal/server/features/maintenance/cloud-logs-data.d.ts +50 -0
- package/dist/_internal/server/features/maintenance/cloud-logs-data.js +152 -0
- package/dist/_internal/server/functions/scheduled.d.ts +2 -1
- package/dist/_internal/server/functions/scheduled.js +9 -1
- package/dist/_internal/server/jobs/core/jobRunners.js +10 -0
- package/dist/_internal/server/jobs/core/newsletterExport.d.ts +15 -0
- package/dist/_internal/server/jobs/core/newsletterExport.js +43 -0
- package/dist/_internal/server/jobs/core/onOrderCreate.d.ts +4 -12
- package/dist/_internal/server/jobs/core/onOrderCreate.js +3 -3
- package/dist/_internal/server/jobs/core/onOrderStatusChange.d.ts +2 -0
- package/dist/_internal/server/jobs/core/onOrderStatusChange.js +1 -0
- package/dist/_internal/server/jobs/core/onProductWrite.js +14 -2
- package/dist/_internal/server/jobs/core/paymentWindowTimeout.js +1 -0
- package/dist/_internal/server/jobs/core/pendingOrderTimeout.js +1 -0
- package/dist/_internal/server/jobs/core/revenueRollup.d.ts +13 -0
- package/dist/_internal/server/jobs/core/revenueRollup.js +22 -0
- package/dist/_internal/server/jobs/core/whatsappNotify.d.ts +35 -0
- package/dist/_internal/server/jobs/core/whatsappNotify.js +82 -0
- package/dist/_internal/server/jobs/handlers/index.d.ts +1 -0
- package/dist/_internal/server/jobs/handlers/index.js +1 -0
- package/dist/_internal/server/jobs/handlers/revenueRollup.d.ts +2 -0
- package/dist/_internal/server/jobs/handlers/revenueRollup.js +2 -0
- package/dist/_internal/shared/features/auctions/config.d.ts +1 -1
- package/dist/_internal/shared/features/auctions/config.js +1 -1
- package/dist/_internal/shared/features/auctions/schema.js +1 -1
- package/dist/_internal/shared/features/cart/schema.js +2 -2
- package/dist/_internal/shared/features/checkout/config.d.ts +7 -0
- package/dist/_internal/shared/features/checkout/config.js +7 -0
- package/dist/_internal/shared/features/events/schema.js +1 -1
- package/dist/_internal/shared/features/orders/schema.js +1 -1
- package/dist/_internal/shared/features/products/schema.js +3 -3
- package/dist/_internal/shared/features/promotions/schema.js +3 -3
- package/dist/_internal/shared/fees/calculator.d.ts +32 -7
- package/dist/_internal/shared/fees/calculator.js +25 -0
- package/dist/client.d.ts +4 -4
- package/dist/client.js +4 -2
- package/dist/constants/api-endpoints.d.ts +9 -6
- package/dist/constants/api-endpoints.js +3 -2
- package/dist/contracts/client-payment-gateway.d.ts +1 -2
- package/dist/features/about/components/AboutView.d.ts +6 -16
- package/dist/features/about/components/AboutView.js +3 -3
- package/dist/features/about/components/FeesView.js +18 -0
- package/dist/features/about/index.d.ts +2 -1
- package/dist/features/about/schemas/firestore.d.ts +47 -0
- package/dist/features/about/schemas/firestore.js +6 -0
- package/dist/features/about/schemas/index.d.ts +210 -0
- package/dist/features/about/schemas/index.js +45 -0
- package/dist/features/account/hooks/useProfile.js +3 -0
- package/dist/features/admin/actions/notification-actions.d.ts +4 -1
- package/dist/features/admin/actions/notification-actions.js +56 -10
- package/dist/features/admin/components/AdminAdsView.js +1 -1
- package/dist/features/admin/components/AdminCarouselGroupEditorView.d.ts +6 -0
- package/dist/features/admin/components/AdminCarouselGroupEditorView.js +50 -0
- package/dist/features/admin/components/AdminCartsView.js +16 -3
- package/dist/features/admin/components/AdminCouponEditorView.js +2 -2
- package/dist/features/admin/components/AdminCouponsView.js +14 -4
- package/dist/features/admin/components/AdminEmployeeEditorView.js +1 -42
- package/dist/features/admin/components/AdminMediaView.js +1 -1
- package/dist/features/admin/components/AdminNewsletterView.js +42 -11
- package/dist/features/admin/components/AdminNotificationsView.js +31 -19
- package/dist/features/admin/components/AdminOrdersView.js +7 -0
- package/dist/features/admin/components/AdminPayoutsView.js +18 -3
- package/dist/features/admin/components/AdminProductsView.js +17 -2
- package/dist/features/admin/components/AdminReviewsView.js +16 -2
- package/dist/features/admin/components/AdminScammersView.js +7 -0
- package/dist/features/admin/components/AdminSectionsView.js +4 -0
- package/dist/features/admin/components/AdminSiteConfigGuideView.js +1 -1
- package/dist/features/admin/components/AdminSiteSettingsView.js +127 -8
- package/dist/features/admin/components/AdminStoreEditorView.d.ts +2 -1
- package/dist/features/admin/components/AdminStoreEditorView.js +4 -4
- package/dist/features/admin/components/AdminStoresView.js +1 -1
- package/dist/features/admin/components/AdminSupportTicketDetailView.js +23 -5
- package/dist/features/admin/components/AdminSupportTicketsView.js +20 -2
- package/dist/features/admin/components/AdminTesterChecklistItemEditorView.js +4 -1
- package/dist/features/admin/components/AdminTesterChecklistView.js +8 -0
- package/dist/features/admin/components/index.d.ts +2 -0
- package/dist/features/admin/components/index.js +1 -0
- package/dist/features/admin/constants/filter-tabs.d.ts +55 -41
- package/dist/features/admin/constants/filter-tabs.js +55 -27
- package/dist/features/admin/repository/analytics-rollup.repository.d.ts +25 -0
- package/dist/features/admin/repository/analytics-rollup.repository.js +31 -0
- package/dist/features/admin/repository/site-settings.repository.js +8 -1
- package/dist/features/admin/schemas/firestore.d.ts +46 -0
- package/dist/features/admin/schemas/firestore.js +62 -24
- package/dist/features/auctions/actions/bid-actions.js +1 -1
- package/dist/features/auctions/components/AuctionDetailPageView.js +2 -2
- package/dist/features/auctions/components/AuctionsListView.js +8 -1
- package/dist/features/auth/components/LoginForm.js +2 -2
- package/dist/features/auth/components/RegisterForm.js +2 -2
- package/dist/features/auth/permissions/constants.d.ts +16 -0
- package/dist/features/auth/permissions/constants.js +53 -0
- package/dist/features/auth/schemas/firestore.js +1 -0
- package/dist/features/blog/components/BlogFilters.js +1 -1
- package/dist/features/cart/schemas/firestore.d.ts +1 -1
- package/dist/features/categories/schemas/firestore.d.ts +1 -1
- package/dist/features/consultation/components/ConsultationForm.js +1 -1
- package/dist/features/events/components/EventFilters.js +2 -0
- package/dist/features/homepage/components/WelcomeSection.js +2 -2
- package/dist/features/layout/BackToTop.d.ts +9 -5
- package/dist/features/layout/BackToTop.js +17 -21
- package/dist/features/layout/TitleBarLayout.d.ts +2 -2
- package/dist/features/layout/TitleBarLayout.js +4 -4
- package/dist/features/media/AvatarUpload.js +7 -3
- package/dist/features/media/MediaVideo.js +1 -1
- package/dist/features/media/finalize.d.ts +9 -13
- package/dist/features/media/finalize.js +23 -74
- package/dist/features/media/server.d.ts +1 -1
- package/dist/features/media/server.js +1 -1
- package/dist/features/orders/actions/refund-actions.js +1 -0
- package/dist/features/orders/hooks/useOrders.js +16 -4
- package/dist/features/orders/schemas/firestore.d.ts +19 -5
- package/dist/features/payments/schemas/firestore.d.ts +2 -2
- package/dist/features/pre-orders/components/PreOrdersListView.js +7 -0
- package/dist/features/products/components/ArtStickersListView.js +5 -0
- package/dist/features/products/components/ProductDetailPageView.d.ts +7 -1
- package/dist/features/products/components/ProductForm.js +14 -1
- package/dist/features/products/components/ProductsIndexPageView.js +7 -0
- package/dist/features/products/constants/action-defs.d.ts +29 -3
- package/dist/features/products/constants/action-defs.js +77 -1
- package/dist/features/products/schemas/firestore.d.ts +1 -1
- package/dist/features/products/schemas/product-templates.d.ts +1 -1
- package/dist/features/products/types/index.d.ts +4 -0
- package/dist/features/scams/schemas/index.js +2 -2
- package/dist/features/search/components/Search.js +3 -3
- package/dist/features/seller/components/SellerAuctionsView.js +27 -2
- package/dist/features/seller/components/SellerOrdersView.js +2 -2
- package/dist/features/seller/components/SellerPayoutsView.js +24 -10
- package/dist/features/seller/components/SellerPreOrdersView.js +12 -4
- package/dist/features/seller/components/SellerPrizeDrawsView.js +23 -5
- package/dist/features/seller/components/SellerProductShell.d.ts +2 -0
- package/dist/features/seller/components/SellerProductShell.js +1 -1
- package/dist/features/seller/components/SellerProductsView.js +8 -6
- package/dist/features/seller/components/SellerReviewsView.js +27 -6
- package/dist/features/seller/components/index.d.ts +0 -2
- package/dist/features/seller/components/index.js +0 -1
- package/dist/features/stores/components/StoreListingsGuideView.js +2 -1
- package/dist/features/stores/components/StoreProductsView.js +1 -1
- package/dist/features/stores/schemas/firestore.d.ts +11 -0
- package/dist/features/stores/schemas/firestore.js +5 -0
- package/dist/features/stores/schemas/index.d.ts +2 -2
- package/dist/features/tester/actions/checklist-item-actions.d.ts +6 -0
- package/dist/features/tester/actions/checklist-item-actions.js +2 -0
- package/dist/features/tester/components/AdminTesterFeedbackIssuesView.js +13 -2
- package/dist/features/tester/components/AdminTesterFeedbackListView.js +2 -1
- package/dist/features/tester/components/AdminTesterFeedbackReportView.js +9 -5
- package/dist/features/tester/components/TesterHubView.js +34 -21
- package/dist/features/tester/repository/tester-checklist-item.repository.js +1 -0
- package/dist/features/tester/repository/tester-checklist-response.repository.d.ts +18 -4
- package/dist/features/tester/repository/tester-checklist-response.repository.js +43 -8
- package/dist/features/tester/schemas/firestore.d.ts +8 -3
- package/dist/features/tester/schemas/firestore.js +6 -0
- package/dist/features/tester/seed-data/tester-checklist-seed-data.js +21 -9
- package/dist/features/tester/utils/phases.d.ts +31 -0
- package/dist/features/tester/utils/phases.js +46 -0
- package/dist/features/whatsapp-bot/components/SellerWhatsAppSettingsView.js +1 -1
- package/dist/features/whatsapp-bot/helpers/whatsapp.d.ts +10 -1
- package/dist/features/whatsapp-bot/helpers/whatsapp.js +47 -0
- package/dist/features/whatsapp-bot/types/index.d.ts +20 -1
- package/dist/features/wishlist/types/index.d.ts +3 -0
- package/dist/index.d.ts +15 -6
- package/dist/index.js +19 -9
- package/dist/next/components/NotFoundView.js +2 -1
- package/dist/next/routing/route-map.d.ts +6 -12
- package/dist/next/routing/route-map.js +3 -4
- package/dist/providers/db-firebase/admin.d.ts +1 -0
- package/dist/providers/db-firebase/admin.js +1 -1
- package/dist/repositories/index.d.ts +2 -0
- package/dist/repositories/index.js +1 -0
- package/dist/schemas/registry.d.ts +2 -2
- package/dist/seed/addresses-seed-data.js +18 -18
- package/dist/seed/bids-seed-data.js +4 -4
- package/dist/seed/blog-posts-seed-data.js +82 -82
- package/dist/seed/carousel-slides-seed-data.js +14 -10
- package/dist/seed/carousels-seed-data.js +3 -3
- package/dist/seed/cart-seed-data.js +92 -92
- package/dist/seed/claimed-coupons-seed-data.js +10 -10
- package/dist/seed/conversations-seed-data.js +75 -75
- package/dist/seed/coupon-usage-seed-data.js +12 -12
- package/dist/seed/coupons-seed-data.js +41 -41
- package/dist/seed/events-seed-data.js +105 -105
- package/dist/seed/grouped-listings-seed-data.d.ts +2 -137
- package/dist/seed/grouped-listings-seed-data.js +79 -143
- package/dist/seed/history-seed-data.js +38 -38
- package/dist/seed/homepage-sections-seed-data.js +9 -9
- package/dist/seed/notifications-seed-data.js +56 -56
- package/dist/seed/offers-seed-data.js +91 -91
- package/dist/seed/orders-seed-data.js +121 -106
- package/dist/seed/payouts-seed-data.js +42 -42
- package/dist/seed/products-auctions-seed-data.js +10 -2
- package/dist/seed/products-standard-seed-data.js +40 -8
- package/dist/seed/reviews-seed-data.js +42 -23
- package/dist/seed/scammers-seed-data.js +22 -22
- package/dist/seed/sessions-seed-data.js +7 -7
- package/dist/seed/shipments-seed-data.js +10 -10
- package/dist/seed/site-settings-seed-data.js +89 -0
- package/dist/seed/store-addresses-seed-data.js +2 -2
- package/dist/seed/store-extensions-seed-data.js +93 -93
- package/dist/seed/stores-seed-data.js +2 -0
- package/dist/seed/support-tickets-seed-data.js +47 -47
- package/dist/seed/users-seed-data.js +55 -89
- package/dist/seed/wishlists-seed-data.js +22 -22
- package/dist/server.d.ts +4 -3
- package/dist/server.js +7 -7
- package/dist/styles.css +1 -1
- package/dist/tailwind-utilities.css +1 -1
- package/dist/ui/components/PageLoader.js +8 -3
- package/dist/ui/components/Select.d.ts +8 -1
- package/dist/ui/components/Select.js +2 -2
- package/dist/ui/components/SiteMark.d.ts +23 -0
- package/dist/ui/components/SiteMark.js +76 -0
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +1 -0
- package/dist/validation/schemas.d.ts +0 -2
- package/dist/validation/schemas.js +0 -2
- package/package.json +1 -1
- package/scripts/seed-cli.mjs +17 -15
|
@@ -43,7 +43,11 @@ const _rawProductsStandardSeedData = [
|
|
|
43
43
|
availableQuantity: 4,
|
|
44
44
|
isSold: false,
|
|
45
45
|
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-original-dranzer-s-1-20260101/900/900"),
|
|
46
|
-
images: [
|
|
46
|
+
images: [
|
|
47
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-original-dranzer-s-1-20260101/900/900"),
|
|
48
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-original-dranzer-s-2-20260101/900/900"),
|
|
49
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-original-dranzer-s-3-20260101/900/900"),
|
|
50
|
+
],
|
|
47
51
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
48
52
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.LIKE_NEW,
|
|
49
53
|
featured: true,
|
|
@@ -68,7 +72,11 @@ const _rawProductsStandardSeedData = [
|
|
|
68
72
|
availableQuantity: 2,
|
|
69
73
|
isSold: false,
|
|
70
74
|
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-original-driger-v-1-20260101/900/900"),
|
|
71
|
-
images: [
|
|
75
|
+
images: [
|
|
76
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-original-driger-v-1-20260101/900/900"),
|
|
77
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-original-driger-v-2-20260101/900/900"),
|
|
78
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-original-driger-v-3-20260101/900/900"),
|
|
79
|
+
],
|
|
72
80
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
73
81
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.GOOD,
|
|
74
82
|
storeId: "store-beyblade-arena",
|
|
@@ -93,7 +101,11 @@ const _rawProductsStandardSeedData = [
|
|
|
93
101
|
availableQuantity: 6,
|
|
94
102
|
isSold: false,
|
|
95
103
|
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-storm-pegasus-1-20260101/900/900"),
|
|
96
|
-
images: [
|
|
104
|
+
images: [
|
|
105
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-storm-pegasus-1-20260101/900/900"),
|
|
106
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-storm-pegasus-2-20260101/900/900"),
|
|
107
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-storm-pegasus-3-20260101/900/900"),
|
|
108
|
+
],
|
|
97
109
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
98
110
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
99
111
|
featured: true,
|
|
@@ -118,7 +130,11 @@ const _rawProductsStandardSeedData = [
|
|
|
118
130
|
availableQuantity: 3,
|
|
119
131
|
isSold: false,
|
|
120
132
|
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-flame-sagittario-1-20260101/900/900"),
|
|
121
|
-
images: [
|
|
133
|
+
images: [
|
|
134
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-flame-sagittario-1-20260101/900/900"),
|
|
135
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-flame-sagittario-2-20260101/900/900"),
|
|
136
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-metal-flame-sagittario-3-20260101/900/900"),
|
|
137
|
+
],
|
|
122
138
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
123
139
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
124
140
|
storeId: "store-beyblade-arena",
|
|
@@ -143,7 +159,11 @@ const _rawProductsStandardSeedData = [
|
|
|
143
159
|
availableQuantity: 10,
|
|
144
160
|
isSold: false,
|
|
145
161
|
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-valkyrie-1-20260101/900/900"),
|
|
146
|
-
images: [
|
|
162
|
+
images: [
|
|
163
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-valkyrie-1-20260101/900/900"),
|
|
164
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-valkyrie-2-20260101/900/900"),
|
|
165
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-valkyrie-3-20260101/900/900"),
|
|
166
|
+
],
|
|
147
167
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
148
168
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
149
169
|
featured: true,
|
|
@@ -168,7 +188,11 @@ const _rawProductsStandardSeedData = [
|
|
|
168
188
|
availableQuantity: 5,
|
|
169
189
|
isSold: false,
|
|
170
190
|
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-regalia-genesis-1-20260101/900/900"),
|
|
171
|
-
images: [
|
|
191
|
+
images: [
|
|
192
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-regalia-genesis-1-20260101/900/900"),
|
|
193
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-regalia-genesis-2-20260101/900/900"),
|
|
194
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-burst-regalia-genesis-3-20260101/900/900"),
|
|
195
|
+
],
|
|
172
196
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
173
197
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
174
198
|
storeId: "store-beyblade-arena",
|
|
@@ -193,7 +217,11 @@ const _rawProductsStandardSeedData = [
|
|
|
193
217
|
availableQuantity: 12,
|
|
194
218
|
isSold: false,
|
|
195
219
|
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-x-wizard-arrow-1-20260101/900/900"),
|
|
196
|
-
images: [
|
|
220
|
+
images: [
|
|
221
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-x-wizard-arrow-1-20260101/900/900"),
|
|
222
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-x-wizard-arrow-2-20260101/900/900"),
|
|
223
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-x-wizard-arrow-3-20260101/900/900"),
|
|
224
|
+
],
|
|
197
225
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
198
226
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
199
227
|
featured: true,
|
|
@@ -218,7 +246,11 @@ const _rawProductsStandardSeedData = [
|
|
|
218
246
|
availableQuantity: 7,
|
|
219
247
|
isSold: false,
|
|
220
248
|
mainImage: seedExtMedia("https://picsum.photos/seed/product-image-beyblade-x-knife-shinobi-1-20260101/900/900"),
|
|
221
|
-
images: [
|
|
249
|
+
images: [
|
|
250
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-x-knife-shinobi-1-20260101/900/900"),
|
|
251
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-x-knife-shinobi-2-20260101/900/900"),
|
|
252
|
+
seedExtMedia("https://picsum.photos/seed/product-image-beyblade-x-knife-shinobi-3-20260101/900/900"),
|
|
253
|
+
],
|
|
222
254
|
status: PRODUCT_FIELDS.STATUS_VALUES.PUBLISHED,
|
|
223
255
|
condition: PRODUCT_FIELDS.CONDITION_VALUES.NEW,
|
|
224
256
|
storeId: "store-beyblade-arena",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* WHY: Seeds product reviews from buyers across
|
|
3
|
-
* WHAT: Exports 65 reviews spread across
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* WHY: Seeds product reviews from buyers across the Beyblade catalog on the marketplace.
|
|
3
|
+
* WHAT: Exports 65 reviews spread across the 14 real Beyblade products. Ratings 3–5 stars, mix
|
|
4
|
+
* of verified/unverified. Seller responses on ~16 reviews. Images (1-3, seedExtMedia
|
|
5
|
+
* picsum) on ~11 reviews; a video (raw external mp4 + seedExtMedia thumbnail) on 5 reviews.
|
|
6
6
|
*
|
|
7
7
|
* EXPORTS:
|
|
8
8
|
* reviewsSeedData — Array of 65 review documents
|
|
@@ -14,8 +14,13 @@
|
|
|
14
14
|
* @tag consumers:seed/index.ts,seed/runner.ts
|
|
15
15
|
* @tag sideEffects:none
|
|
16
16
|
*/
|
|
17
|
+
import { seedExtMedia } from "./_helpers/media";
|
|
17
18
|
const NOW = new Date();
|
|
18
19
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
20
|
+
// Public, direct-playable sample MP4 — review.video.url renders through a raw
|
|
21
|
+
// <video src> element (ReviewDetailShell.tsx), NOT the /api/media/ext image
|
|
22
|
+
// proxy, so it must stay an unwrapped external URL (never seedExtMedia()).
|
|
23
|
+
const SAMPLE_VIDEO_URL = "https://storage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4"; // audit-seed-external-url-ok: raw <video> src, /api/media/ext is image-only (Root Cause #27)
|
|
19
24
|
const reviewTemplates = [
|
|
20
25
|
{ title: "Excellent quality and fast shipping!", comment: "Received exactly as described. Item is in perfect condition. Will buy again!", rating: 5 },
|
|
21
26
|
{ title: "Good condition, minor wear", comment: "Arrived safely but has slight edge wear. Still happy with the purchase overall.", rating: 4 },
|
|
@@ -49,26 +54,27 @@ const sellerReplies = [
|
|
|
49
54
|
"We appreciate the honest feedback. We'll look into the packaging issue.",
|
|
50
55
|
];
|
|
51
56
|
const products = [
|
|
52
|
-
{ id: "
|
|
53
|
-
{ id: "
|
|
54
|
-
{ id: "
|
|
55
|
-
{ id: "
|
|
56
|
-
{ id: "
|
|
57
|
-
{ id: "
|
|
58
|
-
{ id: "product-
|
|
59
|
-
{ id: "product-
|
|
60
|
-
{ id: "product-
|
|
61
|
-
{ id: "product-
|
|
62
|
-
{ id: "product-
|
|
63
|
-
{ id: "product-
|
|
64
|
-
{ id: "product-
|
|
65
|
-
{ id: "product-
|
|
66
|
-
{ id: "product-kaiba-figure-15cm", title: "Kaiba 15cm Figure", store: "store-kaiba-corp-cards" },
|
|
57
|
+
{ id: "auction-beyblade-original-dragoon-storm", title: "Beyblade Original Dragoon Storm", store: "store-beyblade-arena" },
|
|
58
|
+
{ id: "auction-beyblade-metal-lightning-l-drago", title: "Beyblade Metal Lightning L-Drago", store: "store-beyblade-arena" },
|
|
59
|
+
{ id: "classified-beyblade-stadium-set", title: "Beyblade Stadium Set", store: "store-beyblade-arena" },
|
|
60
|
+
{ id: "digitalcode-beyblade-x-app-unlock", title: "Beyblade X App Unlock Code", store: "store-beyblade-arena" },
|
|
61
|
+
{ id: "preorder-beyblade-x-bx-08-wave", title: "Beyblade X BX-08 Wave", store: "store-beyblade-arena" },
|
|
62
|
+
{ id: "prizedraw-beyblade-mystery-box", title: "Beyblade Mystery Box", store: "store-letitrip-official" },
|
|
63
|
+
{ id: "product-beyblade-original-dranzer-s", title: "Beyblade Original Dranzer S", store: "store-beyblade-arena" },
|
|
64
|
+
{ id: "product-beyblade-original-driger-v", title: "Beyblade Original Driger V", store: "store-beyblade-arena" },
|
|
65
|
+
{ id: "product-beyblade-metal-storm-pegasus", title: "Beyblade Metal Storm Pegasus", store: "store-beyblade-arena" },
|
|
66
|
+
{ id: "product-beyblade-metal-flame-sagittario", title: "Beyblade Metal Flame Sagittario", store: "store-beyblade-arena" },
|
|
67
|
+
{ id: "product-beyblade-burst-valkyrie", title: "Beyblade Burst Valkyrie", store: "store-beyblade-arena" },
|
|
68
|
+
{ id: "product-beyblade-burst-regalia-genesis", title: "Beyblade Burst Regalia Genesis", store: "store-beyblade-arena" },
|
|
69
|
+
{ id: "product-beyblade-x-wizard-arrow", title: "Beyblade X Wizard Arrow", store: "store-beyblade-arena" },
|
|
70
|
+
{ id: "product-beyblade-x-knife-shinobi", title: "Beyblade X Knife Shinobi", store: "store-beyblade-arena" },
|
|
67
71
|
];
|
|
68
72
|
const buyers = [
|
|
69
|
-
{ id: "user-yugi-muto", name: "
|
|
70
|
-
{ id: "user-admin-letitrip", name: "
|
|
71
|
-
{ id: "user-seto-kaiba", name: "
|
|
73
|
+
{ id: "user-yugi-muto", name: "Mock User 3" },
|
|
74
|
+
{ id: "user-admin-letitrip", name: "Mock User 1" },
|
|
75
|
+
{ id: "user-seto-kaiba", name: "Mock User 2" },
|
|
76
|
+
{ id: "user-meera-bey", name: "Mock User 11" },
|
|
77
|
+
{ id: "user-rohit-collector", name: "Mock User 14" },
|
|
72
78
|
];
|
|
73
79
|
const _rawReviewsSeedData = [];
|
|
74
80
|
for (let i = 0; i < 65; i++) {
|
|
@@ -77,7 +83,11 @@ for (let i = 0; i < 65; i++) {
|
|
|
77
83
|
const buyer = buyers[i % buyers.length];
|
|
78
84
|
const daysAgoCreated = 90 - i;
|
|
79
85
|
const hasSellerReply = i % 4 === 0;
|
|
86
|
+
// ~17% of reviews ("detailed" ones) carry buyer-submitted photos.
|
|
80
87
|
const hasImage = i % 6 === 0;
|
|
88
|
+
const imageCount = (i % 3) + 1;
|
|
89
|
+
// A smaller handful (5 of 65) also carry an unboxing/battle-test video.
|
|
90
|
+
const hasVideo = i % 13 === 0;
|
|
81
91
|
_rawReviewsSeedData.push({
|
|
82
92
|
id: `review-${i + 1}`,
|
|
83
93
|
productId: product.id,
|
|
@@ -88,8 +98,17 @@ for (let i = 0; i < 65; i++) {
|
|
|
88
98
|
rating: template.rating,
|
|
89
99
|
title: template.title,
|
|
90
100
|
comment: template.comment,
|
|
91
|
-
images: hasImage
|
|
101
|
+
images: hasImage
|
|
102
|
+
? Array.from({ length: imageCount }, (_, n) => seedExtMedia(`https://picsum.photos/seed/review-image-${product.id}-${i + 1}-${n + 1}/800/800`))
|
|
103
|
+
: [],
|
|
92
104
|
hasImages: hasImage,
|
|
105
|
+
video: hasVideo
|
|
106
|
+
? {
|
|
107
|
+
url: SAMPLE_VIDEO_URL,
|
|
108
|
+
thumbnailUrl: seedExtMedia(`https://picsum.photos/seed/review-video-thumb-${product.id}-${i + 1}/800/450`),
|
|
109
|
+
duration: 18 + (i % 5) * 6,
|
|
110
|
+
}
|
|
111
|
+
: undefined,
|
|
93
112
|
verified: i % 3 !== 2,
|
|
94
113
|
status: "approved",
|
|
95
114
|
helpfulCount: Math.floor(Math.random() * 20),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* WHY: Seeds scammer profiles for
|
|
3
|
-
* WHAT: 1 verified, 1 pending_review, 1 rejected. Fictional
|
|
2
|
+
* WHY: Seeds scammer profiles for the collectibles marketplace — 3 profiles covering the full status workflow.
|
|
3
|
+
* WHAT: 1 verified, 1 pending_review, 1 rejected. Fictional Beyblade-related scam scenarios.
|
|
4
4
|
*
|
|
5
5
|
* EXPORTS:
|
|
6
6
|
* scammersSeedData — Array of Partial<ScammerDocument> for seed runner
|
|
@@ -21,20 +21,20 @@ export const scammersSeedData = [
|
|
|
21
21
|
{
|
|
22
22
|
id: "scammer-fake-lob-seller",
|
|
23
23
|
seoSlug: "scammer-fake-lob-seller",
|
|
24
|
-
displayNames: ["
|
|
24
|
+
displayNames: ["Bey_King_India", "Rare Blades Official"],
|
|
25
25
|
phones: ["9876543210", "8765432109"],
|
|
26
|
-
upiIds: ["9876543210@paytm", "
|
|
27
|
-
emails: ["
|
|
26
|
+
upiIds: ["9876543210@paytm", "beykingblades@okicici"],
|
|
27
|
+
emails: ["beykingblades.fake@gmail.com"],
|
|
28
28
|
socialMedia: [
|
|
29
|
-
{ platform: "instagram", handle: "
|
|
29
|
+
{ platform: "instagram", handle: "bey_king_india_official", url: "https://instagram.com/bey_king_india_official" },
|
|
30
30
|
{ platform: "whatsapp", handle: "9876543210" },
|
|
31
31
|
],
|
|
32
32
|
scamType: "advance_payment_ghost",
|
|
33
33
|
scamPlatform: "whatsapp",
|
|
34
|
-
description: "Seller listed
|
|
35
|
-
amountLost:
|
|
36
|
-
itemInvolved: "
|
|
37
|
-
evidence: [seedExtMedia("https://picsum.photos/seed/scammer-evidence-
|
|
34
|
+
description: "Seller listed an original-series Dranzer S sealed launcher set on a Facebook group for ₹2,500 — significantly below market. When I messaged, he asked for ₹500 advance to 'hold' the set before shipping. After I paid via UPI (9876543210@paytm), he went silent. The account name on UPI matched 'Bey King'. Later found 2 more people in the same group who had the same experience with the same UPI ID.",
|
|
35
|
+
amountLost: 500,
|
|
36
|
+
itemInvolved: "Beyblade Original Dranzer S — Sealed Launcher Set",
|
|
37
|
+
evidence: [seedExtMedia("https://picsum.photos/seed/scammer-evidence-beyking-chat-screenshot-20260402/800/600")],
|
|
38
38
|
reportedBy: "user-yugi-muto",
|
|
39
39
|
reportedByAnon: false,
|
|
40
40
|
status: SCAMMER_FIELDS.STATUS_VALUES.VERIFIED,
|
|
@@ -54,21 +54,21 @@ export const scammersSeedData = [
|
|
|
54
54
|
},
|
|
55
55
|
// ── 2. Pending review — fake pre-order listing ────────────────────────────────
|
|
56
56
|
{
|
|
57
|
-
id: "scammer-fake-
|
|
58
|
-
seoSlug: "scammer-fake-
|
|
59
|
-
displayNames: ["
|
|
57
|
+
id: "scammer-fake-takara-tomy-preorder",
|
|
58
|
+
seoSlug: "scammer-fake-takara-tomy-preorder",
|
|
59
|
+
displayNames: ["TakaraTomy_Agent_India", "TT India Blades"],
|
|
60
60
|
phones: ["7654321098"],
|
|
61
|
-
upiIds: ["
|
|
62
|
-
emails: ["
|
|
61
|
+
upiIds: ["takaratomyagentindia@ybl"],
|
|
62
|
+
emails: ["takaratomy.agent.india@gmail.com"],
|
|
63
63
|
socialMedia: [
|
|
64
|
-
{ platform: "instagram", handle: "
|
|
65
|
-
{ platform: "telegram", handle: "
|
|
64
|
+
{ platform: "instagram", handle: "takaratomy_agent_india_official" },
|
|
65
|
+
{ platform: "telegram", handle: "takaratomy_agent_india" },
|
|
66
66
|
],
|
|
67
67
|
scamType: "fake_preorder_listing",
|
|
68
68
|
scamPlatform: "instagram",
|
|
69
|
-
description: "Account posed as an authorized pre-order agent for the upcoming
|
|
70
|
-
amountLost:
|
|
71
|
-
itemInvolved: "
|
|
69
|
+
description: "Account posed as an authorized pre-order agent for the upcoming Beyblade X BX-08 wave. Collected ₹800 from me for a 'guaranteed allocation slot' via UPI. Instagram profile had ~4,000 followers (likely bought) and fake order screenshots. After payment, the account blocked me. Similar reports found on Reddit r/BeybladeIndia.",
|
|
70
|
+
amountLost: 800,
|
|
71
|
+
itemInvolved: "Beyblade X BX-08 Wave (fake pre-order)",
|
|
72
72
|
evidence: [],
|
|
73
73
|
reportedBy: "user-seto-kaiba",
|
|
74
74
|
reportedByAnon: true,
|
|
@@ -95,9 +95,9 @@ export const scammersSeedData = [
|
|
|
95
95
|
socialMedia: [],
|
|
96
96
|
scamType: "empty_box_ship",
|
|
97
97
|
scamPlatform: "olx",
|
|
98
|
-
description: "Sold a sealed
|
|
98
|
+
description: "Sold a sealed Beyblade Burst Regalia Genesis on OLX, buyer claims item never arrived but tracking shows delivered. Buyer opened a scam report. Seller provided courier tracking + photograph of sealed package at drop-off. Report rejected after review.",
|
|
99
99
|
amountLost: 0,
|
|
100
|
-
itemInvolved: "
|
|
100
|
+
itemInvolved: "Beyblade Burst Regalia Genesis — Sealed",
|
|
101
101
|
evidence: [],
|
|
102
102
|
reportedBy: "user-yugi-muto",
|
|
103
103
|
reportedByAnon: false,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* WHY: Seeds user sessions for
|
|
2
|
+
* WHY: Seeds user sessions for the Beyblade marketplace — 3 users, mix of active/expired/revoked.
|
|
3
3
|
* WHAT: 5 sessions total (3 active, 1 expired, 1 revoked). Covers desktop + mobile, multi-device.
|
|
4
4
|
*
|
|
5
5
|
* EXPORTS:
|
|
@@ -38,7 +38,7 @@ export const sessionsSeedData = [
|
|
|
38
38
|
expiresAt: daysAhead(25),
|
|
39
39
|
isActive: true,
|
|
40
40
|
},
|
|
41
|
-
//
|
|
41
|
+
// Rehan — Chrome Android (active)
|
|
42
42
|
{
|
|
43
43
|
id: "session-yugi-chrome-android-001",
|
|
44
44
|
userId: "user-yugi-muto",
|
|
@@ -49,13 +49,13 @@ export const sessionsSeedData = [
|
|
|
49
49
|
device: "Mobile",
|
|
50
50
|
ip: "203.0.113.10",
|
|
51
51
|
},
|
|
52
|
-
location: { country: _locale.countryName, city: "
|
|
52
|
+
location: { country: _locale.countryName, city: "Indore" },
|
|
53
53
|
createdAt: daysAgo(3),
|
|
54
54
|
lastActivity: daysAgo(0),
|
|
55
55
|
expiresAt: daysAhead(27),
|
|
56
56
|
isActive: true,
|
|
57
57
|
},
|
|
58
|
-
//
|
|
58
|
+
// Vivaan — Safari macOS (active)
|
|
59
59
|
{
|
|
60
60
|
id: "session-kaiba-safari-mac-001",
|
|
61
61
|
userId: "user-seto-kaiba",
|
|
@@ -66,13 +66,13 @@ export const sessionsSeedData = [
|
|
|
66
66
|
device: "Desktop",
|
|
67
67
|
ip: "203.0.113.20",
|
|
68
68
|
},
|
|
69
|
-
location: { country: _locale.countryName, city: "
|
|
69
|
+
location: { country: _locale.countryName, city: "Nagpur" },
|
|
70
70
|
createdAt: daysAgo(2),
|
|
71
71
|
lastActivity: daysAgo(0),
|
|
72
72
|
expiresAt: daysAhead(28),
|
|
73
73
|
isActive: true,
|
|
74
74
|
},
|
|
75
|
-
//
|
|
75
|
+
// Rehan — expired old session
|
|
76
76
|
{
|
|
77
77
|
id: "session-yugi-expired-001",
|
|
78
78
|
userId: "user-yugi-muto",
|
|
@@ -83,7 +83,7 @@ export const sessionsSeedData = [
|
|
|
83
83
|
device: "Mobile",
|
|
84
84
|
ip: "203.0.113.11",
|
|
85
85
|
},
|
|
86
|
-
location: { country: _locale.countryName, city: "
|
|
86
|
+
location: { country: _locale.countryName, city: "Indore" },
|
|
87
87
|
createdAt: daysAgo(40),
|
|
88
88
|
lastActivity: daysAgo(36),
|
|
89
89
|
expiresAt: daysAgo(35),
|
|
@@ -87,20 +87,20 @@ const rawLots = [
|
|
|
87
87
|
{ id: "lot-beyblade-02", shipmentId: rawShipments[3].id, lotName: "Launchers + stadiums", supplierOrderRef: "BA-3302", weightGrams: 2200, purchaseCost: 25000 },
|
|
88
88
|
];
|
|
89
89
|
const rawItems = [
|
|
90
|
-
{ id: "item-tokyo-01a", lotId: "lot-tokyo-01", shipmentId: rawShipments[0].id, title: "Base Set Booster Box (Japanese)", quantity: 6, isForSelfUse: false, price:
|
|
90
|
+
{ id: "item-tokyo-01a", lotId: "lot-tokyo-01", shipmentId: rawShipments[0].id, title: "Base Set Booster Box (Japanese)", quantity: 6, isForSelfUse: false, price: 95000 },
|
|
91
91
|
{ id: "item-tokyo-02a", lotId: "lot-tokyo-02", shipmentId: rawShipments[0].id, title: "Charizard Base Set PSA 9", quantity: 1, isForSelfUse: true },
|
|
92
|
-
{ id: "item-vault-01a", lotId: "lot-vault-01", shipmentId: rawShipments[1].id, title: "Redline Custom Camaro", quantity: 4, isForSelfUse: false, price:
|
|
93
|
-
{ id: "item-vault-01b", lotId: "lot-vault-01", shipmentId: rawShipments[1].id, title: "Redline Python", quantity: 3, isForSelfUse: false, price:
|
|
94
|
-
{ id: "item-vault-02a", lotId: "lot-vault-02", shipmentId: rawShipments[1].id, title: "Matchbox Superfast Truck (sample)", quantity: 2, isForSelfUse: false, price:
|
|
95
|
-
{ id: "item-gundam-01a", lotId: "lot-gundam-01", shipmentId: rawShipments[2].id, title: "MG RX-78-2 Gundam Ver 3.0", quantity: 8, isForSelfUse: false, price:
|
|
92
|
+
{ id: "item-vault-01a", lotId: "lot-vault-01", shipmentId: rawShipments[1].id, title: "Redline Custom Camaro", quantity: 4, isForSelfUse: false, price: 18000 },
|
|
93
|
+
{ id: "item-vault-01b", lotId: "lot-vault-01", shipmentId: rawShipments[1].id, title: "Redline Python", quantity: 3, isForSelfUse: false, price: 22000 },
|
|
94
|
+
{ id: "item-vault-02a", lotId: "lot-vault-02", shipmentId: rawShipments[1].id, title: "Matchbox Superfast Truck (sample)", quantity: 2, isForSelfUse: false, price: 6500 },
|
|
95
|
+
{ id: "item-gundam-01a", lotId: "lot-gundam-01", shipmentId: rawShipments[2].id, title: "MG RX-78-2 Gundam Ver 3.0", quantity: 8, isForSelfUse: false, price: 21000 },
|
|
96
96
|
{
|
|
97
|
-
id: "item-gundam-01b", lotId: "lot-gundam-01", shipmentId: rawShipments[2].id, title: "MG Sazabi Ver Ka", quantity: 5, isForSelfUse: false, price:
|
|
97
|
+
id: "item-gundam-01b", lotId: "lot-gundam-01", shipmentId: rawShipments[2].id, title: "MG Sazabi Ver Ka", quantity: 5, isForSelfUse: false, price: 28000,
|
|
98
98
|
linkedProductId: "product-gundam-mg-sazabi-ver-ka", linkedProductSlug: "product-gundam-mg-sazabi-ver-ka", linkedProductListingType: "standard",
|
|
99
99
|
},
|
|
100
|
-
{ id: "item-gundam-02a", lotId: "lot-gundam-02", shipmentId: rawShipments[2].id, title: "HG Gunpla assorted mecha", quantity: 20, isForSelfUse: false, price:
|
|
101
|
-
{ id: "item-beyblade-01a", lotId: "lot-beyblade-01", shipmentId: rawShipments[3].id, title: "Beyblade Burst Turbo Achilles", quantity: 15, isForSelfUse: false, price:
|
|
102
|
-
{ id: "item-beyblade-01b", lotId: "lot-beyblade-01", shipmentId: rawShipments[3].id, title: "Beyblade Burst Genesis Valtryek", quantity: 12, isForSelfUse: false, price:
|
|
103
|
-
{ id: "item-beyblade-02a", lotId: "lot-beyblade-02", shipmentId: rawShipments[3].id, title: "Beystadium Extreme", quantity: 6, isForSelfUse: false, price:
|
|
100
|
+
{ id: "item-gundam-02a", lotId: "lot-gundam-02", shipmentId: rawShipments[2].id, title: "HG Gunpla assorted mecha", quantity: 20, isForSelfUse: false, price: 3500 },
|
|
101
|
+
{ id: "item-beyblade-01a", lotId: "lot-beyblade-01", shipmentId: rawShipments[3].id, title: "Beyblade Burst Turbo Achilles", quantity: 15, isForSelfUse: false, price: 5500 },
|
|
102
|
+
{ id: "item-beyblade-01b", lotId: "lot-beyblade-01", shipmentId: rawShipments[3].id, title: "Beyblade Burst Genesis Valtryek", quantity: 12, isForSelfUse: false, price: 6000 },
|
|
103
|
+
{ id: "item-beyblade-02a", lotId: "lot-beyblade-02", shipmentId: rawShipments[3].id, title: "Beystadium Extreme", quantity: 6, isForSelfUse: false, price: 4800 },
|
|
104
104
|
];
|
|
105
105
|
function mainItemsRevenue(lotId) {
|
|
106
106
|
return rawItems
|
|
@@ -65,6 +65,88 @@ export const siteSettingsSeedData = {
|
|
|
65
65
|
alt: "LetItRip Logo",
|
|
66
66
|
format: "svg",
|
|
67
67
|
},
|
|
68
|
+
aboutContent: {
|
|
69
|
+
title: "Every collection has a story. Let It Rip.",
|
|
70
|
+
subtitle: "We built India's marketplace for people who chase the thrill of the find — action figures, trading cards, spinning tops, model kits, and everything in between.",
|
|
71
|
+
missionTitle: "Our Mission",
|
|
72
|
+
missionText: "Collectibles are more than objects — they're the Saturday-morning cartoons we grew up on, the cards we traded at recess, the tops we battled on the playground. LetItRip exists to give India's collectors a place built specifically for that obsession: verified sellers, live auctions that actually feel alive, pre-orders for the drops you can't miss, and an escrow-backed checkout so a rare find never turns into a rare regret. We're not trying to be everything to everyone — we're trying to be the best place on the internet to buy, sell, and obsess over the things you collect.",
|
|
73
|
+
howItWorksTitle: "How It Works",
|
|
74
|
+
howItems: [
|
|
75
|
+
{
|
|
76
|
+
title: "Browse & Discover",
|
|
77
|
+
text: "Search thousands of listings across action figures, trading cards, spinning tops, model kits, and vintage rarities — filtered by category, brand, condition, and price so you find exactly what you're hunting for.",
|
|
78
|
+
icon: "🛒",
|
|
79
|
+
tone: "indigo",
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
title: "Sell With Confidence",
|
|
83
|
+
text: "Open a store in minutes, list with our SEO-friendly slugging and media tools, and get paid through escrow-protected orders — no chasing buyers, no guessing games.",
|
|
84
|
+
icon: "🏪",
|
|
85
|
+
tone: "teal",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
title: "Bid, Win, Rip",
|
|
89
|
+
text: "Live auctions with real-time bidding, transparent history, and instant outbid alerts. When the gavel falls, checkout and shipping are already lined up.",
|
|
90
|
+
icon: "⚡",
|
|
91
|
+
tone: "amber",
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
valuesTitle: "Our Values",
|
|
95
|
+
valueItems: [
|
|
96
|
+
{
|
|
97
|
+
title: "Trust First",
|
|
98
|
+
text: "Every seller is verified, every payment is escrow-protected, and every listing is held to the same authenticity bar we'd want as buyers ourselves.",
|
|
99
|
+
icon: "🛡️",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
title: "Built By Collectors",
|
|
103
|
+
text: "We're not a generic marketplace with a collectibles tab bolted on — every feature, from grading fields to condition tags, exists because a real collector asked for it.",
|
|
104
|
+
icon: "🤝",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
title: "Move Fast, Ship Fast",
|
|
108
|
+
text: "Rare drops don't wait, and neither do we — from pre-order alerts to 3-7 day delivery, we optimise for the moment you finally get to unbox it.",
|
|
109
|
+
icon: "🚀",
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
milestonesTitle: "Our Journey",
|
|
113
|
+
milestones: [
|
|
114
|
+
{ year: "2024", text: "LetItRip started as a weekend project — a single developer, a spinning-top collection outgrowing its shelf, and a conviction that India's collectors deserved a marketplace built just for them." },
|
|
115
|
+
{ year: "2025", text: "Live auctions, seller storefronts, and escrow-backed checkout shipped — turning a side project into a real marketplace with verified sellers across action figures, trading cards, and model kits." },
|
|
116
|
+
{ year: "2026", text: "Pre-orders, events, raffles, and a mobile-first redesign — built for the community that showed up, bid, sold, and kept coming back." },
|
|
117
|
+
],
|
|
118
|
+
teamTitle: "Who's Behind LetItRip",
|
|
119
|
+
teamSubtitle: "A small team obsessed with the same thing you are — the hunt for the next piece of the collection.",
|
|
120
|
+
teamMembers: [
|
|
121
|
+
{
|
|
122
|
+
name: "Arjun Verma",
|
|
123
|
+
role: "Founder & Developer",
|
|
124
|
+
bio: "Started LetItRip after one too many afternoons hunting for a specific 1st-edition card across a dozen disconnected forums and marketplaces. Built the entire platform — Next.js front end, Firebase backend, the auction engine, the whole thing — the same way most great collections start: one late night at a time. Still personally answers the support inbox.",
|
|
125
|
+
photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-arjun-verma-20260819/400/400"),
|
|
126
|
+
isFounder: true,
|
|
127
|
+
isDeveloper: true,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
name: "Ananya Rao",
|
|
131
|
+
role: "Community & Trust",
|
|
132
|
+
bio: "Keeps the marketplace honest — seller verification, dispute resolution, and the reason LetItRip's escrow system actually works the way it's supposed to. Collects vintage diecast when she isn't reviewing seller applications.",
|
|
133
|
+
photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-ananya-rao-20260819/400/400"),
|
|
134
|
+
isFounder: false,
|
|
135
|
+
isDeveloper: false,
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: "Devansh Mehta",
|
|
139
|
+
role: "Seller Success",
|
|
140
|
+
bio: "Helps new stores go from zero listings to their first sale — onboarding, storefront setup, and the occasional 2 a.m. \"why isn't my auction showing up\" message. Runs a Beyblade collection that has outgrown two apartments.",
|
|
141
|
+
photoUrl: seedExtMedia("https://picsum.photos/seed/letitrip-team-devansh-mehta-20260819/400/400"),
|
|
142
|
+
isFounder: false,
|
|
143
|
+
isDeveloper: false,
|
|
144
|
+
},
|
|
145
|
+
],
|
|
146
|
+
ctaTitle: "Ready to Let It Rip?",
|
|
147
|
+
ctaSell: "Start selling in minutes",
|
|
148
|
+
ctaShop: "Browse the marketplace",
|
|
149
|
+
},
|
|
68
150
|
background: {
|
|
69
151
|
light: {
|
|
70
152
|
type: "gradient",
|
|
@@ -369,6 +451,13 @@ export const siteSettingsSeedData = {
|
|
|
369
451
|
codDepositPercent: 10,
|
|
370
452
|
codHandlingFeeMin: 200,
|
|
371
453
|
codHandlingFeePercent: 10,
|
|
454
|
+
whatsappNotifyFeeEnabled: false,
|
|
455
|
+
whatsappNotifyFee: 10,
|
|
456
|
+
giftWrapFeeEnabled: false,
|
|
457
|
+
giftWrapFee: 49,
|
|
458
|
+
shipmentProtectionFeeEnabled: false,
|
|
459
|
+
shipmentProtectionFeePercent: 2,
|
|
460
|
+
shipmentProtectionFeeMin: 30,
|
|
372
461
|
sellerShippingFixed: 0,
|
|
373
462
|
platformShippingPercent: 0,
|
|
374
463
|
platformShippingFixedMin: 0,
|
|
@@ -24,7 +24,7 @@ export const storeAddressesSeedData = [
|
|
|
24
24
|
id: "saddr-letitrip-hq-001",
|
|
25
25
|
storeSlug: "store-letitrip-official",
|
|
26
26
|
label: "LetItRip HQ",
|
|
27
|
-
fullName: "
|
|
27
|
+
fullName: "Mock User 1",
|
|
28
28
|
phone: `${_phonePrefix}9876500000`,
|
|
29
29
|
addressLine1: "12, Collector's Lane, Okhla Phase III",
|
|
30
30
|
addressLine2: "Tech City Industrial Area",
|
|
@@ -41,7 +41,7 @@ export const storeAddressesSeedData = [
|
|
|
41
41
|
id: "saddr-letitrip-warehouse-002",
|
|
42
42
|
storeSlug: "store-letitrip-official",
|
|
43
43
|
label: "Fulfilment Warehouse",
|
|
44
|
-
fullName: "
|
|
44
|
+
fullName: "Mock User 1",
|
|
45
45
|
phone: `${_phonePrefix}9876500000`,
|
|
46
46
|
addressLine1: "Unit 7B, Connaught Logistics Park, Lajpat Nagar",
|
|
47
47
|
city: "Delhi",
|