Skip to main content

Product Management

Routes:

  • /admin/products — Product list
  • /admin/products/[id] — Product detail
  • /admin/products/[id]/details — Product details view
  • /admin/products/create — Create new product
  • /admin/quick-add — Quick product add (mobile-friendly)

Files:

  • ayts-admin/app/(admin)/products/page.tsx
  • ayts-admin/app/(admin)/products/create/page.tsx
  • ayts-admin/app/admin/quick-add/page.tsx

Auth required: Admin (or Vendor for their own products)

Product List

Table Columns

ColumnSource
Product Imageproducts.image_url (R2)
Product Nameproducts.name
Storestores.name
Categoryproducts.category
Priceproducts.price
Stockproducts.stock_count
Statusproducts.status
ActionsEdit / Delete buttons

Filters

  • By store
  • By category
  • By status (Available / Out of Stock / Archived)

Data Fetching

// Get products (admin sees all)
GET /api/products?storeId={id}&status={status}&limit=20&offset={page}

// Get single product
GET /api/products/{id}

// Create product
POST /api/products
{
storeId, name, description, price, stockCount,
category, imageUrl, additionalImages
}

// Update product
PATCH /api/products/{id}

// Delete product
DELETE /api/products/{id}

Create Product (/admin/products/create)

Fields

  • Store selector (which store this product belongs to)
  • Product name
  • Description
  • Price (₱)
  • Category
  • Stock count
  • Status (Available / Out of Stock)
  • Product images (upload to R2 via POST /api/upload/image)

Quick Add (/admin/quick-add)

Mobile-optimized form for vendors to quickly add products:

  • Minimal fields: name, price, stock, 1 image
  • Single image upload with drag-and-drop
  • Submit → redirects back to product list

Media Upload

Product images upload to Cloudflare R2:

// Upload image
POST /api/upload/image
FormData: { file: File }
{ url: "https://pub-cfc3656f8fe64c31862884b05a8159ad.r2.dev/..." }

// Then save product with the returned URL

Components Used

ComponentFile
ProductCardcomponents/product-card.tsx
ProductGridcomponents/product-grid.tsx
SingleMediaUploadcomponents/single-media-upload.tsx

Known Issues / Status

ItemStatus
Product list✅ Working
Create product✅ Working
Image upload✅ Working
Quick add✅ Working
Bulk product upload⚠️ Partial — needs testing
Test product cleanup❌ Delete "Test GG" before launch