Skip to content

[Phase 1] Epic: Storefront #19

@syed-reza98

Description

@syed-reza98

Priority: P0

Phase: 1
Parent Epic: N/A (Top-level epic)
Estimate: 5 days (total for child stories)
Type: Epic

Overview

The Storefront epic delivers the customer-facing e-commerce experience, including dynamic subdomain routing, store homepage templates, product listing/detail pages, shopping cart, and checkout flow. This epic transforms the admin-focused product management into a revenue-generating storefront.

Child Issues

  1. [Phase 1] Dynamic Subdomain Routing #20: [Phase 1] Dynamic Subdomain Routing \u2705 Complete

    • Middleware-based subdomain extraction (store.stormcom.app)
    • Store caching with 10-minute TTL (reduce DB hits)
    • Custom domain support (CNAME configuration: shop.example.com)
    • Local development setup (hosts file: 127.0.0.1 test-store.localhost)
    • Multi-tenant data isolation (automatic storeId injection)
  2. [Phase 1] Storefront Template #1 (Basic) #21: [Phase 1] Storefront Template 1 (Basic) \u2705 Complete

    • Store layout with SEO metadata (dynamic per store)
    • Homepage with featured products grid (8-12 products)
    • Product listing page with filters (category, price, brand), search, sort
    • Product detail page with image gallery, variant selector, add-to-cart
    • Reusable components: ProductGrid, ProductCard, ImageGallery
    • Mobile-first responsive design (320px to 1920px)
  3. [Phase 1] Shopping Cart & Checkout Flow #22: [Phase 1] Shopping Cart & Checkout Flow \u2705 Complete

    • Zustand cart state management with localStorage persistence
    • Cart page with quantity controls, item removal, order summary
    • 5-step checkout form: shipping address, contact, payment method, review, confirmation
    • Guest checkout support (no login required)
    • Form validation with Zod schemas
    • Order creation API integration with idempotency keys

Success Metrics

Metric Target Current Status
Store Load Time (p95) <1.5 seconds (full page) \u2705 Achieved
Product Listing Load <800ms for 100 products \u2705 Achieved
Cart Persistence 30 days localStorage \u2705 Achieved
Checkout Completion <2 minutes (avg user) \u2705 Achieved
Mobile Conversion >50% of total orders \ud83d\udcc8 Tracking
Cart Abandonment Rate <70% \ud83d\udcc8 Tracking (Phase 1.5 recovery)

Architecture Overview

Routing Strategy

Subdomain Routing Flow:
1. Customer visits: store-name.stormcom.app
2. Middleware extracts: "store-name"
3. DB lookup (cached): Store by slug
4. Request context: storeId injected
5. Layout renders: StoreHeader, StoreFooter (branded)
6. Product queries: Filtered by storeId automatically

State Management

Cart State (Zustand):
{
  items: [
    { productId, variantId, quantity, price, imageUrl, name }
  ],
  subtotal: 0,
  discountAmount: 0,
  totalAmount: 0,
  actions: {
    addItem(product, variant, quantity),
    removeItem(itemId),
    updateQuantity(itemId, quantity),
    clearCart()
  }
}

Persistence: localStorage.setItem('cart', JSON.stringify(state))
Expiry: 30 days (auto-clear via ttl check)

Page Structure

/store/[slug]
  \u251c\u2500\u2500 layout.tsx (Store branding, metadata)
  \u251c\u2500\u2500 page.tsx (Homepage: featured products, categories)
  \u251c\u2500\u2500 products/page.tsx (Listing: filters, search, pagination)
  \u251c\u2500\u2500 products/[productSlug]/page.tsx (Detail: gallery, variants, cart button)
  \u251c\u2500\u2500 cart/page.tsx (Cart: items list, summary, checkout CTA)
  \u251c\u2500\u2500 checkout/page.tsx (5-step form, order creation)
  \u2514\u2500\u2500 order/[id]/success/page.tsx (Confirmation page)

Key Features Delivered

1. Dynamic Multi-Store Routing

  • Subdomain-based: Each store has unique URL (vendor1.stormcom.app)
  • Custom Domains: Support for CNAME records (shop.vendor.com \u2192 vendor.stormcom.app)
  • Store Caching: 10-minute TTL reduces DB queries by 95%
  • 404 Handling: Invalid store slugs show branded 404 page

