Create pbs-woocommerce-store.md via n8n

This commit is contained in:
herbygitea 2026-03-24 19:24:15 +00:00
parent dc34f927fb
commit 71cfea51db

View File

@ -0,0 +1,150 @@
---
project: pbs-woocommerce-store
type: session-notes
status: active
tags:
- pbs
- wordpress
- woocommerce
- ecommerce
- stripe
- paypal
- apple-pay
- redis
- staging
- production
- essential-blocks
- css
- ghostscript
- wordfence
created: 2026-03-21
updated: 2026-03-21
path: PBS/Tech/Sessions/
---
# WooCommerce Store Setup — Session Notes (March 21, 2026)
## Session Summary
Full WooCommerce cookbook store built from scratch — staging tested and production deployed in a single day. Both Stripe and PayPal payment processing working. Shop page custom-built with Essential Blocks for full layout control. Test purchases confirmed on both staging and production. Apple Pay domain verification placed on production server.
## Key Decisions Made
### Commerce Platform: WooCommerce (Lean Approach)
- **WooCommerce over Shopify** — seamless on-site experience for Sunnies, no monthly platform fee, full data ownership
- **WooCommerce is a stepping stone** — long-term plan is custom commerce backend (Flask/Go/Rust) with direct Stripe API integration
- **Free plugins only** — WooCommerce core + Stripe Gateway + PayPal Payments, no premium dependencies
### Key Concepts Clarified
- **Shopify vs WooCommerce** — Shopify is a platform (competes with WooCommerce), not a payment processor
- **Shop Pay** is Shopify's digital wallet (exclusive to Shopify stores), not available on WooCommerce. Not a dealbreaker — Apple Pay, Google Pay, and PayPal cover the same need
- **Stripe and PayPal are payment processors** (cash registers); WooCommerce and Shopify are platforms (the store)
- **Custom commerce is realistic** — Flask/Go/Rust backend with direct Stripe API is within reach (estimated: a month of weekends). Stripe handles PCI compliance, fraud, chargebacks. Your code just says "charge $24.99"
- **WooCommerce doesn't lock you in** — all product/order data lives in MySQL, migrateable when custom build is ready
### Payment Setup
- **Stripe** — primary payment processor, handles credit cards, Apple Pay, Google Pay
- **PayPal** — secondary option, works alongside Stripe on checkout page. Initially hijacked checkout with Smart Buttons; resolved by letting Stripe own card fields and PayPal display as separate option
- **Apple Pay** — domain verification file placed on production at `/.well-known/apple-developer-merchantid-domain-association`, ownership set to `www-data`. Verified through PayPal's Apple Pay integration. Note: file lives inside WordPress container — needs volume mount or re-creation on container rebuild
### Shop Page Architecture
- **Custom page with Essential Blocks Woo Product Grid** — not the WooCommerce default shop page
- WooCommerce's shop page template overrides custom block layouts when a page is designated as the "Shop page"
- **Workaround:** Keep WooCommerce shop page as default, point site navigation to custom page, set up redirect from `/shop` to custom page slug via Redirection plugin
- Essential Blocks uses different CSS classes than native WooCommerce blocks (`eb_selector` prefix, `.eb-woo-product` classes)
### Redis + WooCommerce
- **Redis Object Cache v2.7.0 by Till Krüss** on production
- Redis is an object cache (not page cache) — WooCommerce is designed to work with it and handles its own cache invalidation
- No manual exclusions needed — just flush Redis after WooCommerce install
- Source: Pressidium article confirms WooCommerce benefits from Redis for carts, sessions, and checkout queries
## Completed Tasks — Staging
- [x] WooCommerce installed and configured
- [x] Stripe set up in test mode, successful test purchase
- [x] Declined card test passed (proper error message displayed)
- [x] PayPal set up and working alongside Stripe on checkout
- [x] Essential Blocks Woo Product Grid configured with custom layout
- [x] Product card hover CSS (lift + scale + PBS green shadow `rgba(62, 107, 65, 0.35)`)
- [x] Cookbook PDF compressed from 51MB to 2.6MB with Ghostscript `/ebook` setting
- [x] Digital download verified working
- [x] Mobile checkout tested
- [x] Guest checkout enabled, account creation optional at checkout
## Completed Tasks — Production
- [x] Apple Pay domain verification file placed and verified
- [x] WooCommerce installed and configured
- [x] Stripe set up with live credentials
- [x] PayPal configured
- [x] Shop page built with Essential Blocks product grid + hover effects
- [x] Custom page set as shop (via navigation, not WooCommerce shop page setting)
- [x] Redis cache flushed after WooCommerce install
- [x] Test purchase completed successfully
- [x] Wordfence IP lockout resolved (phone hotspot trick)
## Technical Notes
### Cookbook PDF Compression
- Original Canva export: 51MB
- Compressed with Ghostscript: 2.6MB
- Command: `gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=cookbook_compressed.pdf cookbook_original.pdf`
- Quality verified — 150 dpi sufficient for phone/tablet viewing
### Custom Hover CSS (Essential Blocks Product Grid)
```css
eb_selector .eb-woo-products-gallery .eb-woo-product {
transition: transform 0.3s ease, box-shadow 0.3s ease;
border-radius: 8px;
}
eb_selector .eb-woo-products-gallery .eb-woo-product:hover {
transform: translateY(-8px) scale(1.02);
box-shadow: 0 12px 32px rgba(62, 107, 65, 0.35);
}
```
### Apple Pay Verification File
- Location: `/var/www/html/.well-known/apple-developer-merchantid-domain-association`
- Ownership: `www-data:www-data`
- ⚠️ File is inside WordPress container — will be lost on container rebuild. Needs volume mount added to compose file for persistence
### Server Health (Observed During Session)
- Memory: 77%, Swap: 100% — VS Code Remote SSH was a contributing factor
- 1 zombie process (non-critical)
- System restart required (kernel updates pending)
- 6 apt updates available
- Recommendation: close VS Code Remote when not actively editing, schedule reboot
### WooCommerce Account System
- WooCommerce customer accounts are WordPress user accounts (same `wp_users` table)
- Assigns "Customer" role by default
- Will need role strategy when Ultimate Member is activated (future task)
- No conflict for now since Ultimate Member isn't active
### Wordfence Lockout Recovery
- Production site returned 503 due to Wordfence IP block
- Fix: logged in via phone mobile hotspot (different IP), removed firewall exception
- Action item: whitelist home IP in Wordfence → Firewall → Whitelisting
## Known Gaps / Action Items
- [ ] Verify order confirmation emails working on production (WP Mail SMTP is configured there, wasn't on staging)
- [ ] Add volume mount for Apple Pay verification file in Docker compose (persistence across rebuilds)
- [ ] Whitelist home IP in Wordfence
- [ ] Set up redirect from `/shop` to custom shop page (if not done)
- [ ] Apply pending server updates and reboot (`sudo apt update && sudo apt upgrade -y && sudo reboot`)
- [ ] Close VS Code Remote SSH sessions when not in use to free server memory
- [ ] Monitor Linode memory — consider 4GB upgrade as store traffic grows
- [ ] Configure PayPal for production with live credentials (if not completed)
- [ ] Eventually: add n8n order automation workflows (Phase 2 of project plan)
## Discussion Highlights
- WordPress regret is real — WooCommerce is a pragmatic compromise, not a long-term commitment
- Django/Flask would have been ideal for someone with Travis's skillset, but doesn't serve Jenny's immediate need
- Rust explored as future option — great for systems programming but overkill for a commerce backend; Go is the more natural fit for web services
- Building a custom frontend with direct Stripe API is a realistic project — the store UI is the easy part, payment processing is Stripe's problem
- The "WooCommerce plugin tax" kicks in at subscriptions/memberships/courses — but that's 6+ months out and may be custom-built instead
---
*Session: March 21, 2026*
*Project: Plant Based Southerner — Commerce*
*Maintained by: Travis with Claude*