From d65eb725f716e6ec6721616af00ae80faed7fb52 Mon Sep 17 00:00:00 2001 From: jamey Date: Sat, 7 Feb 2026 18:04:18 +0000 Subject: [PATCH] docs: update progress with Stripe setup and checkout completion Co-Authored-By: Claude Opus 4.6 --- PROGRESS.md | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/PROGRESS.md b/PROGRESS.md index bbc5165..b80d263 100644 --- a/PROGRESS.md +++ b/PROGRESS.md @@ -13,6 +13,9 @@ - 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 +- Stripe Checkout with order persistence and webhook handling +- Admin credentials page with guided Stripe setup flow +- Encrypted settings for API keys and secrets - Search modal with keyboard shortcut - Demo content polished and ready for production @@ -23,6 +26,7 @@ 1. **Orders & Fulfillment** - Submit orders to Printify after payment 2. **Email Notifications** - Order confirmation emails +3. **Hosted Platform** - Multi-tenancy, Stripe Connect for customer shops --- @@ -90,24 +94,24 @@ See: [docs/plans/products-context.md](docs/plans/products-context.md) for implem See: [docs/plans/printify-integration-research.md](docs/plans/printify-integration-research.md) for API research & risk analysis ### Cart & Checkout -**Status:** In Progress +**Status:** Complete -- [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] Cart drawer component with slide-over panel (1bc08bf) +- [x] Cart page with item list and order summary (1bc08bf) +- [x] Shared CartHook for cross-page cart events (1bc08bf) - [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) +- [x] Session-based cart with real variants (1bc08bf) - 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) +- [x] Stripe Checkout integration (ff1bc48, 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 +- [x] Order/OrderItem schemas and context (ff1bc48) - Order number format: SS-YYMMDD-XXXX - Payment status tracking (pending → paid/failed) - Price snapshots in OrderItem (protects against changes) @@ -117,6 +121,27 @@ See: [docs/plans/printify-integration-research.md](docs/plans/printify-integrati See: [ROADMAP.md](ROADMAP.md) for design notes +### Admin Settings & Stripe Setup +**Status:** Complete + +- [x] Encrypted settings infrastructure (eede9bb) + - `encrypted_value` column on settings table + - `put_secret/2`, `get_secret/2`, `has_secret?/1`, `secret_hint/1` + - AES-GCM encryption via `SECRET_KEY_BASE` + - Secrets loaded into Application env on startup via `Secrets.load_all/0` +- [x] Guided Stripe setup flow (eede9bb) + - `Stripe.Setup` module: connect, disconnect, verify, auto-create webhook + - Three-state admin UI: not configured, connected (production), connected (dev/localhost) + - Auto-creates Stripe webhook endpoint on production hosts + - Dev mode shows Stripe CLI instructions for localhost + - Manual signing secret input for dev/advanced use + - API key verification via `Stripe.Balance.retrieve/2` +- [x] Admin credentials page at `/admin/settings` (eede9bb) + - Single Secret key input with "Connect Stripe" button + - Masked key hints (e.g. `sk_test_•••789`) + - Disconnect button clears keys from DB and Application env + - CSSCache test startup crash fixed (handle_continue pattern) + ### Orders & Fulfillment **Status:** Planned @@ -140,8 +165,10 @@ See: [docs/plans/page-builder.md](docs/plans/page-builder.md) for design | Feature | Commit | Notes | |---------|--------|-------| +| Encrypted settings & Stripe setup | eede9bb | Guided setup flow, encrypted secrets, admin credentials page | +| Stripe checkout & orders | ff1bc48 | Stripe Checkout, webhooks, order persistence | | Demo content & link fixes | cff2170 | Broken links, placeholder text, responsive about image | -| Cart UI infrastructure | f244a42 | Cart drawer, cart page, CartHook, CartPersist | +| Cart UI infrastructure | 1bc08bf | 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 |