# SimpleShop Progress > Single source of truth for project status and task tracking. ## Current Status **Working:** - Theme editor with 8 presets, instant switching, full customization - Image optimization pipeline (AVIF/WebP/JPEG responsive variants) - Shop pages (home, collections, products, cart, about, contact, error) - Mobile-first design with bottom navigation - 100% PageSpeed score - Variant selector with color swatches and size buttons - Session-based cart with real variant data (add/remove/quantity, cross-tab sync) - Cart drawer and cart page with hydrated product info - Search modal with keyboard shortcut - Demo content polished and ready for production **Next Up:** - Orders & Fulfillment (Printify submission) ## Next Up 1. **Orders & Fulfillment** - Submit orders to Printify after payment 2. **Email Notifications** - Order confirmation emails --- ## Feature Areas ### Theme System **Status:** Complete - 8 theme presets (Gallery, Studio, Boutique, etc.) - Three-layer CSS architecture (primitives, attributes, semantic) - Instant theme switching via CSS custom property injection - Logo/header image uploads with SVG recoloring - Self-hosted fonts (10 typefaces, GDPR compliant) - ETS-cached CSS generation ### Image Optimization **Status:** Complete - Oban background job processing - Responsive `` element (AVIF/WebP/JPEG) - Only generates sizes <= source dimensions - Disk cache for variants (regenerable from DB) - `mix optimize_images` task for mockups - On-demand JPEG fallback generation - Product image download pipeline (downloads Printify CDN images, processes through Media pipeline) - ImageDownloadWorker downloads and links images to ProductImage - PreviewData uses local images for responsive `` elements - Startup recovery re-enqueues pending downloads - `mix simpleshop.download_images` backfill task See: [docs/plans/image-optimization.md](docs/plans/image-optimization.md) for implementation details ### Products & Provider Integration **Status:** Complete - [x] Products context with schemas (c5c06d9) - [x] Provider abstraction layer - [x] Printify client integration - [x] Product/variant/image schemas - [x] Admin Provider Setup UI (`/admin/providers`) - connect, test, sync - [x] ProductSyncWorker with pagination, parallel processing, error recovery - [x] Slug-based fallback matching for changed provider IDs - [x] Printify webhook endpoint with HMAC verification (a9c15ea) - Note: Printify only supports `product:deleted` and `product:publish:*` events (no `product:updated`) - [x] Product image download pipeline (1b49b47) - Downloads Printify CDN images via ImageDownloadWorker - Processes through Media pipeline (WebP conversion, AVIF/WebP variants) - Startup recovery and `mix simpleshop.download_images` backfill - [x] Variant selector component (880e7a2) - Color swatches with hex colors, size buttons - Fixed Printify options parsing (Color/Size swap bug) - Filters to only published variants (not full catalog) - Price updates on variant change - Startup recovery for stale sync status #### Future Enhancements (post-MVP) - [ ] Pre-checkout variant validation (verify availability before order) - [ ] Cost change monitoring/alerts (warn if Printify cost increased) - [ ] OAuth platform integration (appear in Printify's "Publish to" UI) #### Technical Debt - [ ] Add HTTP mocking (Mox/Bypass) for Printify API tests See: [docs/plans/products-context.md](docs/plans/products-context.md) for implementation details See: [docs/plans/printify-integration-research.md](docs/plans/printify-integration-research.md) for API research & risk analysis ### Cart & Checkout **Status:** In Progress - [x] Cart drawer component with slide-over panel (f244a42) - [x] Cart page with item list and order summary (f244a42) - [x] Shared CartHook for cross-page cart events (f244a42) - [x] CartPersist JS hook for localStorage backup - [x] Add-to-cart with flash status feedback - [x] Cart item links to product pages - [x] Session-based cart with real variants (f244a42) - Cart stores {variant_id, qty} tuples in session - Hydrates with real product data via Products context - Cross-tab sync via PubSub, session persistence via CartController API - [x] Stripe Checkout integration (stripity_stripe ~> 3.2) - Stripe-hosted Checkout with redirect flow - Webhook handler for checkout.session.completed/expired - Signature verification via CacheRawBody + construct_event - Shipping address collection during checkout - [x] Order/OrderItem schemas and context - Order number format: SS-YYMMDD-XXXX - Payment status tracking (pending → paid/failed) - Price snapshots in OrderItem (protects against changes) - Idempotent webhook processing - [x] Checkout success page with real-time PubSub updates - [x] Cart clearing after successful payment See: [ROADMAP.md](ROADMAP.md) for design notes ### Orders & Fulfillment **Status:** Planned - [x] Orders context with schemas - [ ] Order submission to Printify - [ ] Order status tracking - [ ] Customer notifications See: [docs/plans/products-context.md](docs/plans/products-context.md) for schema design ### Page Builder **Status:** Future Database-driven pages with drag-and-drop sections. See: [docs/plans/page-builder.md](docs/plans/page-builder.md) for design --- ## Completed Work Reference | Feature | Commit | Notes | |---------|--------|-------| | Demo content & link fixes | cff2170 | Broken links, placeholder text, responsive about image | | Cart UI infrastructure | f244a42 | Cart drawer, cart page, CartHook, CartPersist | | Variant selector | 880e7a2 | Color swatches, size buttons, price updates | | Product image download | 1b49b47 | PageSpeed 100% with local images | | Wire shop to real data | c818d03 | PreviewData uses Products context | | Printify webhooks | a9c15ea | Deletion + publish events | | Products context Phase 1 | c5c06d9 | Schemas, provider abstraction | | Admin provider setup UI | 5b736b9 | Connect, test, sync with pagination | | Oban Lifeline plugin | c1e1988 | Rescue orphaned jobs | | Image optimization | Multiple | Full pipeline complete | | Self-hosted fonts | - | 10 typefaces, 728KB | | Mobile bottom nav | - | Fixed tab bar | | PageSpeed 100% | - | All optimizations | | Theme presets (8) | - | Gallery, Studio, etc. |