HOCO B2B
Team tasksImad

MRA-03 — Reseller app — product detail & favorites

Gallery, variants, prices, availability, quantity stepper with limits, add to cart / order now, specs sheet, similar products, favorites, share.

FieldDetails
Task codeMRA-03
PhaseP1 — V1 build & integration
Product scopeV1
StatusPlanned
StartWed 11 Nov 2026
DueThu 12 Nov 2026
ResponsibleImad — Mobile developer (Flutter)
Co-responsible—
Effort0.75 person-day(s) planned · 3 from scratch · size S
Area · appReseller app · mobile
Depends onDES-08
Unblocks—
Milestones—

Summary

Gallery, variants, prices, availability, quantity stepper with limits, add to cart / order now, specs sheet, similar products, favorites, share.

Description

The product page is where the reseller decides and orders, so it must show their own price, availability and quantity rules exactly as the cart will enforce them (CAT-08, ORD-02). Scope: product detail RA-14 (gallery, variant selector, customer-type price with promotion and recommended price, availability pill, quantity stepper with min/step/max, « Ajouter au panier » and « Commander maintenant », similar products, share), full specifications RA-15 and favorites RA-16. Guests see everything except prices and cannot add to cart or favorites (AUTH-10). It needs catalog.products.get|similar, favorites.* and cart.items.add (SRV-11, SRV-12, SRV-15) and Akram's DES-08 frames. Reusable parts (variant selector, stepper wiring, price block) go to hoco_catalog for MDA-09; MRA-04 picks up the cart lines created here.

Subtasks

#SubtaskOwner
1ProductDetailScreen RA-14 on catalog.products.get: hero gallery with swipe and pinch-zoom, brand and reference, VariantSelector (colour, length, power…) switching price, availability and imagesImad
2PriceBlock: the caller's price (customer type), promotion price with strike-through and end date, « Prix conseillé » (recommendedPrice), HT/TTC per the display decision; lock state for guestsImad
3AvailabilityPill (« En stock » / « En rupture ») — out-of-stock variants cannot be added; no quantity ever shownImad
4QuantityStepper bound to minQty, qtyStep and maxQty from the variant; inline message instead of a server QUANTITY_NOT_ALLOWEDImad
5« Ajouter au panier » → POST /cart/items with an Idempotency-Key, cart badge refresh, snackbar « Ajouté au panier » with « Voir le panier »; « Commander maintenant » → add then open RA-17Imad
6SpecificationsScreen RA-15: attribute table (from VariantAttributeValue), description, package contentsImad
7Similar and complementary products rail (catalog.products.similar)Imad
8Favorites: optimistic heart toggle (PUT/DELETE /favorites/{productId}, rollback on failure) and FavoritesScreen RA-16 (favorites.list) with add-to-cartImad
9Share via share_plus: product name, image and public product link (URL scheme to confirm with Anis), works for guestsImad
10Guest and pending behaviour: lock + SignUpPromptSheet for add and favorite; pending resellers may fill the cart (checkout blocked later)Imad

Deliverables

  • apps/reseller/lib/src/features/product/ (detail, specifications) and features/favorites/
  • packages/hoco_catalog/lib/src/product/variant_selector.dart, price_block.dart
  • Goldens of product detail for guest, in-stock, out-of-stock and promotion states

Acceptance criteria

  • The price shown equals the cart line price after adding (same customer type, same promotion) (PRC-05)
  • The stepper never lets the user go below minQty, off-step or above maxQty (ORD-02)
  • An out-of-stock variant shows « En rupture » and its add button is disabled; no quantity appears anywhere (STK-07)
  • A guest sees the lock instead of every price and is sent to sign-up on « Ajouter au panier »; after sign-up the same product reopens (AUTH-10)
  • Favorites toggle survives a restart and syncs with the web app (CAT-09)
  • Double-tapping « Ajouter au panier » adds the quantity once

Requirements covered

RequirementTitleRelease
CAT-08Product detail: gallery, specifications, description, prices, availability, quantity limits, similar/complementary products, shareV1
CAT-09FavoritesV1
ORD-02Cart rules: minimum amount, minimum quantities and steps, maximum per order, stock and credit checksV1
AUTH-10Guest mode: the reseller app and web can be browsed without an account; prices stay hidden until the visitor signs up and declares a customer typeV1

Screens

ScreenNameApp
RA-14Product detailRA
RA-15Full specificationsRA
RA-16FavoritesRA

API surface

Endpoint groupOperations
Catalog & favorites12
Cart & checkout8

Test measures

  • Widget tests of the stepper bounds and of variant switching
  • Golden tests of PriceBlock (guest lock, promotion, recommended price)
  • Integration test: product → add → cart badge → cart line matches price and quantity

Risks

  • HT vs TTC display is still an open decision — keep it in one PriceText setting so the switch is one line

KPI

  • Delivered by Thu 12 Nov 2026 within 0.75 person-day(s).
  • Every acceptance criterion above demonstrated before hand-off; linked requirements' acceptance criteria pass.
  • Zero open critical defects, permission gaps or data-integrity regressions at sign-off.

Generated from content/plan/tasks.json by scripts/generate-team-tasks.mjs. Dates are computed by the scheduler (Sunday–Thursday weeks, holidays excluded) — change the plan, not this page.

On this page