docs: Update PROJECT_BRIEF with Settings architecture philosophy

📝 Changes:
- Added Phase 4.5: Settings SPA & Setup Wizard
- Added Section 5: Settings Architecture Philosophy
- Documented 'better wardrobe' approach
- Clarified WooCommerce bone structure respect
- Defined compatibility stance

🎯 Key Principles:
- Read WC structure (don't create parallel system)
- Transform & simplify (better UX)
- Enhance performance (like Orders: 30s → 1-2s)
- Respect ecosystem (auto-support WC-compliant addons)
- No new hooks (listen to WC hooks)

🎨 UI Strategy:
- Generic form builder (standard)
- Custom components (popular gateways)
- Redirect to WC (complex/non-standard)
- Multi-page forms (20+ fields)

Compatibility: 'If it works in WC, it works in WooNooW'
This commit is contained in:
dwindown
2025-11-05 20:59:21 +07:00
parent 3bd2c07308
commit f205027c6d
2 changed files with 29 additions and 7 deletions

View File

@@ -42,6 +42,7 @@ By overlaying a fast Reactpowered frontend and a modern admin SPA, WooNooW up
| **Phase 2** | Checkout FastPath (quote, submit), cart hybrid SPA | Fast checkout pipeline, HPOS datastore |
| **Phase 3** | Customer SPA (My Account, Orders, Addresses) | React SPA integrated with Woo REST |
| **Phase 4** | Admin SPA (Orders List, Detail, Dashboard, Standalone Mode) | React admin interface with 3 modes: normal (wp-admin), fullscreen, standalone |
| **Phase 4.5** | Settings SPA (Store, Payments, Shipping, Taxes, Checkout) | Shopify-inspired settings UI reading WooCommerce structure; Setup Wizard for onboarding |
| **Phase 5** | Compatibility Hooks & Slots | Legacy addon support maintained |
| **Phase 6** | Packaging & Licensing | Release build, Sejoli integration, and addon manager |
@@ -56,13 +57,33 @@ All development follows incremental delivery with full test coverage on REST end
- **Architecture:** Modular PSR4 autoload, RESTdriven logic, SPA hydration islands.
- **Performance:** Readthrough cache, async queues, lazy data hydration.
- **Compat:** HookBridge and SlotRenderer ensuring PHPhook addons still render inside SPA.
- **Packaging:** Composer + NPM build pipeline, `packagezip.mjs` for release automation.
- **Hosting:** Fully WordPressnative, deployable on any WP host (LocalWP, Coolify, etc).
---
## 5. Strategic Goal
## 5. Settings Architecture Philosophy
Position WooNooW as the **“WooCommerce for Now”** — a paid addon that delivers the speed and UX of modern SaaS platforms while retaining the ecosystem power and selfhosted freedom of WooCommerce.
WooNooW settings act as a **"better wardrobe"** for WooCommerce configuration:
**Core Principles:**
1. **Read WooCommerce Structure** — Listen to WC's registered gateways, shipping methods, and settings (the "bone structure")
2. **Transform & Simplify** — Convert complex WC settings into clean, categorized UI with progressive disclosure
3. **Enhance Performance** — Direct DB operations where safe, bypassing WC bloat (30s → 1-2s like Orders)
4. **Respect the Ecosystem** — If addon extends `WC_Payment_Gateway` or `WC_Shipping_Method`, it appears automatically
5. **No New Hooks** — Don't ask addons to support us; we support WooCommerce's existing hooks
**UI Strategy:**
- **Generic form builder** as standard for all WC-compliant gateways/methods
- **Custom components** for recognized popular gateways (Stripe, PayPal) while respecting the standard
- **Redirect to WC settings** for complex/non-standard addons
- **Multi-page forms** for gateways with 20+ fields (categorized: Basic → API → Advanced)
**Compatibility Stance:**
> "If it works in WooCommerce, it works in WooNooW. If it doesn't respect WooCommerce's structure, we can't help."
---
## 6. Strategic Goal
Position WooNooW as the **"WooCommerce for Now"** — a paid addon that delivers the speed and UX of modern SaaS platforms while retaining the ecosystem power and selfhosted freedom of WooCommerce.
---

View File

@@ -58,8 +58,8 @@ export function SettingsLayout({
</div>
)}
{/* Content - Full width like Orders/Dashboard */}
<div className="px-4 py-8 w-full">
{/* Content */}
<div className="container max-w-5xl mx-auto px-4 py-8">
{!onSave && (
<div className="mb-8">
<h1 className="text-2xl font-bold tracking-tight">{title}</h1>
@@ -68,12 +68,13 @@ export function SettingsLayout({
)}
</div>
)}
{isLoading ? (
<div className="flex items-center justify-center py-12">
<Loader2 className="h-8 w-8 animate-spin text-muted-foreground" />
</div>
) : (
<div className="space-y-6 max-w-6xl">{children}</div>
<div className="space-y-6">{children}</div>
)}
</div>
</div>