@wazir-dev/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,1494 @@
1
+ # E-Commerce Design Patterns
2
+
3
+ > Comprehensive design expertise module covering pattern anatomy, best-in-class
4
+ > examples, user flow mapping, micro-interactions, anti-patterns, accessibility,
5
+ > cross-platform adaptation, and decision frameworks for e-commerce experiences.
6
+
7
+ ---
8
+
9
+ ## Table of Contents
10
+
11
+ 1. [Pattern Anatomy](#1-pattern-anatomy)
12
+ 2. [Best-in-Class Examples](#2-best-in-class-examples)
13
+ 3. [User Flow Mapping](#3-user-flow-mapping)
14
+ 4. [Micro-Interactions](#4-micro-interactions)
15
+ 5. [Anti-Patterns](#5-anti-patterns)
16
+ 6. [Accessibility](#6-accessibility)
17
+ 7. [Cross-Platform Adaptation](#7-cross-platform-adaptation)
18
+ 8. [Decision Tree](#8-decision-tree)
19
+ 9. [Quick Reference Checklist](#9-quick-reference-checklist)
20
+ 10. [Sources & Citations](#10-sources--citations)
21
+
22
+ ---
23
+
24
+ ## 1. Pattern Anatomy
25
+
26
+ ### 1.1 Product Listing Page (PLP)
27
+
28
+ The product listing page is the primary browsing surface where users scan, filter,
29
+ and compare products. It must balance information density with scannability.
30
+
31
+ **Core Components:**
32
+
33
+ - **Product card** -- thumbnail image, product name, price, star rating, badge
34
+ (sale, new, bestseller), quick-add or quick-view action
35
+ - **Grid / list toggle** -- grid view prioritizes imagery (fashion, home decor);
36
+ list view prioritizes specs (electronics, B2B). Default to grid for consumer
37
+ retail. Offer both when product types benefit from comparison
38
+ - **Filter panel** -- placed in a left sidebar on desktop; drawer or bottom sheet
39
+ on mobile. Use checkboxes (not radio buttons) so users can multi-select within
40
+ a category. Common facets: price range, size, color, brand, rating, availability
41
+ - **Sort controls** -- dropdown above the grid. Standard options: "Best Sellers",
42
+ "Price: Low to High", "Price: High to Low", "Newest", "Avg. Customer Review".
43
+ Default sort should match user intent (bestsellers for general browse, relevance
44
+ for search results)
45
+ - **Pagination / infinite scroll** -- paginated lists give users a sense of
46
+ position and allow bookmarking. Infinite scroll works for casual browsing but
47
+ must include a "back to top" button and preserve scroll position on return.
48
+ "Load more" buttons are a pragmatic hybrid
49
+ - **Result count and applied filter summary** -- show "Showing 1-24 of 312
50
+ results" and active filter chips with remove actions
51
+
52
+ **Design Guidelines (Baymard Institute):**
53
+
54
+ - Keep product cards to 3-4 columns on desktop, 2 columns on tablet, 1-2 on
55
+ mobile. Overly dense grids reduce tap-target size on touch devices
56
+ - Ensure filter updates happen in real time without requiring a separate "Apply"
57
+ button -- reduces friction, especially on mobile
58
+ - Make filters sticky as users scroll on mobile so they remain accessible without
59
+ scrolling back to the top
60
+ - Show thumbnail swatches (color variants) directly on the card to reduce
61
+ unnecessary page loads
62
+
63
+ ### 1.2 Product Detail Page (PDP)
64
+
65
+ The product detail page is where purchase decisions happen. Every element must
66
+ reduce uncertainty and build confidence.
67
+
68
+ **Core Components:**
69
+
70
+ - **Image gallery** -- primary hero image with zoom capability, thumbnail strip
71
+ or dot indicators, 360-degree view where applicable, lifestyle/in-context
72
+ images alongside studio shots. Video should autoplay on hover (desktop) or
73
+ appear as a distinct thumbnail (mobile)
74
+ - **Product title and brand** -- clear hierarchy: brand name, product name,
75
+ variant descriptor. Use semantic heading levels (h1 for product name)
76
+ - **Price block** -- current price, original price (struck through if
77
+ discounted), discount percentage or savings amount, unit pricing where
78
+ applicable. Position near the add-to-cart button
79
+ - **Variant selectors** -- color swatches with labels (not color-only), size
80
+ selectors with availability indicators, configuration options. Update the hero
81
+ image when a variant is selected
82
+ - **Add to cart / Buy now** -- primary CTA, visually dominant, above the fold.
83
+ "Buy Now" for express checkout, "Add to Cart" for continued browsing. Include
84
+ quantity stepper adjacent to the CTA
85
+ - **Product description** -- scannable format: key features as bullet points,
86
+ expandable detailed description, specifications in a structured table
87
+ - **Social proof** -- star rating with review count near the title, "X people
88
+ bought this today", badges for bestseller or editor's pick status
89
+ - **Shipping and returns** -- estimated delivery date, free shipping threshold
90
+ indicator, return policy summary. Position near the price or CTA
91
+ - **Related and recommended products** -- "Frequently bought together",
92
+ "Customers also viewed", "Complete the look" -- positioned below the fold
93
+
94
+ **NNG Guidelines:**
95
+
96
+ - Nielsen Norman Group's 108 product page guidelines emphasize showing key
97
+ information (price, availability, primary image, CTA) above the fold
98
+ - Use progressive disclosure: show summary first, let users expand for full specs
99
+ - Never auto-select a variant the user has not chosen (especially size) -- this
100
+ leads to incorrect purchases and returns
101
+
102
+ ### 1.3 Shopping Cart
103
+
104
+ The cart serves dual purposes: order summary and last chance for upsell. It must
105
+ clearly communicate what the user is buying and what it costs.
106
+
107
+ **Core Components:**
108
+
109
+ - **Line items** -- product thumbnail, name, selected variants (size, color),
110
+ unit price, quantity control, line total, remove action
111
+ - **Quantity stepper** -- minus/plus buttons with numeric input. Enforce min (1)
112
+ and max (stock limit). Update line total and order summary in real time
113
+ - **Order summary** -- subtotal, shipping estimate (or "Free" with threshold
114
+ messaging), tax estimate, promo code input, order total
115
+ - **Promo code field** -- collapsible by default to avoid implying the user is
116
+ missing a discount. Validate inline with clear success/error feedback
117
+ - **Cart-level CTAs** -- "Proceed to Checkout" (primary), "Continue Shopping"
118
+ (secondary/link). Express checkout options (Apple Pay, Google Pay, PayPal)
119
+ should appear here as well
120
+ - **Empty cart state** -- friendly message, link to popular categories or
121
+ recently viewed items. Never show a blank page
122
+ - **Save for later / Move to wishlist** -- allow users to declutter the cart
123
+ without losing items
124
+
125
+ **Key Principles:**
126
+
127
+ - Persist cart contents across sessions (use server-side storage for logged-in
128
+ users, local storage with cookie fallback for guests)
129
+ - Show a mini-cart (flyout or drawer) on add-to-cart for quick confirmation
130
+ without navigating away from the PLP/PDP
131
+ - Display stock warnings ("Only 3 left") at the line-item level, not just on
132
+ the PDP
133
+
134
+ ### 1.4 Checkout
135
+
136
+ Checkout is the highest-friction point in the e-commerce funnel. Baymard
137
+ Institute research shows that the average large e-commerce site can achieve a
138
+ 35% increase in conversion rate through checkout UX improvements alone.
139
+
140
+ **Core Components:**
141
+
142
+ - **Contact information** -- email (for order confirmation and guest checkout
143
+ identification), phone (optional, for delivery notifications)
144
+ - **Shipping address** -- address autocomplete (Google Places or similar),
145
+ country/region selector, saved addresses for returning users
146
+ - **Shipping method** -- clear options with price, estimated delivery date, and
147
+ carrier name. Pre-select the most popular option
148
+ - **Payment** -- credit/debit card form with real-time validation, digital
149
+ wallets (Apple Pay, Google Pay) prominently above manual entry, saved payment
150
+ methods for returning users
151
+ - **Order review** -- collapsible order summary always visible (sticky sidebar
152
+ on desktop, expandable section on mobile). Show item thumbnails, quantities,
153
+ and all cost components
154
+ - **Place order CTA** -- single, prominent button. Label should be explicit:
155
+ "Place Order" or "Pay $X.XX" (including the amount reinforces transparency)
156
+
157
+ **Baymard Institute Findings:**
158
+
159
+ - The average checkout has 23.48 form elements; the ideal is 12-14
160
+ - 39% of shoppers abandon when surprised by additional fees
161
+ - 18% abandon due to a "too long / complicated checkout process"
162
+ - 24% abandon because the site required account creation
163
+
164
+ ### 1.5 Order Confirmation
165
+
166
+ The confirmation page and email serve as receipts and set expectations for
167
+ what happens next.
168
+
169
+ **Core Components:**
170
+
171
+ - **Order number** -- prominently displayed, easy to copy
172
+ - **Order summary** -- all items, quantities, prices, discounts applied,
173
+ shipping method, estimated delivery date, billing and shipping addresses
174
+ - **Next steps** -- "Track your order", "Create an account" (for guest
175
+ checkout users, post-purchase -- never pre-purchase), "Continue shopping"
176
+ - **Confirmation email** -- sent immediately, mirrors the on-page confirmation,
177
+ includes a direct link to order status
178
+ - **Cross-sell** -- subtle post-purchase recommendations ("Pairs well with your
179
+ purchase"). Keep this secondary to the confirmation content
180
+
181
+ **Design Principles:**
182
+
183
+ - Provide a clear visual success state (checkmark icon, green accent, "Thank
184
+ you" heading) to give users immediate confidence
185
+ - Never require the user to screenshot this page -- all information must also
186
+ be in the email
187
+ - Include customer support contact information in case of issues
188
+
189
+ ### 1.6 Wishlist / Save for Later
190
+
191
+ Wishlists serve as persistent intent signals, enabling users to bookmark items
192
+ for future purchase or gifting.
193
+
194
+ **Core Components:**
195
+
196
+ - **Heart / bookmark icon** -- placed on product cards and PDPs. Toggle state
197
+ with filled/unfilled visual. Allow guest users to save items (persist via
198
+ local storage) without forcing registration
199
+ - **Wishlist page** -- grid layout matching the PLP. Include price, availability
200
+ status, "Add to Cart" action per item, remove action, and "Share wishlist"
201
+ functionality
202
+ - **Price drop notifications** -- alert users when wishlist items go on sale.
203
+ This is a high-conversion re-engagement mechanism
204
+ - **Multiple lists** -- power users benefit from named lists ("Birthday ideas",
205
+ "Home office setup"). Most users need only one default list
206
+
207
+ **NNG Research:**
208
+
209
+ - Sites that require login to save items to a wishlist see significantly lower
210
+ adoption. Allow guest wishlisting and prompt account creation only after the
211
+ user has items saved ("Create an account to access your wishlist from any
212
+ device")
213
+
214
+ ### 1.7 Reviews and Ratings
215
+
216
+ Reviews are the primary trust signal in e-commerce. 95% of consumers consult
217
+ reviews before purchasing (Spiegel Research Center).
218
+
219
+ **Core Components:**
220
+
221
+ - **Aggregate rating** -- star rating (1-5) with total review count. Displayed
222
+ on PLP cards and near the PDP title, above the fold
223
+ - **Rating distribution** -- horizontal bar chart showing the breakdown of 1-5
224
+ star reviews. Clickable to filter reviews by rating
225
+ - **Individual reviews** -- reviewer name/alias, date, verified purchase badge,
226
+ star rating, review title, review body, helpful/not helpful voting, seller
227
+ response (if applicable)
228
+ - **Photo/video reviews** -- user-submitted media displayed in a carousel above
229
+ text reviews. Significantly increases trust and conversion
230
+ - **Review filters and sort** -- by star rating, recency, most helpful,
231
+ verified purchase only, with photos/videos, by product variant
232
+ - **Review submission form** -- star rating selector, title, body, photo upload,
233
+ pros/cons fields, fit/sizing feedback (apparel). Email follow-up prompt
234
+ post-delivery to solicit reviews
235
+
236
+ **Design Guidelines:**
237
+
238
+ - Show star ratings on PLP cards -- they are one of the strongest conversion
239
+ drivers in product listings
240
+ - Display the total review count alongside stars (e.g., "4.3 (1,247 reviews)")
241
+ to convey statistical reliability
242
+ - Allow filtering reviews by purchased variant (size, color) for apparel
243
+ - Never hide or suppress negative reviews -- this erodes trust. Instead,
244
+ feature seller responses to negative reviews
245
+
246
+ ### 1.8 Price Display
247
+
248
+ Price presentation directly impacts perceived value and purchase confidence.
249
+
250
+ **Core Components:**
251
+
252
+ - **Current price** -- the most visually prominent element in the price block.
253
+ Use a larger font size and/or bold weight
254
+ - **Original / compare-at price** -- struck through, smaller than the current
255
+ price, positioned adjacent. Use a muted color
256
+ - **Discount indicator** -- percentage off ("-25%") or absolute savings
257
+ ("Save $50") in a contrasting color (typically red or green). Baymard
258
+ recommends showing both the percentage and the absolute amount
259
+ - **Unit pricing** -- "$4.99/oz" for consumables, "$2.50/count" for multi-packs.
260
+ Required by law in some jurisdictions
261
+ - **Installment pricing** -- "or 4 payments of $25.00 with Afterpay". Show the
262
+ total and per-installment amount
263
+ - **Currency and locale** -- auto-detect via geolocation with manual override.
264
+ Display currency symbol and correct decimal/thousands separators for the locale
265
+ - **Price range** -- for products with variants at different prices, show
266
+ "From $29.99" or "$29.99 - $49.99"
267
+
268
+ **Accessibility for Price Display:**
269
+
270
+ - Screen readers should announce prices clearly. Use `aria-label` to provide
271
+ context: `aria-label="Current price: $29.99, was $39.99, you save 25%"`
272
+ - Do not rely solely on color (red strikethrough) to indicate a discount --
273
+ include text labels
274
+ - Use `<del>` for the original price and `<ins>` or a standard element for
275
+ the current price to convey semantic meaning
276
+
277
+ ### 1.9 Promotions
278
+
279
+ Promotions drive urgency and conversion but must be implemented transparently
280
+ to avoid dark-pattern territory.
281
+
282
+ **Core Components:**
283
+
284
+ - **Banner / announcement bar** -- site-wide promotion messaging (free shipping
285
+ threshold, sitewide sale percentage). Sticky at top, dismissible
286
+ - **Product badges** -- "Sale", "New", "Bestseller", "Limited Edition" overlaid
287
+ on product card images. Strategically placed badges can yield up to a 55%
288
+ increase in conversion rates
289
+ - **Countdown timers** -- use only for genuine time-limited offers. Display end
290
+ date alongside the timer. Never reset or fabricate urgency
291
+ - **Threshold incentives** -- "Add $15 more for free shipping" progress bar in
292
+ the cart. Highly effective at increasing average order value
293
+ - **Promo codes** -- auto-apply where possible. If manual entry is required,
294
+ make the field discoverable but not distracting (collapsed by default in
295
+ checkout). Validate instantly with clear feedback
296
+ - **Bundle and BOGO offers** -- show the effective per-unit price and total
297
+ savings clearly. Use visual grouping to communicate the bundle
298
+
299
+ ---
300
+
301
+ ## 2. Best-in-Class Examples
302
+
303
+ ### 2.1 Apple Store (apple.com)
304
+
305
+ **What they excel at:**
306
+
307
+ - **Visual storytelling on PDP** -- immersive, full-bleed imagery with scroll-
308
+ triggered animations that showcase product features in context. Interactive
309
+ 3D product viewers for hardware
310
+ - **Progressive configuration** -- step-by-step product customization (storage,
311
+ color, accessories) with real-time price updates and visual feedback as
312
+ options are selected
313
+ - **Minimal checkout** -- streamlined flow leveraging Apple ID for pre-filled
314
+ address/payment, Apple Pay as the primary express checkout
315
+ - **Typography and hierarchy** -- San Francisco typeface with carefully weighted
316
+ font sizes creates an effortless scanning experience
317
+ - **Accessibility first** -- VoiceOver-optimized product pages, adjustable text
318
+ size, high-contrast mode support throughout
319
+
320
+ **Key pattern:** Configuration-driven PDP where the product page itself becomes
321
+ a guided selling experience rather than a static spec sheet.
322
+
323
+ ### 2.2 Shopify Stores (Shopify Polaris)
324
+
325
+ **What they excel at:**
326
+
327
+ - **Unified design system** -- Polaris provides consistent components across
328
+ Admin, Checkout, and Customer Accounts. Web Components architecture ensures
329
+ framework-agnostic compatibility
330
+ - **Checkout extensibility** -- Shopify's one-page checkout (introduced 2023,
331
+ refined through 2025) reduces form fields while maintaining all necessary
332
+ information collection. Supports Shop Pay for one-tap checkout
333
+ - **Merchant-adaptable patterns** -- themes provide flexible PLP grid layouts,
334
+ PDP templates, and cart drawers that merchants can customize without breaking
335
+ UX conventions
336
+ - **Performance** -- Polaris Web Components are significantly smaller and faster
337
+ than their React predecessors, directly impacting conversion (a site loading
338
+ in 1 second converts at 2.5x the rate of one loading in 5 seconds)
339
+
340
+ **Key pattern:** Platform-level UX standardization that raises the floor for all
341
+ merchants, ensuring basic patterns (cart, checkout, product page) follow
342
+ research-backed conventions regardless of theme customization.
343
+
344
+ ### 2.3 Amazon
345
+
346
+ **What they excel at:**
347
+
348
+ - **One-click purchasing** -- patented "Buy Now" eliminates all checkout friction
349
+ for returning customers. Pre-populated shipping and payment from account data
350
+ - **Review ecosystem** -- star ratings with distribution histograms, verified
351
+ purchase badges, photo/video reviews, AI-generated review summaries, Q&A
352
+ sections. Reviews appear next to the product name and price so users connect
353
+ quality with value instantly
354
+ - **Recommendation engine** -- "Frequently bought together", "Customers who
355
+ viewed this also viewed", "Compare with similar items" drive discovery and
356
+ increase average order value
357
+ - **Search and filtering** -- powerful faceted search with category-specific
358
+ filters. Auto-suggest with rich results (product images in suggestions)
359
+ - **Prime integration** -- delivery date prominence ("Get it tomorrow") as a
360
+ conversion driver. Prime badge on listings signals fast, free shipping
361
+
362
+ **Key pattern:** Information density optimized for decision-making. Amazon
363
+ prioritizes utility over aesthetics, surfacing every data point a buyer might
364
+ need (price history, competitive options, delivery estimates) at the cost of
365
+ visual elegance. This works because Amazon's audience is intent-driven.
366
+
367
+ ### 2.4 Stripe Checkout
368
+
369
+ **What they excel at:**
370
+
371
+ - **Form minimization** -- every extra field is a potential drop-off point.
372
+ Stripe's checkout collects only what is necessary to process the payment
373
+ - **Real-time validation** -- inline error messages next to the problem field.
374
+ Specific messages ("Card number is incomplete", "Expiration date appears to be
375
+ in the past") rather than generic "Invalid input"
376
+ - **Card brand auto-detection** -- displays the relevant card logo (Visa,
377
+ Mastercard, Amex) as the user types, providing visual reassurance
378
+ - **Trust signals** -- lock icon, "Powered by Stripe" badge, subtle security
379
+ copy. Small, familiar visuals reduce anxiety at the payment step
380
+ - **Adaptive payment methods** -- automatically surfaces region-appropriate
381
+ payment methods (iDEAL in Netherlands, SEPA in EU, PIX in Brazil)
382
+ - **Field ordering** -- follows user mental model: contact info, then shipping,
383
+ then billing, then payment. Progress is visible via numbered steps or a
384
+ progress bar
385
+
386
+ **Key pattern:** Payment-specialized checkout that strips away all non-essential
387
+ elements, creating a focused "payment tunnel" that minimizes cognitive load at
388
+ the highest-anxiety moment of the purchase flow.
389
+
390
+ ### 2.5 Nike (nike.com)
391
+
392
+ **What they excel at:**
393
+
394
+ - **Dynamic product imagery** -- lifestyle and action photography alongside
395
+ studio shots. Videos showing products in use (running shoes on a track,
396
+ apparel in motion)
397
+ - **Size and fit guidance** -- integrated size finder tools, fit feedback from
398
+ reviewers ("Runs small -- order a half size up"), size charts with
399
+ measurement guides
400
+ - **Customization (Nike By You)** -- real-time 3D product configurator for
401
+ custom colorways. Configuration choices update the product visualization
402
+ instantly
403
+ - **Member-exclusive access** -- tiered loyalty program driving account creation
404
+ through value (early access, exclusive products) rather than forced registration
405
+ - **Wishlist / Favorites** -- persistent across devices for logged-in members,
406
+ with "Notify me" for out-of-stock items
407
+
408
+ **Key pattern:** Aspirational product presentation combined with practical
409
+ decision-support tools (size finder, fit reviews) that address the primary
410
+ purchase barrier for online apparel and footwear -- fit uncertainty.
411
+
412
+ ### 2.6 Glossier (glossier.com)
413
+
414
+ **What they excel at:**
415
+
416
+ - **Conversational product copy** -- tells users what a product DOES and DOES
417
+ NOT DO with a transparency uncommon in beauty retail. Builds trust through
418
+ honesty rather than marketing superlatives
419
+ - **User-generated content** -- real customer photos and unfiltered reviews
420
+ prominently featured. Creates an authentic, relatable shopping experience
421
+ versus traditional aspirational beauty photography
422
+ - **Community-driven social proof** -- reviews feel like conversations, not
423
+ testimonials. Glossier's review section reads more like a forum, increasing
424
+ engagement and time on page
425
+ - **Simplified product line** -- curated, minimal product catalog reduces
426
+ decision fatigue. Each product page focuses on a single hero product with
427
+ clear use-case positioning
428
+ - **Clean visual design** -- generous whitespace, soft color palette, editorial
429
+ photography style. The design itself communicates the brand's "skin first,
430
+ makeup second" philosophy
431
+
432
+ **Key pattern:** Brand-as-community e-commerce where social proof and
433
+ authenticity replace traditional merchandising techniques. The product page
434
+ serves as both a sales page and a community discussion space.
435
+
436
+ ---
437
+
438
+ ## 3. User Flow Mapping
439
+
440
+ ### 3.1 Primary Purchase Flow
441
+
442
+ ```
443
+ Browse/Search --> Product Listing --> Product Detail --> Add to Cart
444
+ | | | |
445
+ | [Filter/Sort] [Select Variant] [Mini Cart
446
+ | | | Confirmation]
447
+ | v v |
448
+ | Refine Results Compare Options v
449
+ | View Cart
450
+ | |
451
+ +------------------------------------------------------+
452
+ |
453
+ v
454
+ Checkout
455
+ |
456
+ +---------------+---------------+
457
+ | |
458
+ Guest Checkout Signed-In Checkout
459
+ | |
460
+ Email Entry Pre-filled Data
461
+ | |
462
+ +---------------+---------------+
463
+ |
464
+ v
465
+ Shipping Address
466
+ |
467
+ v
468
+ Shipping Method
469
+ |
470
+ v
471
+ Payment
472
+ |
473
+ v
474
+ Order Review
475
+ |
476
+ v
477
+ Place Order
478
+ |
479
+ v
480
+ Order Confirmation
481
+ (Page + Email)
482
+ ```
483
+
484
+ ### 3.2 Guest Checkout Flow
485
+
486
+ Guest checkout is critical -- 24% of users abandon when forced to create an
487
+ account (Baymard Institute).
488
+
489
+ **Flow Design Principles:**
490
+
491
+ 1. **Entry point** -- present "Continue as Guest" and "Sign In" as equal
492
+ options. Never position guest checkout as a secondary, de-emphasized link
493
+ 2. **Email collection** -- collect email first (required for order confirmation
494
+ and abandoned cart recovery). Single field, no password
495
+ 3. **Deferred account creation** -- after order confirmation, offer "Save your
496
+ information for faster checkout next time" with a single password field. This
497
+ converts 25-30% of guest users to accounts without pre-purchase friction
498
+ 4. **Session persistence** -- if a guest user returns (same device/browser),
499
+ pre-fill their email and offer to restore their previous cart
500
+ 5. **Order tracking** -- provide a guest-accessible order tracking link via
501
+ email that does not require login. Use order number + email as verification
502
+
503
+ **Implementation Notes:**
504
+
505
+ - Store guest checkout data in a session-based record linked to email
506
+ - Hash the email for abandoned cart recovery triggers
507
+ - Offer "Look up order" functionality using order number + email/zip code
508
+
509
+ ### 3.3 Account / Signed-In Checkout Flow
510
+
511
+ For returning customers, the goal is maximum speed through pre-filled data.
512
+
513
+ **Flow Optimizations:**
514
+
515
+ 1. **Saved addresses** -- default to last-used shipping address with one-click
516
+ selection of alternatives. Include "Add new address" inline
517
+ 2. **Saved payment methods** -- display last four digits and card brand. Default
518
+ to last-used method. PCI-compliant tokenized storage
519
+ 3. **Express checkout** -- for single-item or reorder flows, offer "Buy Again"
520
+ with one-click purchase (pre-selected address + payment + shipping)
521
+ 4. **Order history integration** -- "Reorder" buttons on past orders that
522
+ add all items to cart with current pricing and availability
523
+
524
+ ### 3.4 Abandoned Cart Recovery Flow
525
+
526
+ The global average cart abandonment rate is 70-78% (Baymard Institute, 2026).
527
+ Up to 20% of abandonments can be recovered.
528
+
529
+ **Recovery Sequence:**
530
+
531
+ ```
532
+ Cart Abandonment Detected (session timeout or exit)
533
+ |
534
+ v
535
+ [Wait 1 hour]
536
+ |
537
+ v
538
+ Email 1: Reminder
539
+ - Subject: "You left something behind"
540
+ - Content: Cart items with images, names, prices
541
+ - CTA: "Return to your cart" (deep link restoring cart state)
542
+ - Tone: Helpful, not pushy
543
+ |
544
+ v
545
+ [Wait 24 hours]
546
+ |
547
+ v
548
+ Email 2: Social Proof / Urgency
549
+ - Subject: "Still thinking it over?"
550
+ - Content: Cart items + reviews/ratings for those items
551
+ - Include: "X people bought this today" or low-stock warning (if genuine)
552
+ - CTA: "Complete your purchase"
553
+ |
554
+ v
555
+ [Wait 72 hours]
556
+ |
557
+ v
558
+ Email 3: Incentive
559
+ - Subject: "A little something to help you decide"
560
+ - Content: Cart items + discount code or free shipping offer
561
+ - CTA: "Use code SAVE10 at checkout"
562
+ - Include: Expiration on the offer (48-72 hours)
563
+ ```
564
+
565
+ **Design Requirements:**
566
+
567
+ - Deep links must restore exact cart state (items, quantities, variants)
568
+ - Emails must be mobile-optimized (60%+ of recovery emails are opened on mobile)
569
+ - Personalize by segment: first-time vs. returning customers, cart value tiers
570
+ - Include unsubscribe and frequency preferences
571
+ - Abandoned cart emails have average open rates of 40-45% (significantly above
572
+ standard marketing email benchmarks)
573
+
574
+ ### 3.5 Returns Flow
575
+
576
+ A frictionless returns experience directly impacts repeat purchase rates and
577
+ customer lifetime value.
578
+
579
+ **Flow Steps:**
580
+
581
+ ```
582
+ Order History --> Select Order --> Initiate Return
583
+ | |
584
+ v v
585
+ View Order Detail Select Items to Return
586
+ |
587
+ v
588
+ Select Return Reason
589
+ (dropdown + optional comment)
590
+ |
591
+ v
592
+ Choose Return Method
593
+ - Prepaid shipping label (print or QR)
594
+ - Drop-off at partner location
595
+ - Schedule pickup
596
+ |
597
+ v
598
+ Return Confirmation
599
+ (Return ID + instructions + timeline)
600
+ |
601
+ v
602
+ Return Status Tracking
603
+ (Shipped --> Received --> Inspected --> Refunded)
604
+ |
605
+ v
606
+ Refund Processed
607
+ (Email notification + account credit)
608
+ ```
609
+
610
+ **Design Principles:**
611
+
612
+ - Make the return policy visible pre-purchase (PDP and checkout) -- it is a
613
+ conversion driver, not just a post-purchase necessity
614
+ - Provide self-service returns without requiring customer support contact
615
+ - Offer exchange as an alternative to refund (retains revenue)
616
+ - Show estimated refund timeline at initiation
617
+ - Send proactive status updates at each stage
618
+
619
+ ---
620
+
621
+ ## 4. Micro-Interactions
622
+
623
+ ### 4.1 Add-to-Cart Animation
624
+
625
+ The add-to-cart moment is the primary conversion micro-interaction. It must
626
+ provide immediate, unmistakable confirmation.
627
+
628
+ **Recommended Pattern:**
629
+
630
+ 1. **Trigger** -- user taps/clicks "Add to Cart" button
631
+ 2. **Button state change** -- button text changes from "Add to Cart" to
632
+ "Adding..." (with a subtle spinner) then to "Added" (with a checkmark).
633
+ Duration: 300-600ms total
634
+ 3. **Product image animation** -- small thumbnail of the product scales down
635
+ and arcs toward the cart icon. Use natural easing (cubic-bezier) to simulate
636
+ physical movement. Duration: 400-500ms
637
+ 4. **Cart icon feedback** -- cart icon bounces or pulses, badge count increments
638
+ with a scale animation. Duration: 200-300ms
639
+ 5. **Mini-cart reveal** -- optional: slide-in drawer or flyout showing the added
640
+ item with "Continue Shopping" and "View Cart" CTAs. Auto-dismiss after 3-5
641
+ seconds or on outside click
642
+
643
+ **Implementation Notes:**
644
+
645
+ - Use `transform` and `opacity` for animations (GPU-accelerated, no layout
646
+ thrash)
647
+ - Respect `prefers-reduced-motion` -- fall back to a simple checkmark state
648
+ change with no spatial animation
649
+ - On mobile, a toast notification at the bottom of the screen may be more
650
+ appropriate than a flyout cart that obscures content
651
+
652
+ ### 4.2 Quantity Stepper
653
+
654
+ **Recommended Pattern:**
655
+
656
+ 1. **Layout** -- minus button, numeric display/input, plus button. Minimum
657
+ touch target: 44x44px (WCAG) / 48x48px (Material Design)
658
+ 2. **Tap feedback** -- brief haptic pulse (mobile) or button depression state
659
+ (desktop) on each increment/decrement
660
+ 3. **Boundary behavior** -- disable minus button at quantity 1 (grayed out,
661
+ `aria-disabled="true"`). Show max quantity message when stock limit is
662
+ reached
663
+ 4. **Direct input** -- allow users to tap the number to type a quantity
664
+ directly. Validate on blur. Use `inputmode="numeric"` on mobile
665
+ 5. **Price update** -- line total and order summary update in real time as
666
+ quantity changes, with a brief highlight animation (background flash) on the
667
+ updated value. Duration: 200ms
668
+
669
+ ### 4.3 Price Update Animation
670
+
671
+ When prices change (variant selection, quantity change, promo applied), the
672
+ transition should be noticeable but not distracting.
673
+
674
+ **Recommended Pattern:**
675
+
676
+ 1. **Number transition** -- old price fades out and new price fades in, or
677
+ digits "roll" to new values (odometer effect). Duration: 200-300ms
678
+ 2. **Highlight flash** -- brief background color pulse behind the price (e.g.,
679
+ light yellow to transparent). Duration: 400ms
680
+ 3. **Savings callout** -- when a discount is applied, animate the "You save
681
+ $X.XX" text appearing with a slide-down and fade-in. Duration: 300ms
682
+
683
+ **Accessibility:**
684
+
685
+ - Use `aria-live="polite"` on price containers so screen readers announce
686
+ changes without interrupting the user
687
+ - Ensure the animation does not prevent the price from being readable at
688
+ any point during transition
689
+
690
+ ### 4.4 Checkout Progress Indicator
691
+
692
+ **Recommended Pattern:**
693
+
694
+ 1. **Step visualization** -- numbered circles or icons connected by a line.
695
+ Completed steps are filled, current step is highlighted/pulsing, upcoming
696
+ steps are outlined
697
+ 2. **Step transition** -- when moving to the next step, the connecting line
698
+ fills with an animated draw (left to right). Current step indicator scales
699
+ up briefly. Duration: 300-400ms
700
+ 3. **Step labels** -- always visible on desktop. On mobile, show only the
701
+ current step label with a "Step 2 of 4" counter
702
+ 4. **Back navigation** -- completed steps are clickable to allow users to
703
+ return and edit previous sections. Indicate clickability with cursor change
704
+ and hover state
705
+
706
+ ### 4.5 Payment Processing
707
+
708
+ The payment processing moment is the highest-anxiety micro-interaction. Users
709
+ need continuous reassurance that their transaction is progressing.
710
+
711
+ **Recommended Pattern:**
712
+
713
+ 1. **Button state** -- "Place Order" transitions to "Processing..." with a
714
+ spinner. Disable the button to prevent double-submission
715
+ 2. **Progress indication** -- for processing times > 2 seconds, show a
716
+ progress bar or sequential status messages ("Verifying payment...",
717
+ "Confirming order...", "Almost done...")
718
+ 3. **Success state** -- green checkmark animation with "Order Confirmed!"
719
+ message. Transition to order confirmation page after 1-2 seconds
720
+ 4. **Error state** -- red/orange alert with specific error message and clear
721
+ recovery action ("Try a different card", "Check your card details").
722
+ Re-enable the form with the user's data preserved
723
+ 5. **Timeout handling** -- if processing exceeds 15 seconds, show a message:
724
+ "This is taking longer than expected. Please don't close this page." Provide
725
+ a "Check order status" link as a fallback
726
+
727
+ ---
728
+
729
+ ## 5. Anti-Patterns
730
+
731
+ These patterns degrade user experience, erode trust, and reduce conversion.
732
+ Backed by Baymard Institute, NNG, and Princeton's dark patterns research.
733
+
734
+ ### 5.1 Forced Account Creation Before Checkout
735
+
736
+ **Problem:** Requiring users to create an account before they can purchase
737
+ is the second-highest reason for cart abandonment (24% of users -- Baymard).
738
+
739
+ **Why it persists:** Businesses want user data for marketing and analytics.
740
+
741
+ **Better approach:** Offer guest checkout as the primary path. Collect only
742
+ email for order confirmation. Offer account creation post-purchase ("Save your
743
+ info for next time") with a single password field.
744
+
745
+ ### 5.2 Hidden Shipping Costs
746
+
747
+ **Problem:** 55% of cart abandonments are caused by unexpected extra costs
748
+ (shipping, taxes, fees) appearing at checkout (Baymard Institute).
749
+
750
+ **Why it persists:** Showing lower prices on PLPs increases click-through.
751
+
752
+ **Better approach:** Display shipping estimates on the PDP and in the cart.
753
+ Show a "Free shipping on orders over $X" banner site-wide. If exact shipping
754
+ cannot be calculated, show a range ("Shipping: $5.99 - $9.99").
755
+
756
+ ### 5.3 Overly Complex Multi-Page Checkout
757
+
758
+ **Problem:** 18% of users abandon due to a "too long / complicated checkout
759
+ process." The average checkout has 23.48 form elements; the ideal is 12-14.
760
+
761
+ **Why it persists:** Legal requirements, business data needs, and legacy
762
+ systems accumulate fields over time.
763
+
764
+ **Better approach:** Audit every field. Remove optional fields or move them
765
+ behind a "Add [optional info]" link. Use address autocomplete to replace
766
+ 5 fields with 1. Combine billing and shipping address with a "Same as
767
+ shipping" checkbox (default checked).
768
+
769
+ ### 5.4 Too Many Form Fields
770
+
771
+ **Problem:** Every additional form field costs approximately 2-3% in
772
+ conversion rate (Baymard). Fields like "Company name", "Fax number",
773
+ "Middle name", or separate "First name" / "Last name" fields (when a single
774
+ "Full name" field suffices) add friction without value.
775
+
776
+ **Better approach:** Implement a single "Full name" field. Remove all optional
777
+ fields from the default view. Use smart defaults (auto-detect country from IP,
778
+ auto-format phone numbers). Pre-fill from browser autofill attributes.
779
+
780
+ ### 5.5 No Guest Checkout Option
781
+
782
+ **Problem:** A subset of forced account creation, but worth calling out
783
+ specifically. Some sites literally have no path to purchase without creating
784
+ an account.
785
+
786
+ **Impact:** Direct conversion loss of 24% of potential buyers.
787
+
788
+ **Better approach:** Always provide guest checkout. If the business requires
789
+ accounts (e.g., subscription services), explain clearly why and what value the
790
+ account provides.
791
+
792
+ ### 5.6 Misleading Urgency and Scarcity
793
+
794
+ **Problem:** Fake countdown timers that reset on page reload, fabricated stock
795
+ levels ("Only 2 left!" when inventory is abundant), manufactured demand
796
+ ("23 people are viewing this right now" when false). Princeton researchers
797
+ found these patterns on 11,000+ shopping websites.
798
+
799
+ **Why it persists:** Short-term conversion lifts of 10-25%.
800
+
801
+ **Long-term damage:** 76% of users say they would stop using a product or
802
+ service if they discovered dark patterns (UX Collective). FTC enforcement is
803
+ increasing.
804
+
805
+ **Better approach:** Use urgency only when genuine (real sale end dates, actual
806
+ low stock). Show real-time stock counts from inventory systems. Use social
807
+ proof based on actual purchase data.
808
+
809
+ ### 5.7 Dark Patterns in Pricing (Drip Pricing)
810
+
811
+ **Problem:** Slowly revealing mandatory fees throughout the purchase process.
812
+ Initial price shown on PLP excludes required fees (service charges, handling
813
+ fees, "convenience" fees) that are added at successive checkout steps. Consumer
814
+ Reports estimates hidden fees cost the average family over $3,200 annually.
815
+ Drip pricing increases final amounts by approximately 20% over the displayed
816
+ price.
817
+
818
+ **Better approach:** Show the all-in price from the beginning. Break down cost
819
+ components transparently in the order summary. If fees vary by region, show
820
+ "+ applicable taxes and shipping" clearly on the PLP.
821
+
822
+ ### 5.8 Sneaking Items into Cart (Sneak into Basket)
823
+
824
+ **Problem:** Pre-checked add-ons, insurance, or donations that users do not
825
+ explicitly choose. The user must actively opt out to avoid unexpected charges.
826
+
827
+ **Better approach:** All add-ons should be opt-in. Present them clearly as
828
+ optional with unchecked checkboxes. Group them visually separate from the
829
+ main purchase.
830
+
831
+ ### 5.9 Confirm-Shaming (Manipulinks)
832
+
833
+ **Problem:** Decline options written to shame the user: "No thanks, I don't
834
+ want to save money" or "I prefer to pay full price." This manipulates through
835
+ emotional pressure rather than value proposition.
836
+
837
+ **Better approach:** Use neutral language for decline options: "No thanks" or
838
+ "Skip". Let the value proposition of the offer speak for itself.
839
+
840
+ ### 5.10 Forced Continuity (Subscription Traps)
841
+
842
+ **Problem:** Automatically enrolling users in subscription services after free
843
+ trials without clear notification. Making cancellation require phone calls,
844
+ multi-step processes, or hidden menu options. The FTC's 2024 "Click-to-Cancel"
845
+ rule specifically targets this pattern.
846
+
847
+ **Better approach:** Clearly state when a trial converts to paid. Send
848
+ reminders before charging. Make cancellation as easy as sign-up (same number
849
+ of clicks/steps, accessible from account settings).
850
+
851
+ ### 5.11 Obstructing Comparison Shopping
852
+
853
+ **Problem:** Hiding prices until registration, preventing right-click or text
854
+ selection on prices, using images instead of text for pricing, or omitting
855
+ key specs to prevent comparison with competitors.
856
+
857
+ **Better approach:** Display prices publicly. Use structured data (Schema.org)
858
+ for prices to appear in search results. Provide comparison tools that
859
+ include competitor-relevant specs.
860
+
861
+ ### 5.12 Bait and Switch Availability
862
+
863
+ **Problem:** Advertising products as in-stock on PLPs/ads that are actually
864
+ out of stock, then redirecting to more expensive alternatives. Or showing a
865
+ low price in ads/search results that is only available under specific,
866
+ undisclosed conditions.
867
+
868
+ **Better approach:** Synchronize inventory in real time. If a product sells
869
+ out between page views, show a clear "Out of stock" state with "Notify me
870
+ when available" and genuine alternative suggestions.
871
+
872
+ ### 5.13 Dark Pattern Newsletter Sign-Up
873
+
874
+ **Problem:** Full-screen modal popups appearing within seconds of page load,
875
+ before the user has any relationship with the brand. Popups that obscure
876
+ content, have tiny close buttons, or use confirm-shaming language for the
877
+ dismiss action.
878
+
879
+ **Better approach:** Delay popups until the user has engaged (scrolled 50%+,
880
+ spent 30+ seconds, visited 2+ pages). Use slide-in banners rather than
881
+ modals. Make the close action prominent and neutral.
882
+
883
+ ---
884
+
885
+ ## 6. Accessibility
886
+
887
+ ### 6.1 Price Screen Reader Formatting
888
+
889
+ Prices must be announced clearly and completely by screen readers, with full
890
+ context.
891
+
892
+ **Implementation:**
893
+
894
+ ```html
895
+ <!-- BAD: Screen reader announces "$29" and "$39" separately, unclear meaning -->
896
+ <span class="price-current">$29.99</span>
897
+ <span class="price-original">$39.99</span>
898
+
899
+ <!-- GOOD: Full context via aria-label -->
900
+ <div aria-label="Current price: $29.99, originally $39.99, you save 25%">
901
+ <span aria-hidden="true">
902
+ <del>$39.99</del> <strong>$29.99</strong>
903
+ <span class="discount-badge">-25%</span>
904
+ </span>
905
+ </div>
906
+
907
+ <!-- ALTERNATIVE: Visually hidden text for screen readers -->
908
+ <div>
909
+ <span class="sr-only">Original price:</span>
910
+ <del>$39.99</del>
911
+ <span class="sr-only">Sale price:</span>
912
+ <strong>$29.99</strong>
913
+ <span class="sr-only">You save 25 percent</span>
914
+ <span class="discount-badge" aria-hidden="true">-25%</span>
915
+ </div>
916
+ ```
917
+
918
+ **Key Rules:**
919
+
920
+ - Use `<del>` element for struck-through original prices (provides semantic
921
+ meaning to screen readers)
922
+ - Ensure currency is announced (use `aria-label` or visually hidden text)
923
+ - Announce savings amount/percentage
924
+ - Use `aria-live="polite"` on price containers that update dynamically (variant
925
+ selection, quantity changes)
926
+ - Format numbers consistently (no ambiguity between "$1,299" and "$1.299"
927
+ across locales)
928
+
929
+ ### 6.2 Product Image Alt Text
930
+
931
+ Product images are the primary decision-making tool for sighted users. Alt text
932
+ must provide equivalent information for screen reader users.
933
+
934
+ **Guidelines:**
935
+
936
+ ```html
937
+ <!-- BAD -->
938
+ <img src="shoe.jpg" alt="Product image">
939
+ <img src="shoe.jpg" alt="IMG_4392.jpg">
940
+ <img src="shoe.jpg" alt="">
941
+
942
+ <!-- GOOD: Primary product image -->
943
+ <img src="shoe.jpg"
944
+ alt="Men's Air Max 90 Running Shoe in Black/Red, side profile view.
945
+ Breathable mesh upper with leather overlays, visible Air Max cushioning
946
+ unit in heel.">
947
+
948
+ <!-- GOOD: Lifestyle/context image -->
949
+ <img src="shoe-lifestyle.jpg"
950
+ alt="Runner wearing Air Max 90 in Black/Red on a trail path, showing the
951
+ shoe in motion.">
952
+
953
+ <!-- GOOD: Color swatch -->
954
+ <img src="swatch-red.jpg" alt="University Red">
955
+ ```
956
+
957
+ **Key Rules:**
958
+
959
+ - Describe the product, not the image file ("Black leather crossbody bag"
960
+ not "bag-photo-3.jpg")
961
+ - Include key visual attributes: color, material, style, orientation/view angle
962
+ - For gallery images, vary descriptions to cover different angles and details
963
+ - Color swatches must have text labels, not just color images -- "Red" not just
964
+ a red square
965
+ - Decorative/duplicate images can use `alt=""` but at least the primary product
966
+ image must have descriptive alt text
967
+ - For user-submitted review photos, use alt text like "Customer photo of
968
+ [product name]" as a minimum
969
+
970
+ ### 6.3 Form Accessibility in Checkout
971
+
972
+ Checkout forms are where accessibility failures have the most direct revenue
973
+ impact. 71% of users with disabilities abandon inaccessible e-commerce sites
974
+ (UsableNet).
975
+
976
+ **Implementation Requirements:**
977
+
978
+ ```html
979
+ <!-- Every input must have an associated label -->
980
+ <label for="email">Email address</label>
981
+ <input type="email" id="email" name="email"
982
+ autocomplete="email"
983
+ aria-required="true"
984
+ aria-describedby="email-help email-error">
985
+ <span id="email-help" class="help-text">
986
+ We'll send your order confirmation here
987
+ </span>
988
+ <span id="email-error" class="error" role="alert" aria-live="polite">
989
+ <!-- Populated dynamically on validation error -->
990
+ </span>
991
+ ```
992
+
993
+ **Key Rules:**
994
+
995
+ - **Labels:** Every form field must have a visible `<label>` element linked
996
+ via `for`/`id`. Do not use placeholder text as the only label (it disappears
997
+ on focus and fails WCAG 1.3.1)
998
+ - **Error handling:** Use `role="alert"` and `aria-live="polite"` on error
999
+ message containers. Errors must be announced when they appear. Provide
1000
+ specific error text ("Enter a valid email address" not "Invalid input").
1001
+ Place error messages adjacent to the field, not only at the top of the form
1002
+ - **Required fields:** Use `aria-required="true"` and a visible indicator
1003
+ (asterisk with "* Required" legend). Do not rely on color alone
1004
+ - **Autocomplete:** Use correct `autocomplete` attributes (`given-name`,
1005
+ `family-name`, `street-address`, `postal-code`, `cc-number`, `cc-exp`, etc.)
1006
+ to enable browser and password manager autofill
1007
+ - **Keyboard navigation:** Ensure tab order follows visual order. All
1008
+ interactive elements must be focusable. Focus must be visible (never
1009
+ `outline: none` without a replacement focus indicator)
1010
+ - **Field grouping:** Use `<fieldset>` and `<legend>` for related field groups
1011
+ (shipping address, payment details). This provides context for screen reader
1012
+ users
1013
+ - **Input types:** Use appropriate `type` attributes (`email`, `tel`, `number`)
1014
+ and `inputmode` to trigger the correct mobile keyboard
1015
+
1016
+ ### 6.4 Payment Method Accessibility
1017
+
1018
+ Payment is the highest-stakes form in the checkout flow. Errors here directly
1019
+ prevent purchase.
1020
+
1021
+ **Requirements:**
1022
+
1023
+ - **Card number input:** Use `inputmode="numeric"` and `autocomplete="cc-number"`.
1024
+ Format with spaces (4242 4242 4242 4242) for readability. Announce card brand
1025
+ detection to screen readers via `aria-live` region
1026
+ - **Expiration date:** Use a single input with `MM/YY` format and clear
1027
+ placeholder, or two separate select elements. Auto-advance from month to year
1028
+ field. Use `autocomplete="cc-exp"`
1029
+ - **CVV/CVC:** Provide a help icon that reveals a tooltip showing where to find
1030
+ the code on the card. Tooltip must be keyboard-accessible (triggered by
1031
+ focus, not just hover). Use `autocomplete="cc-csc"`
1032
+ - **Digital wallets:** Apple Pay and Google Pay buttons must meet minimum
1033
+ contrast ratios. Provide text alternatives for the button icons. Ensure the
1034
+ wallet payment sheet is navigable by screen readers
1035
+ - **Payment method selection:** Use radio buttons (not custom-styled divs) for
1036
+ payment method selection. Ensure the selected state is programmatically
1037
+ determinable (`aria-checked="true"`)
1038
+ - **Error recovery:** When payment fails, return focus to the first field
1039
+ with an error. Preserve all correctly entered data. Announce the error
1040
+ via `aria-live`
1041
+
1042
+ ### 6.5 General E-Commerce Accessibility Requirements
1043
+
1044
+ **WCAG 2.1 AA Compliance (minimum for e-commerce):**
1045
+
1046
+ - **Color contrast:** 4.5:1 minimum for body text, 3:1 for large text and UI
1047
+ components. Critical for prices, availability status, and CTAs
1048
+ - **Target size:** Interactive elements must be at least 24x24px (WCAG 2.5.8
1049
+ in 2.2), with 44x44px recommended for primary touch targets
1050
+ - **Text resizing:** Content must remain usable at 200% zoom without horizontal
1051
+ scrolling
1052
+ - **Keyboard operability:** All functionality must be operable via keyboard
1053
+ alone (Tab, Enter, Space, Escape, arrow keys)
1054
+ - **Focus management:** Focus must be managed when content changes dynamically
1055
+ (modal open/close, cart update, checkout step transition)
1056
+ - **Semantic HTML:** Use proper heading hierarchy, landmark regions (`<main>`,
1057
+ `<nav>`, `<footer>`), lists, and tables. This is the foundation that makes
1058
+ all other accessibility work
1059
+ - **Skip links:** Provide "Skip to main content" and "Skip to checkout" links
1060
+ for keyboard users
1061
+
1062
+ **Testing Protocol:**
1063
+
1064
+ - Automated: axe, Lighthouse, WAVE -- catches ~30% of issues
1065
+ - Manual: keyboard-only navigation through full purchase flow
1066
+ - Screen reader: test with VoiceOver (macOS/iOS), NVDA (Windows), TalkBack
1067
+ (Android)
1068
+ - Magnification: test at 200% and 400% zoom
1069
+ - Color: test with color blindness simulators (protanopia, deuteranopia,
1070
+ tritanopia)
1071
+
1072
+ ---
1073
+
1074
+ ## 7. Cross-Platform Adaptation
1075
+
1076
+ ### 7.1 Mobile Checkout Optimization
1077
+
1078
+ Mobile abandonment rates are approximately 79% versus 67% on desktop (Stripe,
1079
+ 2025). Mobile checkout requires specific design adaptations.
1080
+
1081
+ **Layout:**
1082
+
1083
+ - Single-column layout exclusively -- multi-column forms do not work on small
1084
+ screens
1085
+ - Stack CTAs vertically with the primary action at the bottom of the viewport
1086
+ (thumb-zone accessible)
1087
+ - Use bottom sheets for secondary information (order summary, promo code entry)
1088
+ rather than inline expansion that pushes form fields off screen
1089
+ - Sticky order total bar at the bottom of the screen during checkout
1090
+
1091
+ **Input Optimization:**
1092
+
1093
+ - Trigger the correct mobile keyboard for each field type:
1094
+ - `inputmode="numeric"` for card numbers, CVV, zip code
1095
+ - `inputmode="email"` for email fields
1096
+ - `inputmode="tel"` for phone numbers
1097
+ - Enable autofill via correct `autocomplete` attributes -- this is the single
1098
+ highest-impact mobile checkout optimization
1099
+ - Use address autocomplete (Google Places, Mapbox) to replace 5+ address fields
1100
+ with a single search input
1101
+ - Minimize typing: use selectors/dropdowns for country, state/province,
1102
+ expiration month/year
1103
+
1104
+ **Touch Targets:**
1105
+
1106
+ - Minimum 48x48px for all interactive elements (buttons, links, form fields,
1107
+ checkboxes, radio buttons)
1108
+ - Minimum 8px spacing between adjacent tap targets
1109
+ - Stepper controls (quantity +/-) must be large enough for reliable tapping
1110
+
1111
+ **Performance:**
1112
+
1113
+ - Target < 3 second load time for checkout page on 4G
1114
+ - Lazy-load non-critical elements (product thumbnails in order summary)
1115
+ - Minimize JavaScript execution -- every 100ms of input delay increases
1116
+ abandonment
1117
+
1118
+ ### 7.2 Apple Pay / Google Pay Integration
1119
+
1120
+ Digital wallets increase mobile conversion by 12-18% and account for
1121
+ approximately 30% of online transactions.
1122
+
1123
+ **Placement Strategy:**
1124
+
1125
+ - Present digital wallet options BEFORE manual card entry, not after. Most
1126
+ checkouts hide Apple Pay / Google Pay at the bottom of payment selection,
1127
+ after users have already started typing card numbers. Reversing this order
1128
+ increases wallet adoption and reduces abandonment
1129
+ - Show wallet buttons on: PDP (Buy with Apple Pay), Cart page, Checkout
1130
+ payment step
1131
+ - Use the official button styles and guidelines from Apple and Google -- custom
1132
+ styling reduces trust and violates platform terms
1133
+
1134
+ **Implementation:**
1135
+
1136
+ ```
1137
+ +------------------------------------------+
1138
+ | Express Checkout |
1139
+ | +------------------+ +---------------+ |
1140
+ | | Apple Pay | | Google Pay | |
1141
+ | +------------------+ +---------------+ |
1142
+ | |
1143
+ | ── or pay with card ────────────────── |
1144
+ | |
1145
+ | Card number: [ ] |
1146
+ | Expiration: [ ] CVV: [ ] |
1147
+ | ... |
1148
+ +------------------------------------------+
1149
+ ```
1150
+
1151
+ **UX Considerations:**
1152
+
1153
+ - Detect wallet availability via JavaScript APIs before rendering buttons
1154
+ (do not show Apple Pay on Android or Google Pay on iOS)
1155
+ - Handle wallet-specific flows gracefully: Apple Pay presents a native payment
1156
+ sheet that collects shipping address and method. Your checkout must update
1157
+ shipping costs in real time within the sheet
1158
+ - Provide clear fallback messaging if a wallet transaction fails: "Apple Pay
1159
+ could not process your payment. Please try again or use a different payment
1160
+ method."
1161
+
1162
+ ### 7.3 Responsive Product Grids
1163
+
1164
+ Product grids must adapt fluidly across breakpoints while maintaining
1165
+ scannability and usability.
1166
+
1167
+ **Breakpoint Strategy:**
1168
+
1169
+ | Viewport | Columns | Card Content | Filter Position |
1170
+ |----------------|---------|---------------------------|--------------------|
1171
+ | Desktop (1200+)| 3-4 | Image, title, price, | Left sidebar, |
1172
+ | | | rating, quick-add | always visible |
1173
+ | Tablet (768) | 2-3 | Image, title, price, | Collapsible sidebar|
1174
+ | | | rating | or top bar |
1175
+ | Mobile (< 768) | 1-2 | Image, title, price | Bottom sheet or |
1176
+ | | | | filter drawer |
1177
+
1178
+ **Responsive Considerations:**
1179
+
1180
+ - Use CSS Grid or Flexbox with `minmax()` for fluid column counts rather than
1181
+ fixed breakpoints alone
1182
+ - Product card images should maintain consistent aspect ratios (1:1 or 4:3)
1183
+ across breakpoints to prevent layout shift
1184
+ - On mobile, consider a horizontal scrolling product row for "Recommended"
1185
+ sections (saves vertical space)
1186
+ - "Quick view" modals should become full-screen on mobile
1187
+ - Filter counts update in real time on all viewport sizes
1188
+ - Sort controls remain accessible (sticky or within thumb reach) on mobile
1189
+
1190
+ **Image Optimization:**
1191
+
1192
+ - Serve responsive images via `srcset` and `sizes` attributes
1193
+ - Use WebP/AVIF formats with JPEG fallback
1194
+ - Implement lazy loading for below-fold product cards (`loading="lazy"`)
1195
+ - Placeholder aspect-ratio boxes prevent cumulative layout shift (CLS)
1196
+
1197
+ ---
1198
+
1199
+ ## 8. Decision Tree
1200
+
1201
+ ### 8.1 Single-Page vs. Multi-Step Checkout
1202
+
1203
+ Use this decision framework to choose the right checkout architecture:
1204
+
1205
+ ```
1206
+ START: What is your primary use case?
1207
+ |
1208
+ +-- Average order value < $150 AND 70%+ mobile traffic?
1209
+ | |
1210
+ | YES --> Single-page checkout
1211
+ | | - 10-15% higher conversion vs. multi-step
1212
+ | | - Reduces perceived steps
1213
+ | | - Ideal for impulse/convenience purchases
1214
+ | |
1215
+ | NO --> Continue evaluation
1216
+ |
1217
+ +-- Complex product configuration (custom items, B2B, subscriptions)?
1218
+ | |
1219
+ | YES --> Multi-step checkout
1220
+ | | - Each step handles distinct concerns
1221
+ | | - Easier to validate complex inputs per step
1222
+ | | - Better analytics (identify exact drop-off step)
1223
+ | |
1224
+ | NO --> Continue evaluation
1225
+ |
1226
+ +-- Average order value > $200?
1227
+ | |
1228
+ | YES --> Consider multi-step
1229
+ | | - Completion rates of 82.4% vs. 78.1% for single-page
1230
+ | | - Higher-value purchases benefit from structured review
1231
+ | | - Each step provides a "commitment checkpoint"
1232
+ | |
1233
+ | NO --> Continue evaluation
1234
+ |
1235
+ +-- Few SKUs, simple product catalog, standard shipping?
1236
+ | |
1237
+ | YES --> Single-page checkout
1238
+ | | - Less complexity = fewer fields = single page works
1239
+ | |
1240
+ | NO --> Multi-step checkout
1241
+ | - Handle complexity in manageable chunks
1242
+ |
1243
+ UNIVERSAL RULES (regardless of choice):
1244
+ - Maximum 12-14 form elements total
1245
+ - Always offer guest checkout
1246
+ - Always show order summary alongside form fields
1247
+ - Always provide express checkout (digital wallets)
1248
+ - Always show progress/step context
1249
+ - Test your specific audience -- these are guidelines, not absolutes
1250
+ ```
1251
+
1252
+ ### 8.2 When to Require Account Creation
1253
+
1254
+ ```
1255
+ START: Does the user need an account to use your product?
1256
+ |
1257
+ +-- Subscription / recurring service?
1258
+ | |
1259
+ | YES --> Require account, but explain why clearly
1260
+ | | "You'll need an account to manage your subscription,
1261
+ | | update preferences, and pause/cancel anytime."
1262
+ | | - Collect only email + password
1263
+ | | - Defer profile completion to post-purchase
1264
+ | |
1265
+ | NO --> Continue evaluation
1266
+ |
1267
+ +-- One-time purchase (physical goods, digital downloads)?
1268
+ | |
1269
+ | YES --> NEVER require account before checkout
1270
+ | | - Offer guest checkout as primary path
1271
+ | | - Post-purchase: "Save your info for next time?"
1272
+ | | - 25-30% of guest users convert to accounts this way
1273
+ | |
1274
+ | NO --> Continue evaluation
1275
+ |
1276
+ +-- Marketplace / platform (user-to-user transactions)?
1277
+ | |
1278
+ | YES --> Require account for sellers, optional for buyers
1279
+ | | - Buyers can guest checkout for first purchase
1280
+ | | - Prompt account creation for order tracking
1281
+ | |
1282
+ | NO --> Evaluate case by case
1283
+ |
1284
+ ACCOUNT CREATION PRINCIPLES:
1285
+ - Social login (Google, Apple) reduces friction by ~40%
1286
+ - Email + password is the minimum viable account
1287
+ - Never require phone number, address, or demographics at sign-up
1288
+ - Clearly communicate the value of having an account:
1289
+ * Order tracking
1290
+ * Faster future checkout
1291
+ * Wishlist persistence
1292
+ * Exclusive member pricing or early access
1293
+ - If you offer a loyalty program, frame account creation as
1294
+ "joining" the program rather than "registering"
1295
+ ```
1296
+
1297
+ ### 8.3 When to Use a Cart Drawer vs. Cart Page
1298
+
1299
+ ```
1300
+ START: What is your catalog and purchase behavior?
1301
+ |
1302
+ +-- Primarily single-item purchases?
1303
+ | |
1304
+ | YES --> Cart drawer (slide-in mini cart)
1305
+ | | - Faster path to checkout
1306
+ | | - User stays in browsing context
1307
+ | | - Skip the dedicated cart page entirely
1308
+ | |
1309
+ | NO --> Continue
1310
+ |
1311
+ +-- Multi-item shopping typical (grocery, office supplies)?
1312
+ | |
1313
+ | YES --> Full cart page
1314
+ | | - Better for reviewing many items
1315
+ | | - Easier quantity editing across items
1316
+ | | - More space for upsells and saved-for-later
1317
+ | |
1318
+ | NO --> Continue
1319
+ |
1320
+ +-- Average 2-4 items per order?
1321
+ |
1322
+ YES --> Cart drawer with "View full cart" link
1323
+ - Quick confirmation for small additions
1324
+ - Full page available for detailed review
1325
+ ```
1326
+
1327
+ ---
1328
+
1329
+ ## 9. Quick Reference Checklist
1330
+
1331
+ ### Product Listing Page
1332
+ - [ ] Product cards show: image, title, price, rating, availability
1333
+ - [ ] Grid/list view toggle available (consumer catalogs)
1334
+ - [ ] Filters are multi-select (checkboxes, not radio buttons)
1335
+ - [ ] Filters update results in real time (no "Apply" button)
1336
+ - [ ] Sort options include relevance, price, rating, newest
1337
+ - [ ] Mobile filters accessible via sticky button or bottom sheet
1338
+ - [ ] Result count and applied filters visible
1339
+ - [ ] Color swatches have text labels, not just color circles
1340
+
1341
+ ### Product Detail Page
1342
+ - [ ] Primary image above the fold with zoom capability
1343
+ - [ ] Price, availability, and CTA above the fold
1344
+ - [ ] Variant selection updates product image
1345
+ - [ ] Star rating with review count near product title
1346
+ - [ ] Shipping estimate and return policy visible
1347
+ - [ ] "Add to Cart" is visually dominant CTA
1348
+ - [ ] Product description uses progressive disclosure
1349
+ - [ ] Related/recommended products below the fold
1350
+ - [ ] Alt text is descriptive for all product images
1351
+
1352
+ ### Cart
1353
+ - [ ] Line items show thumbnail, name, variant, price, quantity, total
1354
+ - [ ] Quantity stepper with direct numeric input option
1355
+ - [ ] Real-time price updates on quantity change
1356
+ - [ ] Order summary shows subtotal, shipping, tax, total
1357
+ - [ ] Promo code field is collapsible (not prominent)
1358
+ - [ ] Express checkout options (Apple Pay, Google Pay) visible
1359
+ - [ ] Empty cart state is helpful (not blank)
1360
+ - [ ] "Save for Later" option available
1361
+ - [ ] Cart persists across sessions
1362
+
1363
+ ### Checkout
1364
+ - [ ] Guest checkout offered as equal option to sign-in
1365
+ - [ ] Maximum 12-14 form elements
1366
+ - [ ] Address autocomplete implemented
1367
+ - [ ] Correct autocomplete attributes on all fields
1368
+ - [ ] Digital wallets presented BEFORE manual card entry
1369
+ - [ ] All costs shown before payment step (no hidden fees)
1370
+ - [ ] Progress indicator visible (steps or progress bar)
1371
+ - [ ] Real-time inline validation with specific error messages
1372
+ - [ ] Order summary visible throughout checkout (sticky sidebar / expandable)
1373
+ - [ ] "Place Order" button shows total amount
1374
+ - [ ] Form fields have visible labels (not placeholder-only)
1375
+ - [ ] Back navigation to previous steps is available
1376
+
1377
+ ### Accessibility
1378
+ - [ ] All prices announced correctly by screen readers
1379
+ - [ ] Product images have descriptive alt text
1380
+ - [ ] Form fields have associated labels and error messages
1381
+ - [ ] Keyboard navigation works through entire purchase flow
1382
+ - [ ] Color contrast meets WCAG 2.1 AA (4.5:1 text, 3:1 UI)
1383
+ - [ ] Touch targets are 44x44px minimum (48x48px preferred)
1384
+ - [ ] Focus indicators are visible on all interactive elements
1385
+ - [ ] `aria-live` regions for dynamic content (price updates, cart count)
1386
+ - [ ] `prefers-reduced-motion` respected for animations
1387
+ - [ ] Skip links provided for keyboard users
1388
+
1389
+ ### Mobile
1390
+ - [ ] Single-column checkout layout
1391
+ - [ ] Correct input types trigger appropriate mobile keyboards
1392
+ - [ ] Autofill enabled via autocomplete attributes
1393
+ - [ ] Sticky order total visible during checkout
1394
+ - [ ] Touch targets meet minimum size requirements
1395
+ - [ ] Page load < 3 seconds on 4G
1396
+ - [ ] Digital wallet buttons detect platform availability
1397
+ - [ ] Product grid adapts column count to viewport
1398
+
1399
+ ### Trust & Transparency
1400
+ - [ ] No hidden fees or drip pricing
1401
+ - [ ] No forced account creation before checkout
1402
+ - [ ] No pre-checked add-ons (opt-in only)
1403
+ - [ ] No fake urgency or fabricated scarcity
1404
+ - [ ] No confirm-shaming on decline options
1405
+ - [ ] Return policy visible pre-purchase
1406
+ - [ ] Security indicators on payment forms
1407
+ - [ ] Real-time order tracking available post-purchase
1408
+
1409
+ ---
1410
+
1411
+ ## 10. Sources & Citations
1412
+
1413
+ ### Research Institutions
1414
+
1415
+ - **Baymard Institute** -- E-Commerce Checkout Usability research (41,000+
1416
+ checkout performance scores, 650+ UX guidelines, 327 benchmarked sites).
1417
+ Key findings: 35% conversion increase achievable through checkout UX fixes;
1418
+ average 70-78% cart abandonment rate; 23.48 average form elements vs. 12-14
1419
+ ideal. https://baymard.com/research/checkout-usability
1420
+ - **Baymard Institute** -- Cart Abandonment Rate Statistics (50+ data points,
1421
+ meta-analysis of 49 studies). https://baymard.com/lists/cart-abandonment-rate
1422
+ - **Baymard Institute** -- Product Page UX Best Practices 2025.
1423
+ https://baymard.com/blog/current-state-ecommerce-product-page-ux
1424
+ - **Baymard Institute** -- E-Commerce Accessibility Research.
1425
+ https://baymard.com/research/accessibility
1426
+ - **Nielsen Norman Group (NNG)** -- E-Commerce UX Research Reports (1,073
1427
+ design guidelines across 13 volumes, 350+ websites tested across 5 countries).
1428
+ https://www.nngroup.com/reports/ecommerce-user-experience/
1429
+ - **NNG** -- Product Page UX Guidelines (108 guidelines).
1430
+ https://www.nngroup.com/reports/ecommerce-ux-product-pages-including-reviews/
1431
+ - **NNG** -- Trust and Credibility in E-Commerce (53 UX guidelines).
1432
+ https://www.nngroup.com/reports/ecommerce-ux-trust-and-credibility/
1433
+ - **Princeton University** -- Dark Patterns at Scale: Findings from a Crawl of
1434
+ 11K Shopping Websites.
1435
+ https://webtransparency.cs.princeton.edu/dark-patterns/
1436
+
1437
+ ### Design Systems & Platform Documentation
1438
+
1439
+ - **Shopify Polaris** -- Design system for e-commerce, unified Web Components
1440
+ across Admin, Checkout, and Customer Accounts.
1441
+ https://polaris-react.shopify.com/
1442
+ - **Shopify Polaris** -- 2025 unified and web-first architecture.
1443
+ https://www.shopify.com/partners/blog/polaris-unified-and-for-the-web
1444
+ - **Stripe** -- Payment Page Template Best Practices.
1445
+ https://stripe.com/resources/more/payment-page-template-best-practices
1446
+ - **Stripe** -- Checkout UI Design Strategies.
1447
+ https://stripe.com/resources/more/checkout-ui-strategies-for-faster-and-more-intuitive-transactions
1448
+ - **Stripe** -- Mobile Checkout UI Best Practices.
1449
+ https://stripe.com/resources/more/mobile-checkout-ui
1450
+ - **Stripe** -- Credit Card Checkout UI Design Guide.
1451
+ https://stripe.com/resources/more/credit-card-checkout-ui-design
1452
+ - **Stripe** -- One-Page Checkout vs. Multistep Checkout.
1453
+ https://stripe.com/resources/more/one-page-checkout-vs-multistep-checkout
1454
+ - **Google** -- Google Pay UX Best Practices.
1455
+ https://developers.google.com/pay/api/web/guides/ux-best-practices
1456
+
1457
+ ### Accessibility Standards
1458
+
1459
+ - **W3C WCAG 2.1 AA** -- Web Content Accessibility Guidelines (minimum
1460
+ compliance standard for e-commerce).
1461
+ - **AllAccessible** -- E-Commerce Accessibility 2025 WCAG Compliance Guide.
1462
+ https://www.allaccessible.org/blog/ecommerce-accessibility-complete-guide-wcag
1463
+ - **TestParty** -- E-Commerce Checkout Accessibility WCAG Compliance Guide.
1464
+ https://testparty.ai/blog/ecommerce-checkout-accessibility
1465
+ - **UsableNet** -- E-Commerce Website Accessibility Guide (71% of users with
1466
+ disabilities abandon inaccessible sites; 4,605 ADA lawsuits in 2024, 68%
1467
+ targeting e-commerce).
1468
+ https://blog.usablenet.com/ecommerce-website-accessibility-guide
1469
+
1470
+ ### Industry Data & Case Studies
1471
+
1472
+ - **Statista** -- Global Digital Shopping Cart Abandonment Rate 2026.
1473
+ https://www.statista.com/statistics/477804/online-shopping-cart-abandonment-rate-worldwide/
1474
+ - **Spiegel Research Center** -- 95% of consumers consult reviews before
1475
+ purchasing.
1476
+ - **Consumer Reports** -- Hidden fees cost the average family $3,200+ annually.
1477
+ - **UX Collective** -- 76% of users would stop using a product if they
1478
+ discovered dark patterns.
1479
+ - **FTC** -- Negative Option Rule amendment (2024), "Click-to-Cancel" provision.
1480
+ - **Baymard Institute** -- Apple UX Case Study.
1481
+ https://baymard.com/ux-benchmark/case-studies/apple
1482
+ - **Baymard Institute** -- Nike UX Case Study.
1483
+ https://baymard.com/ux-benchmark/case-studies/nike
1484
+ - **Baymard Institute** -- Amazon UX Case Study.
1485
+ https://baymard.com/ux-benchmark/case-studies/amazon
1486
+
1487
+ ---
1488
+
1489
+ *Last updated: 2026-03-07. This document synthesizes findings from Baymard
1490
+ Institute (41,000+ checkout scores, 650+ guidelines), Nielsen Norman Group
1491
+ (1,073 e-commerce design guidelines, 5 rounds of international testing),
1492
+ Shopify Polaris design system documentation, Stripe checkout research, and
1493
+ WCAG 2.1 AA accessibility standards. Statistics reflect 2025-2026 data where
1494
+ available.*