Cine Power Planner

Accessories Store

Browse and order camera accessories from within the app

Overview

The Accessories Store provides a storefront-like experience for discovering and ordering camera accessories. Browse product cards, filter by category, add items to a shopping cart, and complete purchases through integrated Stripe checkout.

Requirements

Functional Requirements

IDRequirementAcceptance CriteriaPrioritySource
REQ-ACS-001The system shall display a grid of product cards with image, name, price, and descriptionNavigate to store → products displayed in grid; each card shows image, name, price, description; responsive columnsMustuseStore
REQ-ACS-002The system shall support filtering products by category and searching by nameSelect category → grid filters; type search → results narrow; clear → all shown; no results → empty state messageMustuseStore
REQ-ACS-003The system shall provide a shopping cart with add, remove, and quantity update capabilitiesClick "Add to Cart" → item added with badge count; open cart → quantity +/- buttons; remove → item deletedMustuseShoppingCart
REQ-ACS-004The system shall integrate with Stripe for secure checkout and payment processingClick "Checkout" → redirected to Stripe; complete payment → order confirmed; cancel → returned to cartMustuseShoppingCart
REQ-ACS-005The system shall show each product's images, options and description on its cardClick the product image → a lightbox opens with the full-size images; colour, text-colour and size options are chosen on the card itselfShouldProductCard
REQ-ACS-006The system shall track order status after purchaseComplete purchase → order appears in "My Orders"; status shown (Processing/Shipped/Delivered); click → order detailShoulduseStore
REQ-ACS-008The system shall create Stripe checkout sessions via server-side edge function (no client-side secret keys)Click checkout → server creates session; redirect to Stripe; payment success → redirect back with orderMuststore-create-checkout-session
REQ-ACS-009The system shall process Stripe webhooks for order fulfillment, recording order status and payment confirmationPayment succeeds → webhook fires → order marked "paid" in Supabase; failure → order marked "failed"Muststore-webhook
REQ-ACS-010The system shall persist the shopping cart and sync it to the user's accountAdd items → reload → cart restored with quantities; signed in, the cart follows you to another deviceShoulduseShoppingCart
REQ-ACS-011The system shall ship the product catalogue in the app bundle, with price, description, images and Stripe price idOpen the store → products render with no network call for the catalogue; each carries its Stripe price id for checkoutMustaccessoriesProducts

Data Requirements

  • Product catalog: A bundled module (app/src/data/accessoriesProducts.js); includes name, description, price, images, category and Stripe price id
  • Cart state: Held in app state, persisted with it, and synced to the account through syncEngine under the entity id user-shopping-cart
  • Orders: Recorded in Supabase after Stripe checkout completion
  • Persistence: The catalogue is a bundled module, so it needs no storage at all; the cart persists with app state

Constraints & Limits

  • Available to signed-in users only (requires account for checkout)
  • Stripe checkout redirects to external Stripe hosted page
  • The catalogue ships with the app — browsing needs no connection; only checkout and order history do
  • Prices displayed in the store currency (EUR by default)

Offline Behavior

  • Browsing works offline. The product catalogue ships inside the app, so the store opens and every product renders with no connection.
  • Your cart survives. It is stored with the rest of your app state and re-appears after a reload; when you are signed in it also syncs to your account, so it follows you between devices.
  • Checkout does not work offline — it redirects to Stripe, which needs a connection.
  • Order history needs a connection — orders are read back from the server.

Dependencies


Accessing the Store

Navigate to Accessories in the sidebar. The store loads the product catalog from the cloud.

Browsing Products

Product Cards

Each card shows:

  • Product image
  • Name and short description
  • Price
  • "Add to Cart" button

Filtering

  • Category filter: Click a category tab to narrow products
  • Search: Use the search bar to find products by name

Filtering on a phone

Below the tablet breakpoint the category pills fold behind one Filters button — six of them wrapped to three rows before — while the search field stays on screen. The sheet's button shows how many products your selection leaves.

Shopping Cart

  1. Click "Add to Cart" on product cards
  2. Open the Cart panel to review items
  3. Adjust quantities or remove items
  4. Click "Checkout" to proceed to Stripe payment

Checkout

  1. Review your cart summary
  2. Click "Proceed to Checkout"
  3. You'll be redirected to Stripe's secure hosted checkout
  4. Complete payment with credit card or supported payment method
  5. After successful payment, you're redirected back to the app

Tips

  1. Check device library first: Your owned gear may already cover what you need
  2. Compare prices: The store shows curated accessories — compare with your rental house pricing
  3. Add to owned gear: After purchase, add items to your Owned Gear list for ROI tracking

Last Updated: 2026-09-09 Version: 0.790.2