Open
Conversation
Implements the complete Phase 1 foundation layer: - Config: SQLite WAL mode, customer auth guard/provider, rate limiters - Migrations: organizations, stores, store_domains, store_users, store_settings, customers - Models: Organization, Store, StoreDomain, StoreUser (pivot), StoreSettings, Customer - Enums: StoreStatus, StoreUserRole, StoreDomainType - Middleware: ResolveStore (hostname-based storefront, session-based admin) - Tenant isolation: BelongsToStore trait + StoreScope global scope - Auth: Admin login/logout (Livewire), Customer login/register (Livewire, store-scoped) - CustomerUserProvider: Injects store_id into credential queries - Authorization: 10 policies with ChecksStoreRole trait and permission matrix - Test helpers: createStoreContext(), actingAsAdmin(), actingAsCustomer() - 31 tests covering tenant resolution, store isolation, admin auth, customer auth Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add complete catalog system with: - 9 migrations for products, options, variants, inventory, collections, and media tables - 7 models (Product, ProductOption, ProductOptionValue, ProductVariant, InventoryItem, Collection, ProductMedia) with relationships - 7 enums (ProductStatus, VariantStatus, CollectionStatus, CollectionType, MediaType, MediaStatus, InventoryPolicy) - 7 factories with useful states - ProductService (CRUD + status transitions with state machine validation) - VariantMatrixService (cartesian product rebuild, orphan handling) - InventoryService (reserve/release/commit/restock with transactions) - HandleGenerator (unique slug generation per store) - ProcessMediaUpload job - Custom exceptions (InvalidProductTransitionException, InsufficientInventoryException) - 50 passing tests across 6 test files Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add complete theme system with storefront rendering infrastructure: - Migrations for themes, theme_files, theme_settings, pages, navigation_menus, navigation_items - Models with relationships, enums (ThemeStatus, PageStatus, NavigationItemType), and factories - ThemeSettingsService singleton for loading/caching active theme settings - NavigationService with buildTree and resolveUrl for dynamic navigation - Storefront Blade layout with header, footer, cart drawer, search modal, dark mode - Livewire components: Home, Collections (Index/Show), Products/Show, Cart/Show, CartDrawer, Search (Index/Modal), Pages/Show - Reusable Blade components: breadcrumbs, price, badge, product-card, quantity-selector, pagination, address-form, order-summary - Error pages (404, 503) - Storefront routes - Seeders for themes, pages, and navigation menus - 30 passing tests covering models, services, and storefront rendering Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add SQLite FTS5-based search system: - 3 migrations (search_settings, search_queries, products_fts virtual table) - SearchSettings and SearchQuery models - SearchService with search (FTS5 + store scoping + filters + sorting + pagination), autocomplete (prefix matching), syncProduct, and removeProduct - ProductObserver to auto-sync products into FTS5 index on create/update/delete - SQLite-compatible relevance ordering using CASE expressions - Search query logging for analytics - 18 passing tests (SearchTest + AutocompleteTest) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Mock payment provider with magic card numbers (4242=success, 0002=decline, 9995=insufficient) - OrderService: createFromCheckout with atomic order creation, inventory commit/reserve, payment recording - Bank transfer support with deferred capture and admin confirmation flow - Sequential order numbering per store starting at #1001 - Auto-fulfillment for digital products (requires_shipping=false) - RefundService: full/partial refunds with optional inventory restocking - FulfillmentService with payment guard, multi-shipment support, status transitions - CancelUnpaidBankTransferOrders scheduled job - 7 migrations, 8 models, 7 enums, 7 factories, 5 domain events - 41 tests with 104 assertions, all passing Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- AnalyticsEvent model with client_event_id deduplication per store - AnalyticsService with track(), trackBatch(), and getDailyMetrics() - AggregateAnalytics job scheduled daily at 01:00, aggregates events into pre-computed daily metrics (orders, revenue, AOV, visits, funnel counts) - AnalyticsDaily model with store_id+date unique constraint - 16 tests covering event ingestion and aggregation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Account dashboard with recent orders and logout - Order history (paginated) and order detail with line items, summary totals, fulfillment timeline, and address display - Address book with full CRUD, default address management, and customer isolation (prevents cross-customer access) - Customer auth middleware redirects guests to /account/login - 19 tests covering account pages, order access control, address CRUD, validation, and default toggling Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…l management pages
Full admin panel with Livewire components for all store management:
- Dashboard with KPI tiles, date range filtering, orders chart, top products, conversion funnel
- Products CRUD with search, status filtering, bulk actions, and form validation
- Orders management with search, status/financial/fulfillment filters, detail view with fulfillment and refund actions
- Customers listing with search, detail view with recent orders and addresses
- Collections, discounts, pages, navigation, themes, analytics, and settings index pages
- Admin layout shell with sidebar navigation and top bar with store switcher
- 20 feature tests covering dashboard, product management, and order management
- Fix ProductStatus enum handling in views and components (use ->value for string operations)
- Fix route('home') references to url('/') for multi-tenant compatibility
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ith circuit breaker - 6 migrations: apps, app_installations, oauth_clients, oauth_tokens, webhook_subscriptions, webhook_deliveries - 6 models with factories and enums for all status fields - WebhookService: dispatch to matching subscriptions, HMAC-SHA256 signing and verification - DeliverWebhook job: HTTP POST with signature headers, exponential backoff (6 attempts), circuit breaker pauses subscription after 5 consecutive failures - 11 tests covering signature generation/verification, delivery lifecycle, retries, circuit breaker, and subscription filtering Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… demo seeders - Styled 404 and 503 error pages with dark mode support - JSON structured logging channel in config/logging.php - Comprehensive seeder suite (14 seeders in dependency order): Organization, Store, StoreDomain, User, StoreSettings, TaxSettings, Shipping, Collection, Product (20 fashion + 5 electronics with full option/variant/inventory graphs), Discount (5 codes), Customer (10 with addresses), Theme, Page, Navigation - DatabaseSeeder orchestrates all seeders in correct FK order - migrate:fresh --seed runs successfully with full demo data Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Fix missing dark: prefix on status badges in account dashboard - Add dark:text-gray-400 to all admin empty states and data cells - Add dark mode text colors to admin order summary, payment, settings - Add overflow-x-auto to storefront account tables for mobile - Add wire:key to all loops in Livewire components (dashboard tiles, chart bars, top products, funnel steps, order lines, fulfillments, refunds, payments, variants, addresses, domains, nav items, stores) - Add wire:loading states to all form submit buttons (customer login, register, admin login, address save, product save, order fulfill, refund, cancel, confirm payment, logout) - Fix toast notification dark mode (border, text, close button) All 314 tests pass. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…n/customer fixes Add OrderSeeder (18 orders across both stores with full entity graphs), AnalyticsSeeder (31 days of daily metrics + 220 events), and SearchSettingsSeeder. Fix CustomerSeeder idempotency and add Electronics customers. Fix NavigationSeeder and PageSeeder current_store binding for correct StoreScope resolution. Update DatabaseSeeder orchestration to include all 18 seeders. Add progress.md tracking file. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Fix browser test failures across all 18 test suites (143 browser tests,
314 unit/feature tests all passing):
- Fix case-sensitive button text in Cart/Checkout tests ("Add to Cart")
- Fix admin sidebar navigation using a:has-text() CSS selectors to avoid
matching section headers instead of links
- Add @fluxscripts to admin and storefront layouts for Flux UI JS
- Fix toast messages surviving redirects via session flash
- Fix enum-to-string bugs in Pages and Collections admin views
- Fix FulfillmentService and RefundService method names in Orders/Show
- Fix admin auth redirect route in DashboardTest
- Fix Discount form NOT NULL constraint on starts_at
- Run vendor/bin/pint --dirty for code style compliance
- Verify fresh migrate:seed succeeds
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The storefront layout already had a skip link. This adds the same pattern to the admin layout so keyboard users can bypass the sidebar navigation and jump directly to the main content area. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add ResolveStoreFromHostname middleware to global web stack so Livewire AJAX update requests can resolve the current store from hostname - Add shop.test as a storefront domain in StoreDomainSeeder for local dev - Update progress.md to reflect all 12 phases complete Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


No description provided.