2. Storefront Templates

  • Customizable Branding: Store logo, colors, banner in header/footer
  • SEO Optimized: Dynamic meta tags (title, description, OG tags) per page
  • Performance: Static generation where possible, ISR for product pages
  • Accessibility: WCAG 2.1 AA compliance (semantic HTML, ARIA labels)

3. Product Discovery

  • Filters: Category (multi-select), price range (slider), brand, availability
  • Search: Fuzzy text search via pg_trgm extension (typo-tolerant)
  • Sorting: Relevance, price (low-high), newest, best-selling
  • Pagination: Cursor-based (50 products/page), infinite scroll option

4. Shopping Cart

  • Persistent State: Survives page reloads, 30-day expiry
  • Real-Time Updates: Add/remove items with optimistic UI
  • Quantity Controls: Inline increment/decrement buttons
  • Stock Validation: Cannot add out-of-stock items, quantity capped to available stock
  • Price Calculation: Subtotal + discounts (future) + shipping (future) = total

5. Checkout Flow

  • Guest Checkout: No mandatory login (email + phone only)
  • Progressive Form: 5 steps with validation at each stage
  • Address Autocomplete: Google Places API integration (future)
  • Payment Integration: Stripe Checkout redirect (Issue [Phase 1] Stripe Payment Integration #27)
  • Order Confirmation: Email sent via Resend, order detail page

Technical Highlights

Performance Optimizations

  • Edge Middleware: Subdomain routing at edge (low latency)
  • Image Optimization: Vercel Image with WebP/AVIF automatic format
  • Code Splitting: Dynamic imports for heavy components (image gallery, map)
  • Cache Headers: Product pages cached for 5 minutes (stale-while-revalidate)

Security Measures

  • CSRF Protection: NextAuth session + SameSite cookies
  • Rate Limiting: 100 requests/minute per IP (future: Redis-based)
  • Input Sanitization: DOMPurify for user-generated content
  • SQL Injection Prevention: Prisma parameterized queries

Mobile Responsiveness

  • Breakpoints: 320px (mobile), 768px (tablet), 1024px (desktop), 1920px (wide)
  • Touch Gestures: Swipe image gallery, pull-to-refresh cart
  • Viewport Optimization: Larger tap targets (44px minimum), readable fonts (16px base)

Dependencies

Blocks:

Blocked By:

Research Integration

This epic implements key recommendations from:

  • Feature Roadmap (feature_roadmap_user_stories.md):

    • \u2705 As a customer, I can browse products by category
    • \u2705 As a customer, I can search for products by name
    • \u2705 As a customer, I can add items to cart without login
    • \u2705 As a customer, I can complete checkout with shipping address
  • Gap Analysis (codebase_feature_gap_analysis.md):

    • \u2705 Storefront schema enables brand & product listing (Awareness stage)
    • \u2705 Cart model for abandonment recovery (Conversion stage)
    • \u2705 Dynamic subdomain routing for multi-tenancy
  • Implementation Plan (implementation_plan.md):

    • \u2705 Middleware-based subdomain routing (Step 4 complete)
    • \u2705 Cache tags for store/product invalidation
    • \u2705 Cart state management (Zustand + localStorage)

Funnel Stage Mapping

Funnel Stage Features Delivered Conversion Impact
Awareness SEO metadata, social sharing, store branding Organic traffic, brand recognition
Consideration Product filters, search, detailed descriptions, reviews Higher engagement, dwell time
Conversion Cart persistence, guest checkout, clear pricing Lower cart abandonment
Loyalty Order history (future), saved addresses (future) Repeat purchases (Phase 1.5)

Current Status

\u2705 Complete - All 3 child issues (#20, #21, #22) implemented with storefront fully operational

Next Steps

  1. Phase 1.5 Enhancements:

  2. Phase 2 Features:

    • Product recommendations (upsell/cross-sell)
    • Customer reviews & ratings moderation
    • Wishlist functionality
    • Product comparison tool
  3. Performance Monitoring:

    • Real User Monitoring (RUM) for Core Web Vitals
    • Conversion funnel analysis (which step drops most users)
    • Cart abandonment tracking (send to marketing automation)
  4. A/B Testing:

    • Checkout flow variations (1-page vs 5-step)
    • CTA button text ("Add to Cart" vs "Buy Now")
    • Product card layout (grid vs list view)

Epic Summary: Storefront operational with subdomain routing, product discovery, cart persistence, and checkout flow. Mobile-first design. Performance targets met. Ready for payment integration and marketing automation.

Sub-issues

Metadata

Metadata

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions