WEB-02 — Reseller web — home, catalog, product, favorites
Home with banners, catalog with advanced sidebar filters (facets with counts), search, product detail, favorites — guest browsing without prices.
| Field | Details |
|---|---|
| Task code | WEB-02 |
| Phase | P1 — V1 build & integration |
| Product scope | V1 |
| Status | Planned |
| Start | Mon 30 Nov 2026 |
| Due | Tue 1 Dec 2026 |
| Responsible | Anis — Full-stack developer |
| Co-responsible | — |
| Effort | 1 person-day(s) planned · 5 from scratch · size S |
| Area · app | Reseller web · web |
| Depends on | WEB-01 |
| Unblocks | WEB-03 |
| Milestones | — |
Summary
Home with banners, catalog with advanced sidebar filters (facets with counts), search, product detail, favorites — guest browsing without prices.
Description
Browsing is where resellers and guests spend most time (cahier §5, §5.1, §5.2; CAT-07…CAT-09, CAT-11, CAT-12, PRM-05, AUTH-10). This task delivers the web home (RW-02) with banners, the daily offer countdown, popular categories, recommended products and, when signed in, account tiles; the catalog with advanced sidebar filters (RW-03) — category and sub-category, brand, per-category attributes, availability, promotion, new arrivals and a price range for signed-in users — combinable, with counts from catalog.facets and synced to the URL; search with suggestions; the product detail (RW-04) with gallery, specifications and attributes, the reseller's own price or the guest lock « Créez un compte pour voir les prix », availability En stock / En rupture only, quantity rules and similar products; and favorites (RW-05). Public pages are server-rendered so they load fast and can be shared, without prices for guests. Out of scope: cart and checkout (WEB-03).
Subtasks
| # | Subtask | Owner |
|---|---|---|
| 1 | RW-02 home from catalog.home: banners carousel, daily offer with countdown, popular categories, recommended products, account tiles (orders in progress, balance) when signed in | Anis |
| 2 | RW-03 sidebar filters: category/sub-category tree, brand, attribute filters rendered by type (list, number range with unit, yes/no), availability, promotion, new arrivals, price range (signed-in only) | Anis |
| 3 | Facet counts from catalog.facets with multi-select behaviour, active-filter chips, « Effacer les filtres », URL query sync, mobile filter drawer | Anis |
| 4 | Search box with catalog.products.suggest, results page with sort (pertinence, nouveautés, prix for signed-in), cursor pagination / infinite scroll | Anis |
| 5 | Product card and RW-04 detail: gallery, specs and attributes, description, price for the customer type or lock, availability pill, min/step/max quantity selector, add to cart, share link | Anis |
| 6 | Similar products and RW-05 favorites (add/remove, list) | Anis |
| 7 | Server rendering and caching of public pages (guest data), metadata and Open Graph images for shared product links | Anis |
| 8 | Design QA of RW-02 to RW-05 including the filter sidebar | Akram |
Deliverables
- apps/web/src/app/[locale]/{page.tsx,catalog/page.tsx,catalog/[categorySlug]/page.tsx,products/[productId]/page.tsx,favorites/page.tsx,search/page.tsx}
- apps/web/src/features/catalog/ (filter sidebar, facet chips, product card, quantity selector)
Acceptance criteria
- A guest sees products, promotions and banners but no price anywhere, and the add-to-cart is replaced by the sign-up prompt (AUTH-10)
- Combining sub-category, brand and two attribute filters returns the same results as the mobile app and shows updated counts (CAT-12)
- Availability is shown only as En stock / En rupture; no quantity is displayed (STK-07)
- A signed-in DEMI_GROS reseller sees the demi-gros price on cards and detail (PRC-02)
- Search and filtered catalog pages render in under 3 seconds on a throttled 4G profile (CAT-07, NFR-01)
- Filter state survives reload and can be shared by URL
Requirements covered
| Requirement | Title | Release |
|---|---|---|
| CAT-07 | Catalog browsing and search by name, reference or brand, with sorting; results in under 3 seconds | V1 |
| CAT-08 | Product detail: gallery, specifications, description, prices, availability, quantity limits, similar/complementary products, share | V1 |
| CAT-09 | Favorites | V1 |
| CAT-11 | Home merchandising: popular categories and recommended products (rules-based) | V1 |
| PRM-05 | Home banners and daily offer carousel with countdown | V1 |
| CAT-12 | Advanced, combinable filters on web and mobile: price range, category and sub-category, brand, attributes (power, connector, cable length, colour…), availability, promotion, new arrivals — with result counts | V1 |
| AUTH-10 | Guest mode: the reseller app and web can be browsed without an account; prices stay hidden until the visitor signs up and declares a customer type | V1 |
Screens
| Screen | Name | App |
|---|---|---|
| RW-02 | Home | RW |
| RW-03 | Catalog with advanced sidebar filters & search | RW |
| RW-04 | Product detail | RW |
| RW-05 | Favorites | RW |
API surface
| Endpoint group | Operations |
|---|---|
| Catalog & favorites | 12 |
| Promotions, banners & packs | 5 |
Test measures
- Playwright e2e: guest and signed-in runs of the same filter combination
- Lighthouse performance check on home, catalog and product detail (mobile profile)
- Component tests for attribute filter renderers
Risks
- Caching public pages could leak a signed-in price into guest HTML — cache only guest renders and fetch prices client-side or per session
KPI
- Delivered by Tue 1 Dec 2026 within 1 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.