DES-06 — Day 6 — Reseller app: onboarding & account
Splash, welcome with guest browsing, guest price lock, sign-up (phone, OTP, store details, customer type), pending validation, sign-in, forgot password.
| Field | Details |
|---|---|
| Task code | DES-06 |
| Phase | P0 — Foundations (cadrage, UX/UI, architecture & contract) |
| Product scope | V1 |
| Status | Planned |
| Start | Sun 25 Oct 2026 |
| Due | Sun 25 Oct 2026 |
| Responsible | Akram — UI/UX designer |
| Co-responsible | — |
| Effort | 1 person-day(s) planned · 1.25 from scratch · size S |
| Area · app | Reseller app design · design |
| Depends on | DES-05 |
| Unblocks | MOB-06, DES-07 |
| Milestones | — |
Summary
Splash, welcome with guest browsing, guest price lock, sign-up (phone, OTP, store details, customer type), pending validation, sign-in, forgot password.
Description
Day 6 designs the reseller app's onboarding and account access: RA-01…RA-08 and RA-41 guest mode. A visitor can browse as a guest with prices locked, sign up (phone, OTP, store details, declared customer type, password, optional invitation code), wait for validation, sign in and recover a password. Inputs: cahier §5 and §6.6, the delegate-01 reference for the form pattern (there is no reseller onboarding reference), requirements AUTH-03/04/05/07/08/10/11, ADM-07 and IVT-04, and the operations auth.otp.send, auth.otp.verify, auth.signup.reseller, auth.login, auth.password.reset, invitations.resolve, reference.wilayas, reference.communes, appConfig.get. Akram also drafts the delegate splash, sign-in and reset (DA-01…03) as variants, because MOB-06 builds the authentication of both apps right after today. Consumers: Imad's MOB-06 (RA-02…08, RA-41, DA-02, DA-03) and MOB-05 (RA-01).
Subtasks
| # | Subtask | Owner |
|---|---|---|
| 1 | RA-01 Démarrage: loading; forced update (426 UPGRADE_REQUIRED, store link); maintenance (503, with the expected end time); offline at launch, with a cached session (home + offline banner) or without one | Akram |
| 2 | RA-02 Bienvenue: first launch; opened from an invitation link with the code AB12-CD34 pre-filled; three exits « Créer un compte », « Se connecter », « Découvrir le catalogue » (guest) | Akram |
| 3 | RA-03 Inscription — téléphone: phone shown as 0555 12 34 56 and stored E.164; invalid number; PHONE_ALREADY_EXISTS offering sign-in or the account claim of a field-created prospect (AUTH-05); optional invitation code invalid or expired | Akram |
| 4 | RA-04 Vérification du code: 6 boxes with SMS autofill; 5-minute validity countdown; resend after 60 s (OTP_RESEND_TOO_SOON); 5 sends per hour (RATE_LIMITED); 5 wrong attempts (TOO_MANY_ATTEMPTS); expired code | Akram |
| 5 | RA-05 Inscription — magasin: store name, owner, wilaya → commune cascade, address, business type (BUSINESS_TYPE list); required customer-type cards Super-gros / Demi-gros / Détail with « Vérifié par HOCO lors de la validation de votre compte » and the error « Choisissez votre type de client : super-gros, demi-gros ou détail. »; password and confirmation with the rule shown; submitting | Akram |
| 6 | RA-06 Compte en attente: pending (declared-type prices visible behind a Decision pending sticker; « Commander » locked by ACCOUNT_PENDING_VALIDATION with an explanation); rejected (reason + « Contacter l'assistance » via WhatsApp); suspended (ACCOUNT_SUSPENDED) | Akram |
| 7 | RA-07 Connexion: « Numéro ou mot de passe incorrect. »; 15-minute lockout after 5 failures, with a countdown; routing for pending and suspended accounts. RA-08 Mot de passe oublié: phone → OTP (reuses RA-04) → new password → success → sign-in | Akram |
| 8 | RA-41 Mode invité: price lock « Créez un compte pour voir les prix » on cards and product detail; sign-up prompt sheet triggered by add to cart, favourite, the Panier / Commandes / Compte tabs, the price filter and « Commander maintenant »; guest banner on home « Vous naviguez en invité »; no price facet or price sort; WhatsApp button still available | Akram |
| 9 | Draft DA-01 / DA-02 / DA-03 as variants of RA-01 / RA-07 / RA-08: delegate header, no sign-up link (finalised on Day 11) | Akram |
| 10 | Write every message in final French (form patterns: vous, sentence case, no-break spaces) and annotate each frame with its API op ids and error codes | Akram |
| 11 | Feasibility check: SMS autofill, invitation-code prefill from the link or install referrer, session restore, guest-to-account transition without losing the browsing context | Imad |
| 12 | Asynchronous HOCO look on Day 7: a prototype link plus 5 questions (customer-type wording, prices before validation, required store fields, invitation code placement, guest banner tone) | Akram |
Deliverables
- Claude Design › Reseller App ›
RA · Onboarding & account: RA-01…RA-08 and RA-41 with every state, namedRA-xx · Name · state - Draft variants DA-01…DA-03 in Claude Design › Delegate App ›
DA · Access - Onboarding copy sheet (every field label, helper and error message in French) annotated on the frames
- Asynchronous client feedback link with 5 questions
Acceptance criteria
- Every state listed above has its own frame, and the guest variant exists for each bottom-nav tab
- The customer type is required, uses the CustomerType French labels and is read-only once submitted (AUTH-11)
- No guest frame shows a price, a price filter or a price sort
- Every auth error code has its French message on a frame
- Targets are 48 dp or more, OTP boxes 48 × 56 dp, contrast 4.5:1 or more, labels never placeholders
- Imad's review answer is OK or OK with notes
Requirements covered
| Requirement | Title | Release |
|---|---|---|
| AUTH-03 | Reseller self sign-up: phone verified by OTP, store details, declared customer type (super-gros, demi-gros, détail), password, optional invitation code | V1 |
| AUTH-04 | Reseller sign-in (phone + password) and password reset by OTP | V1 |
| AUTH-05 | Account claim: a prospect created in the field is activated by the reseller without creating a duplicate | V1 |
Screens
| Screen | Name | App |
|---|---|---|
| RA-01 | Splash & version check | RA |
| RA-02 | Welcome (sign in, sign up, browse as guest) | RA |
| RA-03 | Sign-up — phone & invitation code | RA |
| RA-04 | OTP verification | RA |
| RA-05 | Sign-up — store details, customer type & password | RA |
| RA-06 | Account pending validation / rejected | RA |
| RA-07 | Sign in | RA |
| RA-08 | Forgot password | RA |
| RA-41 | Guest mode — price lock and sign-up prompts | RA |
Test measures
- Prototype walkthrough guest → sign-up → pending → sign-in, with Imad
- Error-coverage check: each error of the auth operations maps to a frame or a message
- 130 % text scale on RA-05 and RA-04
Risks
- Prices visible before or after validation is still open — design both variants behind a Decision pending sticker (default: right away); the ordering lock stays until validation either way.
- The account claim is easy to get wrong — confirm with Anis that the OTP links the existing prospect without creating a duplicate (AUTH-05), and design the claim confirmation explicitly.
KPI
- Delivered by Sun 25 Oct 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.
DES-05 — Day 5 — Screen inventory validation, user flows & wireframes
Validate the inventory on this site (count, features per screen, states), draw the reseller, delegate and back-office flows, wireframe checkout, the visit flow and tour closing.
DES-07 — Day 7 — Reseller app: home, search & catalog
Home (guest and signed-in), search, scanner, catalog with tabs and chips, advanced filters and sort sheets, regional WhatsApp button.