Add frontend (without translations)
Summary by CodeRabbit
-
New Features
- Shopping cart, basket and purchasable albums/photos with flexible pricing
- Multi-step checkout (online/offline) with Mollie and card support, order list/download, and order actions
- Checkout UI: payment forms, order summary, disclaimers and guest/consent flows
- Admin maintenance tools for cleaning/fulfilling old orders
-
Chores
- Added Mollie and Stripe client dependencies for payment integrations
✏️ Tip: You can customize this high-level summary in your review settings.
📝 Walkthrough
Walkthrough
Adds a webshop subsystem: new frontend views, components, Pinia stores, composables, and services for catalog/order/checkout and purchasable items; introduces payment integrations (Mollie/Stripe deps), maintenance endpoints, routing, type/ext constants, and many presentational Tailwind-like class adjustments across the UI.
Changes
| Cohort / File(s) | Summary |
|---|---|
Package & deps package.json |
Added @mollie/api-client and @stripe/stripe-js to dependencies. |
Webshop views & routes resources/js/views/webshop/*, resources/views/components/webshop.blade.php, resources/views/vueapp.blade.php, resources/js/router/routes.ts |
New webshop pages (BasketList, CheckoutPage, OrderList, OrderDownload, PurchasablesList), blade updates to include webshop component and conditional external scripts, and new routes (/purchasables, /basket, /checkout/:step?, /orders, /order/:orderId?/:transactionId?). |
Webshop UI components resources/js/components/webshop/*, resources/js/components/forms/gallery-dialogs/BuyMeDialog.vue, resources/js/components/webshop/QrCodeLink.vue, resources/js/components/webshop/ThankYou.vue |
Added multiple webshop UI components: Disclaimer, InfoSection, OrderDate, OrderLegend, OrderListAction, OrderStatus, OrderSummary, PaymentForm, PaymentInProgress, TransactionIdLink, UsernameEmail, QrCodeLink, ThankYou, and BuyMe dialog. |
Payment & card widgets resources/js/components/forms/card/*, resources/js/components/forms/basic/InputCurrency.vue |
New Card preview, CardForm, cardTypes, images asset module, and InputCurrency component for currency input and card entry handling. |
Checkout composables resources/js/composables/checkout/* |
New composables: useMollie, useOrder, useStepOne, useStepTwo, useStepOffline, useSteps to orchestrate checkout and payment flows. |
Buy flow composable resources/js/composables/album/buyMeActions.ts |
New useBuyMeActions composable managing buy dialog state, price selection, and add-to-order flows. |
Services resources/js/services/webshop-service.ts, resources/js/services/shop-management-service.ts, resources/js/services/maintenance-service.ts |
New WebshopService (Catalog/Order/Checkout), ShopManagementService (purchasable CRUD and types), and added maintenance methods (oldOrdersCheck/Do, fulfillOrdersCheck/Do). |
Pinia stores resources/js/stores/OrderManagement.ts, resources/js/stores/CatalogState.ts, resources/js/stores/ShopManagement.ts, updates to resources/js/stores/LycheeState.ts, resources/js/stores/UsersAndGroupsState.ts |
Added order/catalog/shop-management stores, type aliases, and converted some load() actions to async. |
Album/photo purchasable integration resources/js/components/forms/album/AlbumPurchasable.vue, resources/js/components/forms/shop-management/PricesInput.vue, resources/js/components/gallery/albumModule/*, resources/js/components/gallery/albumModule/thumbs/*, resources/js/components/drawers/AlbumEdit.vue |
New admin UI for purchasables, prices input component, thumbnail buy button (ThumbBuyMe), buy-flow wiring across PhotoThumb/PhotoThumbPanel/AlbumPanel, and AlbumEdit purchasable tab. |
Gallery/header/menu/routing resources/js/components/headers/*, resources/js/composables/contextMenus/leftMenu.ts, resources/js/views/gallery-panels/*, resources/js/menus/LeftMenu.vue |
Basket UI in headers, left menu orders/purchasables entries, event propagation for buy actions, added store usage in gallery views, and adjusted menu class utilities. |
Type defs & constants resources/js/lychee.d.ts, resources/js/config/constants.ts, resources/js/style/preset.ts |
Extended types for shop/order/embed, added CheckoutSteps and currencyOptions with builder, and theme/preset updates (stepper/datatable hover styling). Note: duplicate currencyOptions/builders observed. |
Maintenance UI resources/js/components/maintenance/*, resources/js/views/Maintenance.vue |
Added MaintenanceOldOrders and MaintenanceFulfillOrders components, integrated new maintenance service methods into the Maintenance view. |
| Styling utility mass edits many resources/js/components/**, resources/js/views/* |
Wide set of presentational class adjustments (e.g., bg-gradient-to-b → bg-linear-to-b, flex-grow → grow, border-1 → border, spacing/token conversions) across numerous components. |
| Small UI tweaks & cleanups assorted files ( Fieldset.vue, PhotoDetails.vue, AlbumProperties.vue, AlbumVisibility.vue, etc.) |
Minor template/class tweaks and small refactors (removed unused import, adjusted min-width utilities, minor class name fixes). |
Estimated code review effort
🎯 4 (Complex) | ⏱️ ~60–90 minutes
Areas to focus review on:
- Checkout orchestration: useStepOne/useStepTwo/useMollie and Mollie mount/unmount lifecycle and token/session flows.
- Payment handling and security: CardForm formatting/validation, InputCurrency conversions, and how card data/tokenization paths are used.
- API surface and typings: WebshopService and ShopManagementService signatures vs backend contract and new lychee.d.ts additions (orders, checkout fields).
- Pinia stores: concurrency guards, load()/refresh() logic, and interaction between OrderManagement, CatalogState, and ShopManagement.
- buyMeActions and buy flow wiring: price filtering, auto-add vs dialog, event propagation across PhotoThumbPanel/PhotoThumb/PhotoThumbPanelList.
- Large-scale styling replacements: verify gradient, spacing and grow/shrink utility changes for regressions.
- Duplicate declarations: currencyOptions/buildCurrencySelection appear duplicated in constants.ts — check for accidental dupes.
Poem
🐇
I hopped from thumb to checkout lane,
With carrot coins and gentle mane.
A tiny cart, a little cheer,
I nudged "buy" — the sale was near.
The rabbit dances — webshop's here!
Pre-merge checks
❌ Failed checks (1 warning)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | ⚠️ Warning | Docstring coverage is 8.51% which is insufficient. The required threshold is 80.00%. | You can run @coderabbitai generate docstrings to improve docstring coverage. |
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.
Comment @coderabbitai help to get the list of available commands and usage tips.
Codecov Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 90.27%. Comparing base (aea38d1) to head (d11f742).
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.