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.tsxayts-admin/app/(admin)/products/create/page.tsxayts-admin/app/admin/quick-add/page.tsx
Auth required: Admin (or Vendor for their own products)
Product List
Table Columns
| Column | Source |
|---|---|
| Product Image | products.image_url (R2) |
| Product Name | products.name |
| Store | stores.name |
| Category | products.category |
| Price | products.price |
| Stock | products.stock_count |
| Status | products.status |
| Actions | Edit / 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
| Component | File |
|---|---|
ProductCard | components/product-card.tsx |
ProductGrid | components/product-grid.tsx |
SingleMediaUpload | components/single-media-upload.tsx |
Known Issues / Status
| Item | Status |
|---|---|
| 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 |