dwindown 36f8b2650b feat: Coupons CRUD - Complete implementation (Phase 3-4)
Completed full Coupons CRUD following PROJECT_SOP.md standards

Created Frontend Components:
1. CouponForm.tsx - Shared form component
   - General settings (code, type, amount, expiry)
   - Usage restrictions (min/max spend, individual use, exclude sale)
   - Usage limits (total limit, per user, free shipping)
   - Supports both create and edit modes
   - Form validation and field descriptions

2. New.tsx - Create coupon page
   - Contextual header with Cancel/Create buttons
   - Form submission with mutation
   - Success/error handling
   - Navigation after creation

3. Edit.tsx - Edit coupon page
   - Contextual header with Back/Save buttons
   - Fetch coupon data with loading/error states
   - Form submission with mutation
   - Code field disabled (cannot change after creation)

Updated Navigation:
- NavigationRegistry.php - Added Coupons menu
  - Main menu: Coupons with tag icon
  - Submenu: All coupons, New
  - Positioned between Customers and Settings

Updated Documentation:
- API_ROUTES.md - Marked Coupons as IMPLEMENTED
  - Documented all endpoints with details
  - Listed query parameters and features
  - Clarified validate endpoint ownership

Following PROJECT_SOP.md Standards:
 CRUD Module Pattern: Submenu tabs (All coupons, New)
 Contextual Header: Back/Cancel and Save/Create buttons
 Form Pattern: formRef with hideSubmitButton
 Error Handling: ErrorCard, LoadingState, user-friendly messages
 Mobile Responsive: max-w-4xl form container
 TypeScript: Full type safety with interfaces
 Mutations: React Query with cache invalidation
 Navigation: Proper routing and navigation flow

Features Implemented:
- Full coupon CRUD (Create, Read, Update, Delete)
- List with pagination, search, and filters
- Bulk selection and deletion
- All WooCommerce coupon fields supported
- Form validation (required fields, code uniqueness)
- Usage tracking display
- Expiry date management
- Discount type selection (percent, fixed cart, fixed product)

Result:
 Complete Coupons CRUD module
 100% SOP compliant
 Production ready
 Fully functional with WooCommerce backend

Total Implementation:
- Backend: 1 controller (347 lines)
- Frontend: 5 files (800+ lines)
- Navigation: 1 menu entry
- Documentation: Updated API routes

Status: COMPLETE 🎉
2025-11-20 14:10:02 +07:00

WooNooW

WooNooW is a modern experience layer for WooCommerce — enhancing UX, speed, and reliability without data migration.
It keeps WooCommerce as the core engine while providing a modern React-powered interface for both the storefront (cart, checkout, myaccount) and the admin (orders, dashboard).

Three Admin Modes:

  • Normal Mode: Traditional wp-admin integration (/wp-admin/admin.php?page=woonoow)
  • Fullscreen Mode: Distraction-free interface (toggle in header)
  • Standalone Mode: Complete standalone app at yoursite.com/admin with custom login

🔍 Background

WooCommerce is the most used ecommerce engine in the world, but its architecture has become heavy and fragmented.
With Reactbased blocks (Checkout, Cart, Product Edit) and HPOS now rolling out, many existing addons are becoming obsolete or unstable.
WooNooW bridges the gap between Woos legacy PHP system and the new modern stack — so users get performance and simplicity without losing compatibility.


🚀 Key Principles

  • No Migration Needed Woo data stays intact.
  • Safe Activate/Deactivate revert to native Woo anytime, no data loss.
  • Hybrid by Default SSR + React islands for Cart/Checkout/MyAccount.
  • Full SPA Toggle optional Reactonly mode for max performance.
  • HPOS Mandatory optimized datastore and async operations.
  • Compat Layer hook mirror + slot rendering for legacy addons.
  • Async Mail & Tasks powered by Action Scheduler.

🧱 Tech Stack

Layer Technology
Backend PHP 8.2+, WordPress, WooCommerce (HPOS), Action Scheduler
Frontend React 18 + TypeScript, Vite, React Query, Tailwind (optional)
Build & Package Composer, NPM, ESM scripts, Zip automation
Architecture Modular PSR4 classes, RESTdriven SPA islands

🧩 Project Structure

woonoow/
├── admin-spa/
│   ├── src/
│   │   ├── components/
│   │   │   ├── filters/
│   │   │   │   ├── DateRange.tsx
│   │   │   │   └── OrderBy.tsx
│   │   │   └── CommandPalette.tsx
│   │   ├── hooks/
│   │   │   └── useShortcuts.tsx
│   │   ├── lib/
│   │   │   ├── api.ts
│   │   │   ├── currency.ts
│   │   │   ├── dates.ts
│   │   │   ├── query-params.ts
│   │   │   ├── useCommandStore.ts
│   │   │   └── utils.ts
│   │   ├── pages/
│   │   │   └── orders/
│   │   │       ├── partials
│   │   │       │   └── OrderForm.tsx
│   │   │       ├── Orders.tsx
│   │   │       ├── OrdersNew.tsx
│   │   │       └── OrderShow.tsx
│   │   ├── routes/
│   │   │   └── Dashboard.tsx
│   │   ├── types/
│   │   │   └── qrcode.d.ts
│   │   ├── App.tsx
│   │   ├── index.css
│   │   └── main.tsx
│   └── vite.config.ts
├── includes/
│   ├── Admin/
│   │   ├── Assets.php
│   │   └── Menu.php
│   ├── Api/
│   │   ├── CheckoutController.php
│   │   ├── OrdersController.php
│   │   ├── Permissions.php
│   │   └── Routes.php
│   ├── Compat/
│   │   ├── HideWooMenus.php
│   │   └── HooksShim.php
│   └── Core/
│       ├── DataStores/
│       │   ├── OrderStore_HPOS.php
│       │   └── OrderStore.php
│       ├── Mail/
│       │   ├── MailQueue.php
│       │   └── WooEmailOverride.php
│       ├── Bootstrap.php
│       └── Features.php
├── woonoow.php
└── docs (project notes, SOP, etc.)

⚙️ Development Workflow

  1. LocalWP / Docker setup with WordPress + WooCommerce.
  2. Activate plugin: WooNooW should appear in the admin menu.
  3. Build SPAs:
    npm run build
    
  4. Package zip:
    npm run pack
    
  5. Upload dist/woonoow.zip into WordPress → Plugins → Add New → Upload.

🧭 Vision

“WooCommerce, reimagined for now.”

WooNooW delivers modern speed and UX while keeping WooCommerces ecosystem alive.
No migration. No lockin. Just Woo, evolved.


Description
No description provided
Readme 5.8 MiB
Languages
TypeScript 65.1%
PHP 33.1%
HTML 0.9%
CSS 0.7%
JavaScript 0.1%