Add OTP-first signup and product catalog PDF uploads.

Signup verifies phone before password; existing Meshkee accounts keep their password. Products can attach an optional PDF catalog (max 2MB) via Pars Pack media.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Alireza Hassani
2026-09-27 08:57:08 +03:30
co-authored by Cursor
parent 4a9e10e614
commit 1a49576752
11 changed files with 699 additions and 43 deletions
+5
View File
@@ -393,6 +393,7 @@ model Media {
instructions instructions[]
workshops workshops[]
featuredProducts Product[] @relation("ProductFeaturedMedia")
catalogProducts Product[] @relation("ProductCatalogMedia")
featuredUserProducts UserProduct[] @relation("UserProductFeaturedMedia")
website_image_slot_items website_image_slot_items[]
website_slider_slides website_slider_slides[]
@@ -524,6 +525,7 @@ model Product {
stockQuantity Int? @map("stock_quantity")
status ContentStatus @default(draft)
featuredMediaId BigInt? @map("featured_media_id")
catalogMediaId BigInt? @map("catalog_media_id")
sortOrder Int @default(0) @map("sort_order")
publishedAt DateTime? @map("published_at") @db.Timestamptz(6)
metadata Json @default("{}")
@@ -541,6 +543,7 @@ model Product {
brand Brand? @relation(fields: [brandId], references: [id], onUpdate: NoAction)
business Business @relation(fields: [businessId], references: [id], onDelete: Cascade, onUpdate: NoAction)
featuredMedia Media? @relation("ProductFeaturedMedia", fields: [featuredMediaId], references: [id], onUpdate: NoAction)
catalogMedia Media? @relation("ProductCatalogMedia", fields: [catalogMediaId], references: [id], onUpdate: NoAction)
shoppingCardItems ShoppingCardItem[]
storeItem StoreItem[]
@@ -549,6 +552,7 @@ model Product {
@@index([brandId], map: "idx_products_brand_id")
@@index([businessId, status], map: "idx_products_business_status")
@@index([businessId, publishedAt(sort: Desc)], map: "idx_products_business_published")
@@index([catalogMediaId], map: "idx_products_catalog_media_id")
@@map("products")
}
@@ -1683,6 +1687,7 @@ model UserProduct {
enum MediaType {
image
video
document
@@map("media_type")
}