# Sprint 3-4: Product Catalog & Cart

**Duration:** Sprint 3-4 (2 weeks)  
**Status:** 🚀 Ready to Start  
**Prerequisites:** ✅ Sprint 1-2 Complete

---

## Objectives

Build out the complete product catalog experience and shopping cart functionality.

### Sprint 3: Product Catalog Enhancement
1. **Product Detail Page** - Full product view with variations
2. **Product Filters** - Category, price, attributes
3. **Product Search** - Real-time search with debouncing
4. **Product Sorting** - Price, popularity, rating, date

### Sprint 4: Shopping Cart
1. **Cart Page** - View and manage cart items
2. **Cart Sidebar** - Quick cart preview
3. **Cart API Integration** - Sync with WooCommerce cart
4. **Coupon Application** - Apply and remove coupons

---

## Sprint 3: Product Catalog Enhancement

### 1. Product Detail Page (`/product/:id`)

**File:** `customer-spa/src/pages/Product/index.tsx`

**Features:**
- Product images gallery with zoom
- Product title, price, description
- Variation selector (size, color, etc.)
- Quantity selector
- Add to cart button
- Related products
- Product reviews (if enabled)

**API Endpoints:**
- `GET /shop/products/:id` - Get product details
- `GET /shop/products/:id/related` - Get related products (optional)

**Components to Create:**
- `ProductGallery.tsx` - Image gallery with thumbnails
- `VariationSelector.tsx` - Select product variations
- `QuantityInput.tsx` - Quantity selector
- `ProductMeta.tsx` - SKU, categories, tags
- `RelatedProducts.tsx` - Related products carousel

---

### 2. Product Filters

**File:** `customer-spa/src/components/Shop/Filters.tsx`

**Features:**
- Category filter (tree structure)
- Price range slider
- Attribute filters (color, size, brand, etc.)
- Stock status filter
- On sale filter
- Clear all filters button

**State Management:**
- Use URL query parameters for filters
- Persist filters in URL for sharing

**Components:**
- `CategoryFilter.tsx` - Hierarchical category tree
- `PriceRangeFilter.tsx` - Price slider
- `AttributeFilter.tsx` - Checkbox list for attributes
- `ActiveFilters.tsx` - Show active filters with remove buttons

---

### 3. Product Search Enhancement

**Current:** Basic search input  
**Enhancement:** Real-time search with suggestions

**Features:**
- Search as you type
- Search suggestions dropdown
- Recent searches
- Popular searches
- Product thumbnails in results
- Keyboard navigation (arrow keys, enter, escape)

**File:** `customer-spa/src/components/Shop/SearchBar.tsx`

---

### 4. Product Sorting

**Features:**
- Sort by: Default, Popularity, Rating, Price (low to high), Price (high to low), Latest
- Dropdown selector
- Persist in URL

**File:** `customer-spa/src/components/Shop/SortDropdown.tsx`

---

## Sprint 4: Shopping Cart

### 1. Cart Page (`/cart`)

**File:** `customer-spa/src/pages/Cart/index.tsx`

**Features:**
- Cart items list with thumbnails
- Quantity adjustment (+ / -)
- Remove item button
- Update cart button
- Cart totals (subtotal, tax, shipping, total)
- Coupon code input
- Proceed to checkout button
- Continue shopping link
- Empty cart state

**Components:**
- `CartItem.tsx` - Single cart item row
- `CartTotals.tsx` - Cart totals summary
- `CouponForm.tsx` - Apply coupon code
- `EmptyCart.tsx` - Empty cart message

---

### 2. Cart Sidebar/Drawer

**File:** `customer-spa/src/components/Cart/CartDrawer.tsx`

**Features:**
- Slide-in from right
- Mini cart items (max 5, then scroll)
- Cart totals
- View cart button
- Checkout button
- Close button
- Backdrop overlay

**Trigger:**
- Click cart icon in header
- Auto-open when item added (optional)

---

### 3. Cart API Integration

**Endpoints:**
- `GET /cart` - Get current cart
- `POST /cart/add` - Add item to cart
- `PUT /cart/update` - Update item quantity
- `DELETE /cart/remove` - Remove item
- `POST /cart/apply-coupon` - Apply coupon
- `DELETE /cart/remove-coupon` - Remove coupon

**State Management:**
- Zustand store already created (`customer-spa/src/lib/cart/store.ts`)
- Sync with WooCommerce session
- Persist cart in localStorage
- Handle cart conflicts (server vs local)

---

### 4. Coupon System

**Features:**
- Apply coupon code
- Show discount amount
- Show coupon description
- Remove coupon button
- Error handling (invalid, expired, usage limit)

**Backend:**
- Already implemented in `CartController.php`
- `POST /cart/apply-coupon`
- `DELETE /cart/remove-coupon`

---

## Technical Considerations

### Performance
- Lazy load product images
- Implement infinite scroll for product grid (optional)
- Cache product data with TanStack Query
- Debounce search and filter inputs

### UX Enhancements
- Loading skeletons for all states
- Optimistic updates for cart actions
- Toast notifications for user feedback
- Smooth transitions and animations
- Mobile-first responsive design

### Error Handling
- Network errors
- Out of stock products
- Invalid variations
- Cart conflicts
- API timeouts

### Accessibility
- Keyboard navigation
- Screen reader support
- Focus management
- ARIA labels
- Color contrast

---

## Implementation Order

### Week 1 (Sprint 3)
1. **Day 1-2:** Product Detail Page
   - Basic layout and product info
   - Image gallery
   - Add to cart functionality

2. **Day 3:** Variation Selector
   - Handle simple and variable products
   - Update price based on variation
   - Validation

3. **Day 4-5:** Filters & Search
   - Category filter
   - Price range filter
   - Search enhancement
   - Sort dropdown

### Week 2 (Sprint 4)
1. **Day 1-2:** Cart Page
   - Cart items list
   - Quantity adjustment
   - Cart totals
   - Coupon application

2. **Day 3:** Cart Drawer
   - Slide-in sidebar
   - Mini cart items
   - Quick actions

3. **Day 4:** Cart API Integration
   - Sync with backend
   - Handle conflicts
   - Error handling

4. **Day 5:** Polish & Testing
   - Responsive design
   - Loading states
   - Error states
   - Cross-browser testing

---

## Success Criteria

### Sprint 3
- ✅ Product detail page displays all product info
- ✅ Variations can be selected and price updates
- ✅ Filters work and update product list
- ✅ Search returns relevant results
- ✅ Sorting works correctly

### Sprint 4
- ✅ Cart page displays all cart items
- ✅ Quantity can be adjusted
- ✅ Items can be removed
- ✅ Coupons can be applied and removed
- ✅ Cart drawer opens and closes smoothly
- ✅ Cart syncs with WooCommerce backend
- ✅ Cart persists across page reloads

---

## Next Steps

1. Review this plan
2. Confirm priorities
3. Start with Product Detail Page
4. Implement features incrementally
5. Test each feature before moving to next

**Ready to start Sprint 3?** 🚀
