Skip to content

2026 03 18 claude code team#12

Open
FabianWesner wants to merge 26 commits intomainfrom
2026-03-18-claude-code-team
Open

2026 03 18 claude code team#12
FabianWesner wants to merge 26 commits intomainfrom
2026-03-18-claude-code-team

Conversation

@FabianWesner
Copy link
Copy Markdown
Contributor

No description provided.

FabianWesner and others added 26 commits March 18, 2026 11:38
…tion

Implements the complete foundation layer:
- Environment config (SQLite WAL, file cache/session, customer auth guard)
- 8 migrations (organizations, stores, store_domains, users, store_users, store_settings, customers, customer_password_reset_tokens)
- Core models with relationships, factories, and seeders
- Enums (StoreStatus, StoreUserRole, StoreDomainType)
- Tenant resolution middleware with deferred singleton + Livewire persistent middleware
- BelongsToStore trait and StoreScope for automatic tenant isolation
- Admin auth (Livewire login/logout, rate limiting)
- Customer auth (custom guard, CustomerUserProvider, store-scoped login/register)
- 11 authorization policies + 8 gates with role-based permission matrix
- 235 Pest tests (369 assertions), all passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the complete catalog system:
- 9 migrations (products, product_options, product_option_values, product_variants, variant_option_values, inventory_items, collections, collection_products, product_media)
- 7 models with relationships, factories, and seeders
- 7 enums (ProductStatus, VariantStatus, CollectionStatus, CollectionType, MediaType, MediaStatus, InventoryPolicy)
- ProductService (CRUD + state machine transitions)
- VariantMatrixService (cartesian product matrix rebuild)
- InventoryService (reserve/release/commit/restock with transactions)
- HandleGenerator (unique store-scoped slug generation)
- ProcessMediaUpload job (image resizing)
- InsufficientInventoryException, InvalidProductTransitionException
- 48 new Pest tests (283 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the complete storefront presentation layer:
- 6 migrations (themes, theme_files, theme_settings, pages, navigation_menus, navigation_items)
- 6 models with relationships, factories, seeders, 3 enums
- ThemeSettingsService (singleton, caches active theme settings per store)
- NavigationService (builds nav trees, resolves URLs for all item types)
- Full storefront Blade layout (announcement bar, responsive header, footer, dark mode, accessibility)
- 9 Livewire components (Home, Collections Index/Show, Products Show, Cart, CartDrawer, Search Index/Modal, Pages Show)
- 6 Blade components (product-card, price, badge, quantity-selector, breadcrumbs, pagination)
- Error pages (404, 503)
- 7 storefront routes with middleware
- 54 new Pest tests (337 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the complete shopping flow:
- 7 migrations (carts, cart_lines, checkouts, shipping_zones, shipping_rates, tax_settings, discounts)
- 7 models with factories and seeders, 8 enums
- CartService (CRUD, inventory validation, merge with MAX behavior, optimistic concurrency)
- DiscountService (validation with 6 error codes, percent/fixed/free-shipping, proportional allocation)
- ShippingCalculator (zone matching, flat/weight/price rates)
- TaxCalculator (exclusive/inclusive, integer math, basis points)
- PricingEngine (deterministic 7-step pipeline)
- CheckoutService (state machine with 5 transitions, inventory reserve/commit/release)
- Value objects (PricingResult, TaxLine, DiscountResult, TaxResult)
- Scheduled jobs (ExpireAbandonedCheckouts, CleanupAbandonedCarts)
- Updated Livewire components (CartDrawer, Cart, Checkout, Confirmation)
- 96 new Pest tests (433 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the complete purchase and post-purchase flow:
- 7 migrations (customer_addresses, orders, order_lines, payments, refunds, fulfillments, fulfillment_lines)
- 7 models with factories, 6 enums
- PaymentProvider interface + MockPaymentProvider (magic card numbers, PayPal, bank transfer)
- PaymentService (bank transfer confirmation, digital auto-fulfillment)
- OrderService (createFromCheckout, sequential order numbering, cancellation)
- RefundService (partial/full refunds, restock option, provider integration)
- FulfillmentService (financial guard, line-level fulfillment, ship/deliver transitions)
- CancelUnpaidBankTransferOrders scheduled job
- 7 domain events (OrderCreated, OrderPaid, OrderCancelled, OrderRefunded, OrderFulfilled, FulfillmentCreated, FulfillmentShipped)
- CheckoutService integrated with PaymentProvider and OrderService
- Checkout UI: card number input, bank transfer instructions, order confirmation
- 45 new Pest tests (478 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements customer account management:
- Dashboard with welcome message, profile editing, recent orders
- Order history (paginated) and order detail with line items, totals, fulfillment timeline
- Address book CRUD (add, edit, delete, set default) with authorization
- Cart merge on login (MAX behavior for overlapping variants)
- All account routes protected with storefront + auth.customer middleware
- 13 new Pest tests (491 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements the complete merchant management interface:
- Admin layout with Flux sidebar, breadcrumbs, toast notifications, mobile responsive
- Dashboard with KPI tiles (sales, orders, AOV), date filtering, recent orders
- Product management (list with search/filter/bulk actions, create/edit form with variants, media)
- Order management (list with status tabs, detail with fulfillment/refund/bank transfer confirm)
- Collections, Customers, Discounts, Settings (general/domains/shipping/taxes), Pages management
- Placeholder pages for Navigation, Themes, Analytics, Inventory
- 18 Livewire components, 16+ Blade views
- Role-based authorization on all admin actions
- 29 new Pest tests (520 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements full-text search:
- 3 migrations (search_settings, search_queries, products_fts virtual table)
- SearchService (FTS5 search, autocomplete, sync, remove)
- ProductObserver (auto-sync FTS index on product CRUD)
- Search UI (autocomplete modal, full results page with filters/sort/pagination)
- SearchSettings and SearchQuery models
- 8 new Pest tests (528 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements analytics tracking and reporting:
- 2 migrations (analytics_events, analytics_daily with composite PK)
- AnalyticsService (track events, getDailyMetrics)
- AggregateAnalytics daily job (upsert daily metrics from raw events)
- Updated Admin Analytics page with KPI tiles, revenue chart, funnel, date filtering
- AnalyticsEvent and AnalyticsDaily models with factories
- 15 new Pest tests (543 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements extensibility infrastructure:
- 6 migrations (apps, app_installations, oauth_clients, oauth_tokens, webhook_subscriptions, webhook_deliveries)
- 6 models with factories, 4 enums
- WebhookService (dispatch, HMAC sign/verify)
- DeliverWebhook job (HTTP POST, exponential backoff, circuit breaker)
- Admin Apps and Developers pages
- 10 new Pest tests (553 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Implements final polish:
- Comprehensive seed data (18 seeders) matching all 143 E2E test requirements
  - 20 fashion + 5 electronics products with variants, options, inventory
  - 15 fashion + 3 electronics orders covering all states
  - 10 customers with addresses, 5 discount codes, 3 shipping zones
  - Theme, pages, navigation, analytics, search settings
- Accessibility: skip-to-content on admin layout, ARIA landmarks
- Error pages: navigation link on 503 page
- Structured logging on OrderService, PaymentService, WebhookService
- SeedDataTest (31 tests) verifying exact entity counts
- 584 total Pest tests, all passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Verification results:
- 584 Pest tests, 1124 assertions, all passing (18.88s)
- Pint code style: 0 violations (10 pre-existing Fortify files fixed)
- Fresh migration + seed: all 18 seeders complete successfully
- All phases 1-11 complete and signed off

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fixes applied during E2E QA:
- TaxMode enum case mismatch in admin settings (7 tests)
- StoreDomainType enum ucfirst() in admin settings domains tab
- RefundStatus enum ucfirst() in admin order detail
- Empty variant titles (computed accessor from option values)
- Inventory policy UI (sold out/backorder messaging)
- ARIA labels on variant selector
- Auth pages restyled with Flux UI (customer login/register, admin login)
- Postal code format validation
- PSP decline error message passthrough
- phpmetrics static analysis report generated

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…mber security

Fixes 4 issues found during adversarial QA:
- CartService rejects negative and zero quantities (throws InvalidCartException)
- Checkout confirmation page requires session token or customer ownership (403 otherwise)
- Card number removed from Livewire public properties (uses Alpine.js local var)
- Frontend guards added to all cart/product components
- 3 new Pest tests for quantity validation (587 total, all passing)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Wire search icon click to open-search-modal Livewire event,
add event listener to Search Modal component, include search
modal in storefront layout.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cleanup fixes:
- Layout reference consistency (layouts::storefront in all 4 account components)
- deleteAddress() now aborts 403 on cross-customer attempts
- Removed dead placeholder dashboard.blade.php
- Extracted CurrencyFormatter trait (used by 6 admin components)
- Added memory_limit=512M to phpunit.xml
- Post-adversarial E2E re-run: 143/143 PASS, no regressions
- 587 Pest tests, all passing

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Search button click handler was outside Alpine x-data scope,
causing it to be silently ignored. Added x-data attribute.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
All 12 phases implemented, tested, and signed off:
- 587 Pest tests (1130 assertions), all passing
- 143 E2E test cases, 100% pass rate (verified twice)
- 5 adversarial issues found, fixed, and re-verified
- phpmetrics: 0 critical violations
- Controller final sign-off: APPROVED

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
32 Security Hotspots
12.9% Duplication on New Code (required ≤ 3%)
E Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant