@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,790 @@
1
+ # Web Dashboard Design
2
+
3
+ > **Module Type:** Platform
4
+ > **Domain:** Design / Platforms
5
+ > **Last Updated:** 2026-03-07
6
+
7
+ ---
8
+
9
+ ## Overview
10
+
11
+ Web dashboards are the operational nerve centers of modern SaaS products, admin
12
+ panels, and analytics platforms. They aggregate, visualize, and surface
13
+ actionable data so users can monitor, analyze, and act without switching
14
+ contexts. This module codifies the layout patterns, component conventions,
15
+ typography systems, and interaction models that separate high-performing
16
+ dashboards from cluttered data dumps.
17
+
18
+ The guidance below draws from production design systems (Ant Design Pro,
19
+ Atlassian Design System, Shopify Polaris, Tremor) and from products widely
20
+ recognized for their dashboard craft (Linear, Notion, Retool).
21
+
22
+ ---
23
+
24
+ ## 1. Platform Design Language
25
+
26
+ ### 1.1 Dashboard Design Philosophy
27
+
28
+ Every dashboard exists to answer three questions for its user:
29
+
30
+ | Question | Design Implication |
31
+ |----------------|------------------------------------------------------|
32
+ | **What happened?** | Data density -- surface key metrics at a glance |
33
+ | **Is it good or bad?** | Scanability -- use color, trend lines, and comparison to convey status |
34
+ | **What should I do?** | Actionability -- place CTAs inline with the data that motivates them |
35
+
36
+ A well-designed dashboard balances these three axes. Overemphasizing density
37
+ creates noise. Overemphasizing scanability strips context. Overemphasizing
38
+ actionability buries the data that justifies the action.
39
+
40
+ **Core principles:**
41
+
42
+ - **Progressive disclosure.** Show summary metrics first; let users drill into
43
+ detail on demand. Notion exemplifies this by hiding complex UI until the user
44
+ requests it, keeping the default view clean.
45
+ - **One card, one topic.** Ant Design Pro recommends grouping closely related
46
+ datasets on a single card and using dividers to separate sub-topics within it.
47
+ - **Glanceability.** Linear advocates dashboards that are "deliberately short,
48
+ focused, and glanceable," minimizing cognitive load through consistent, minimal
49
+ visuals.
50
+ - **Intentionality over abundance.** Every widget should have a clear purpose
51
+ and an owner. Stale or purposeless widgets erode trust in the entire dashboard
52
+ (Linear best practices).
53
+
54
+ ### 1.2 Dashboard Archetypes
55
+
56
+ Different business roles demand different dashboard structures. Ant Design Pro
57
+ formalizes three archetypes:
58
+
59
+ #### Strategy / Overview Dashboards
60
+ - **Audience:** Executives, decision-makers.
61
+ - **Content:** A small number of long-term KPIs (revenue, churn, NPS) with
62
+ trend lines and period-over-period comparisons.
63
+ - **Layout:** Large hero metric cards at the top, followed by 2-3 charts.
64
+ - **Update cadence:** Daily or weekly -- data rarely changes intra-day.
65
+ - **Example:** Shopify's merchant home screen: gross sales, sessions, conversion
66
+ rate, and top products.
67
+
68
+ #### Analytics Dashboards
69
+ - **Audience:** Analysts, product managers.
70
+ - **Content:** Multi-dimensional data exploration with filters, breakdowns, and
71
+ drill-downs.
72
+ - **Layout:** "Summary and description" structure -- an overview row of metrics
73
+ followed by segmented charts and tables.
74
+ - **Update cadence:** Real-time or hourly.
75
+ - **Example:** Google Analytics, Amplitude.
76
+
77
+ #### Operational Dashboards
78
+ - **Audience:** Engineers, support agents, operations teams.
79
+ - **Content:** Wide range of metrics with emphasis on anomaly detection and
80
+ real-time status.
81
+ - **Layout:** Dense grids of status cards, live feeds, and alert panels.
82
+ - **Update cadence:** Real-time with auto-refresh.
83
+ - **Example:** Datadog infrastructure monitoring, PagerDuty incident dashboard.
84
+
85
+ #### Admin Panels
86
+ - **Audience:** Internal teams managing CRUD operations on business data.
87
+ - **Content:** Tables with inline editing, detail panels, and bulk actions.
88
+ - **Layout:** Master-detail with sidebar navigation.
89
+ - **Update cadence:** On-demand (user-triggered).
90
+ - **Example:** Retool internal tools, Django Admin, Strapi.
91
+
92
+ ### 1.3 Design Systems for Dashboards
93
+
94
+ | System | Strengths | Best For |
95
+ |-----------------|-------------------------------------------------|-----------------------------|
96
+ | **Ant Design Pro** | 60+ enterprise components, ProTable, ProForm, built-in layouts | Complex admin panels, Chinese & global enterprise apps |
97
+ | **Retool** | 90+ drag-and-drop UI blocks, query library, 20+ table column types | Internal tools, low-code admin dashboards |
98
+ | **Tremor** | 35+ chart/dashboard components, Tailwind + Radix UI, acquired by Vercel | Developer-built analytics dashboards |
99
+ | **Shopify Polaris** | Opinionated commerce components, IndexTable, DataTable | E-commerce admin and merchant dashboards |
100
+ | **Atlassian DS** | Navigation system, side-nav, consistent cross-product patterns | Project management and collaboration tools |
101
+ | **Cloudscape (AWS)** | Configurable dashboard pattern, 12-column grid, service dashboard templates | Cloud infrastructure and service dashboards |
102
+
103
+ ### 1.4 Information Density Spectrum
104
+
105
+ Density is not a universal value -- it is a function of user expertise and task
106
+ frequency.
107
+
108
+ ```
109
+ Consumer Enterprise
110
+ (more whitespace) (higher density)
111
+ |-------|-------|-------|-------|-------|-------|-------|
112
+ Notion Shopify Linear Jira Retool Bloomberg Terminal
113
+ ```
114
+
115
+ - **Enterprise users** perform repetitive, data-comparison tasks. They benefit
116
+ from compact rows (32-36px height), smaller fonts (13-14px), and reduced
117
+ padding. Bloomberg Terminal is the extreme.
118
+ - **Consumer / prosumer users** need breathing room. Shopify Polaris uses
119
+ generous card padding, 15-16px body text, and clear visual hierarchy.
120
+ - **Power-user hybrids** (Linear, Notion) thread the needle: clean by default
121
+ with density controls or compact modes.
122
+
123
+ **Rule of thumb:** If your user stares at the dashboard 4+ hours/day, increase
124
+ density. If they check it a few times per week, increase whitespace.
125
+
126
+ ---
127
+
128
+ ## 2. Layout & Navigation Patterns
129
+
130
+ ### 2.1 Sidebar Navigation
131
+
132
+ The sidebar is the dominant navigation pattern for web dashboards. Atlassian
133
+ moved product navigation from the top bar to the sidebar because it provides
134
+ "the vertical space and information density needed for a bird's-eye view of work
135
+ that wasn't possible with dropdown menus."
136
+
137
+ #### Dimensions
138
+
139
+ | State | Width | Contents |
140
+ |-------------|-------------|---------------------------------------------|
141
+ | **Expanded** | 240-280px | Icon + label + optional badge/count |
142
+ | **Collapsed** | 56-64px | Icon only + tooltip on hover |
143
+ | **Hidden** | 0px | Replaced by hamburger toggle (mobile) |
144
+
145
+ - **240px** is the most common expanded width (Linear, Notion, Atlassian).
146
+ - **64px** collapsed width accommodates 24px icons with 20px horizontal padding.
147
+ - **280px** is acceptable when the sidebar contains nested tree navigation
148
+ (file explorers, project hierarchies).
149
+
150
+ #### Sidebar Anatomy (top to bottom)
151
+
152
+ 1. **Workspace / org switcher** -- logo, workspace name, dropdown chevron.
153
+ 2. **Global actions** -- search (Cmd+K), quick-create button.
154
+ 3. **Primary navigation** -- top-level sections (Dashboard, Projects, Settings).
155
+ 4. **Secondary navigation** -- contextual sub-items, expandable groups.
156
+ 5. **Pinned / favorites** -- user-pinned items for fast access.
157
+ 6. **Footer** -- user avatar, help link, collapse toggle.
158
+
159
+ #### Collapse Behavior
160
+
161
+ - Trigger: chevron button at the sidebar bottom or edge-hover auto-reveal.
162
+ - Transition: 200-250ms ease-in-out width animation.
163
+ - Collapsed items show tooltips on hover with the full label.
164
+ - Keyboard shortcut: `[` or `]` to toggle (Linear convention).
165
+
166
+ ### 2.2 Top Bar
167
+
168
+ With product navigation in the sidebar, the top bar is reserved for universal,
169
+ cross-cutting actions:
170
+
171
+ | Zone | Contents | Alignment |
172
+ |---------------|--------------------------------------------------|-----------|
173
+ | **Left** | Breadcrumbs (Page > Subpage) or page title | Left |
174
+ | **Center** | Global search bar (optional, often Cmd+K only) | Center |
175
+ | **Right** | Notifications bell, help (?), user avatar/menu | Right |
176
+
177
+ - **Height:** 48-56px is standard. Shopify Polaris uses 56px; Linear uses 48px.
178
+ - **Breadcrumbs:** Show 2-3 levels max. Truncate intermediate levels with "..."
179
+ when depth exceeds 3.
180
+ - **Sticky behavior:** Top bar should remain fixed on scroll; content scrolls
181
+ beneath it.
182
+
183
+ ### 2.3 Content Area Layout
184
+
185
+ The content area below the top bar and to the right of the sidebar is where
186
+ dashboard data lives. Common arrangements:
187
+
188
+ #### Card-Based Layout
189
+ - **Structure:** Metric cards in a row (3-4 across), followed by charts and
190
+ tables in a 2-column or full-width arrangement.
191
+ - **Card sizing:** Use a 12-column grid. Metric cards span 3 columns each
192
+ (4 cards per row). Charts span 6 columns (2 per row) or 12 columns
193
+ (full width).
194
+ - **Card anatomy:** Title, primary metric (large number), trend indicator
195
+ (arrow + percentage), sparkline or mini-chart, comparison period.
196
+
197
+ #### Master-Detail Layout
198
+ - **Structure:** A list or table on the left (60-70% width), detail panel on
199
+ the right (30-40% width).
200
+ - **Use case:** Admin panels, CRM views, email clients.
201
+ - **Interaction:** Clicking a row in the master list populates the detail panel
202
+ without a full page navigation.
203
+
204
+ #### Full-Width Table Layout
205
+ - **Structure:** Filters at the top, full-width data table below.
206
+ - **Use case:** Resource indexes, log viewers, transaction lists.
207
+ - **Shopify Polaris:** Recommends the IndexTable pattern for resource-heavy
208
+ views with sorting, filtering, and bulk actions.
209
+
210
+ ### 2.4 Multi-Level Navigation
211
+
212
+ Complex dashboards often require three navigation tiers:
213
+
214
+ ```
215
+ Sidebar (L1) Tabs (L2) Breadcrumbs (L3)
216
+ ----------------- ------------------- ----------------------
217
+ Dashboard Overview | Analytics Dashboard > Analytics > Funnel
218
+ Projects Board | List | Gantt Projects > Alpha > Board
219
+ Settings General | Billing Settings > Billing
220
+ ```
221
+
222
+ - **L1 (Sidebar):** Top-level sections. 5-8 items maximum before grouping.
223
+ - **L2 (Horizontal tabs):** Sub-views within a section. Place directly below
224
+ the page header. Maximum 5-7 tabs before overflow into a "More" dropdown.
225
+ - **L3 (Breadcrumbs):** Show the user's position in the hierarchy. Clickable
226
+ for navigation back up the tree.
227
+
228
+ Avoid more than three navigation levels. If depth exceeds three, reconsider
229
+ the information architecture.
230
+
231
+ ### 2.5 Dashboard Grid System
232
+
233
+ #### 12-Column Grid
234
+
235
+ The 12-column grid is the industry standard for dashboard layouts:
236
+
237
+ - **Gutter width:** 16-24px (Ant Design uses 16px; Polaris uses 20px).
238
+ - **Margin:** 24-32px from sidebar edge to first column.
239
+ - **Common spans:** 3 (quarter), 4 (third), 6 (half), 12 (full).
240
+ - **Row gap:** 16-24px between card rows.
241
+
242
+ #### Card-Based Drag-and-Drop
243
+
244
+ Configurable dashboards (Cloudscape, Grafana, Home Assistant) allow users to
245
+ rearrange widgets:
246
+
247
+ - Cards snap to grid intersections, preventing arbitrary overlap.
248
+ - "Z-grid" layout: items flow left to right, wrapping to the next row when full.
249
+ - Row height is determined by the tallest card in the row.
250
+ - Libraries: React Grid Layout (React), Angular Grid Layout (Angular),
251
+ gridstack.js (vanilla JS).
252
+ - Provide a "Reset layout" action so users can revert to defaults.
253
+ - Persist layout preferences per user in localStorage or server-side.
254
+
255
+ ### 2.6 Responsive Behavior
256
+
257
+ | Breakpoint | Viewport | Sidebar State | Grid Columns |
258
+ |----------------|---------------|-------------------------|--------------|
259
+ | **Desktop XL** | >= 1440px | Expanded (240-280px) | 12 |
260
+ | **Desktop** | 1024-1439px | Expanded or collapsed | 12 |
261
+ | **Tablet** | 768-1023px | Collapsed (64px) or hidden | 8 or 6 |
262
+ | **Mobile** | < 768px | Hidden (drawer overlay) | 4 or 1 |
263
+
264
+ - At **768px**, the sidebar collapses to a hamburger-triggered drawer overlay.
265
+ Ant Design's Layout component supports `breakpoint` prop for this behavior.
266
+ - Cards reflow: 4-across becomes 2-across on tablet, 1-across on mobile.
267
+ - Tables switch to card-list view or horizontal scroll on mobile.
268
+ - Charts maintain aspect ratio but reduce in width; consider hiding secondary
269
+ charts on mobile.
270
+
271
+ ---
272
+
273
+ ## 3. Component Conventions
274
+
275
+ ### 3.1 Data Tables
276
+
277
+ Data tables are the backbone of most dashboards. Shopify Polaris distinguishes
278
+ between `DataTable` (simple summaries) and `IndexTable` (resource indexes with
279
+ selection and bulk actions).
280
+
281
+ #### Column Design
282
+
283
+ | Data Type | Alignment | Format |
284
+ |---------------|------------|-------------------------------------|
285
+ | Text | Left | Sentence case, truncate with "..." |
286
+ | Numbers | Right | Locale-formatted, fixed decimals |
287
+ | Currency | Right | Symbol + number ($1,234.56) |
288
+ | Dates | Left/Right | Relative ("2h ago") or absolute |
289
+ | Status | Left | Badge or colored dot + label |
290
+ | Actions | Right | Icon buttons or "..." overflow menu |
291
+
292
+ **Polaris guideline:** Non-numeric values left-aligned, numeric values
293
+ right-aligned. This ensures fast vertical scanning of number columns.
294
+
295
+ #### Sorting
296
+
297
+ - Indicate sortable columns with a subtle chevron icon in the header.
298
+ - Show the active sort column with a filled chevron (ascending/descending).
299
+ - **Client-side sorting** for datasets < 1,000 rows.
300
+ - **Server-side sorting** for larger datasets to reduce payload and memory.
301
+ - Default sort should match the user's most common query (often "most recent
302
+ first").
303
+
304
+ #### Filtering
305
+
306
+ - Place filters above the table in a horizontal filter bar.
307
+ - Show active filter count with a badge on the filter button.
308
+ - Allow "saved filters" (Linear, Jira) so users can bookmark common queries.
309
+ - Clear all filters with a single "Reset" button.
310
+ - For complex filtering, use a filter panel (slide-out or dropdown) with
311
+ field + operator + value selectors.
312
+
313
+ #### Pagination
314
+
315
+ - Default to 25 rows per page. Offer 10 / 25 / 50 / 100 options.
316
+ - Show total count: "Showing 1-25 of 1,248 results."
317
+ - Use cursor-based pagination for real-time data; offset-based for static data.
318
+ - Provide generous click targets (minimum 44x44px) on pagination controls.
319
+ - Consider infinite scroll for feed-like views, but prefer pagination for
320
+ data tables where users need to reference specific positions.
321
+
322
+ #### Row Selection & Bulk Actions
323
+
324
+ - Checkbox column on the far left.
325
+ - "Select all" checkbox in the header selects the current page.
326
+ - "Select all 1,248" link appears above the table for cross-page selection.
327
+ - Bulk action bar appears at the top or bottom when 1+ rows are selected.
328
+ - Common bulk actions: Delete, Export, Assign, Change Status, Tag.
329
+
330
+ #### Inline Editing
331
+
332
+ - Double-click or click-to-edit on individual cells.
333
+ - Show a subtle edit icon on hover to signal editability.
334
+ - Save on blur or Enter; cancel on Escape.
335
+ - Validate inline and show field-level errors.
336
+ - Retool supports 20+ column types including editable text, dropdowns, date
337
+ pickers, and toggles within table cells.
338
+
339
+ ### 3.2 Charts and Data Visualization
340
+
341
+ #### Chart Type Selection
342
+
343
+ | Data Relationship | Recommended Chart | Avoid |
344
+ |------------------------|---------------------------|----------------------|
345
+ | Trend over time | Line chart, area chart | Pie chart |
346
+ | Part-to-whole | Stacked bar, donut chart | 3D pie chart |
347
+ | Comparison (few items) | Bar chart (horizontal) | Radar chart |
348
+ | Comparison (many items) | Table or heatmap | Clustered bar chart |
349
+ | Distribution | Histogram, box plot | Line chart |
350
+ | Correlation | Scatter plot | Bar chart |
351
+ | Geographic | Choropleth map | Pie chart |
352
+
353
+ #### Color Conventions
354
+
355
+ - **Limit to 5-7 colors** per chart. Beyond that, use grouped categories,
356
+ small multiples, or tables.
357
+ - **Sequential palettes** (single hue, varying saturation) for magnitude data.
358
+ - **Diverging palettes** (two hues diverging from a neutral midpoint) for data
359
+ with a meaningful center (e.g., profit/loss).
360
+ - **Categorical palettes** (distinct hues) for nominal categories.
361
+ - Use **brand-aligned colors** as the primary series color; neutral grays for
362
+ secondary series.
363
+ - **Red for negative, green for positive** is conventional -- but pair with
364
+ icons (down-arrow, up-arrow) for color-blind accessibility.
365
+ - Use **ColorBrewer** palettes for guaranteed color-blind safety.
366
+ - Atlassian's data viz color guide recommends testing all palettes against
367
+ deuteranopia, protanopia, and tritanopia simulations.
368
+
369
+ #### Interaction Patterns
370
+
371
+ - **Hover tooltips:** Show exact values on hover. Include the data label,
372
+ formatted value, and comparison if applicable.
373
+ - **Click to drill down:** Clicking a bar or segment filters the dashboard
374
+ or navigates to a detail view.
375
+ - **Zoom and pan:** For time-series charts, allow range selection (brush) to
376
+ zoom into a time window.
377
+ - **Legend interaction:** Clicking a legend item toggles that series on/off.
378
+ - **Annotations:** Allow users to add notes to specific data points or time
379
+ ranges.
380
+
381
+ #### Performance
382
+
383
+ - Render charts with Canvas (not SVG) for datasets > 1,000 points.
384
+ - Lazy-load charts below the fold.
385
+ - Show skeleton placeholders while chart data loads.
386
+ - Debounce filter changes (200-300ms) before re-rendering charts.
387
+ - Tremor provides optimized Recharts-based components that handle most of
388
+ these concerns out of the box.
389
+
390
+ ### 3.3 Filters and Search
391
+
392
+ #### Global Search / Command Palette
393
+
394
+ Modern dashboards implement a command palette (Cmd+K / Ctrl+K):
395
+
396
+ - **Trigger:** Keyboard shortcut displayed in the top bar search field.
397
+ - **Scope:** Search across pages, actions, recent items, and settings.
398
+ - **Implementation:** Full-screen overlay or centered modal (480-560px wide).
399
+ - **Sections:** Recent items, suggested actions, navigation shortcuts.
400
+ - **Keyboard navigation:** Arrow keys to navigate, Enter to select, Esc to
401
+ close.
402
+ - **Adopted by:** Linear, Notion, Figma, Slack, Vercel, GitHub.
403
+
404
+ #### Faceted Search
405
+
406
+ For data-heavy views (logs, transactions, user lists):
407
+
408
+ - Display 5-7 facet categories maximum per view.
409
+ - Show result counts next to each facet option.
410
+ - Allow multi-select within a facet (OR logic) and cross-facet (AND logic).
411
+ - Keep frequently used filters always visible; group less common ones under
412
+ "More filters."
413
+ - Collapsible filter sidebar (left-hand) or horizontal filter bar (above table).
414
+
415
+ #### Saved Filters
416
+
417
+ - Allow users to save filter combinations with custom names.
418
+ - Display saved filters as tabs or chips above the data view.
419
+ - Share saved filters with team members (Linear, Jira).
420
+ - Show a "Modified" indicator when a saved filter has unsaved changes.
421
+
422
+ ### 3.4 Status Indicators
423
+
424
+ | Pattern | Use Case | Example |
425
+ |-------------------|---------------------------------------------|----------------------------|
426
+ | **Colored dot** | Simple binary/ternary status | Online (green), Offline (red) |
427
+ | **Badge** | Categorical status with label | "In Progress" (blue badge) |
428
+ | **Progress bar** | Completion percentage | Task progress (65%) |
429
+ | **Trend arrow** | Direction of change | Revenue up 12% |
430
+ | **Sparkline** | Trend shape without axis detail | 7-day traffic pattern |
431
+ | **Traffic light** | RAG status (Red/Amber/Green) | Project health indicator |
432
+ | **Pulse dot** | Live/real-time status | Server heartbeat |
433
+
434
+ - Always pair color with a secondary indicator (icon, label, pattern) for
435
+ accessibility.
436
+ - Use semantic color tokens from your design system rather than raw hex values.
437
+ - Atlassian uses "lozenge" components (rounded badges) with predefined semantic
438
+ colors: green (success), blue (in progress), yellow (moved), red (removed).
439
+
440
+ ### 3.5 Action Menus
441
+
442
+ #### Context Menus (Right-Click or "..." Button)
443
+
444
+ - Trigger: Three-dot icon button on table rows, cards, or list items.
445
+ - Content: 3-7 actions maximum. Group with dividers if > 5 actions.
446
+ - Destructive actions (Delete, Archive) placed last with red text.
447
+ - Keyboard: open with Enter/Space on the trigger, navigate with arrow keys.
448
+
449
+ #### Bulk Action Bar
450
+
451
+ - Appears as a fixed bar (top or bottom of viewport) when items are selected.
452
+ - Shows selection count: "3 items selected."
453
+ - Contains the most common bulk actions as buttons.
454
+ - "Deselect all" button to clear selection.
455
+ - Disappears when selection is cleared.
456
+
457
+ #### Command Palette Actions
458
+
459
+ - Beyond navigation, the command palette can execute actions:
460
+ "Create new project," "Invite team member," "Export data."
461
+ - Show keyboard shortcuts inline for discoverable power-user workflows.
462
+ - Superhuman pioneered this pattern; Linear and Notion adopted it broadly.
463
+
464
+ ### 3.6 Empty States and Loading States
465
+
466
+ #### Empty States
467
+
468
+ Every dashboard view that can be empty must have a designed empty state.
469
+ Carbon Design System categorizes them into three types:
470
+
471
+ 1. **First-use empty states:** The user has not created any data yet.
472
+ - Show an illustration, a headline explaining the section's purpose, and a
473
+ primary CTA ("Create your first project").
474
+ - Optionally include a link to documentation or a quick-start guide.
475
+
476
+ 2. **No-results empty states:** A search or filter returned zero results.
477
+ - Show a clear message: "No results match your filters."
478
+ - Offer actions: "Clear filters" or "Try a different search."
479
+ - Do not show a blank screen with no explanation.
480
+
481
+ 3. **Error empty states:** Data failed to load.
482
+ - Show a non-technical error message and a "Retry" button.
483
+ - Include a support link for persistent errors.
484
+
485
+ **Anti-pattern:** A generic "No data" message with no guidance. Every empty
486
+ state is an opportunity to educate or activate the user.
487
+
488
+ #### Loading States
489
+
490
+ | Duration | Pattern | Use Case |
491
+ |-----------------|----------------------------|----------------------------------|
492
+ | < 300ms | No indicator needed | Instant interactions |
493
+ | 300ms - 2s | Skeleton screen | Page loads, card content loading |
494
+ | 2s - 10s | Skeleton + progress bar | Data-heavy queries, exports |
495
+ | > 10s | Progress bar + message | Report generation, large imports |
496
+
497
+ **Skeleton screens:**
498
+ - Mirror the layout of the loaded content (matching card shapes, table rows,
499
+ chart areas).
500
+ - Use subtle pulse animation (opacity 0.3 to 0.7 at 1.5s intervals).
501
+ - Apply skeletons to container components (cards, tables, lists) -- not to
502
+ action components (buttons, inputs, toggles).
503
+ - Load in batches: first batch shows page structure skeletons; second batch
504
+ fills in images and below-fold content.
505
+
506
+ **Spinners:**
507
+ - Use on individual modules (a single card or chart), not full pages.
508
+ - Center the spinner within the loading container.
509
+ - Pair with a descriptive label for operations > 3 seconds: "Loading sales
510
+ data..."
511
+
512
+ ---
513
+
514
+ ## 4. Typography & Spacing System
515
+
516
+ ### 4.1 Dashboard Typography Scale
517
+
518
+ Dashboards can use denser typography than marketing sites. Where a marketing
519
+ page uses 16-18px body text, a dashboard can use 13-14px and remain readable
520
+ because users are in a focused, task-oriented mindset.
521
+
522
+ #### Recommended Type Scale (Major Second -- 1.125 ratio)
523
+
524
+ | Role | Size | Weight | Line Height | Use |
525
+ |---------------------|---------|------------|-------------|-------------------------------|
526
+ | Page title | 24px | Semibold | 32px (1.33) | Page headers |
527
+ | Section heading | 18px | Semibold | 24px (1.33) | Card titles, section headers |
528
+ | Subsection heading | 16px | Medium | 24px (1.5) | Widget titles, group labels |
529
+ | Body / default | 14px | Regular | 20px (1.43) | General text, descriptions |
530
+ | Table cell text | 13-14px | Regular | 20px (1.43) | Table body content |
531
+ | Caption / label | 12px | Medium | 16px (1.33) | Axis labels, metadata, hints |
532
+ | Micro label | 11px | Medium | 16px (1.45) | Badge text, chart annotations |
533
+
534
+ #### Font Recommendations for Dense UIs
535
+
536
+ - **Inter:** Designed specifically for computer screens. Excellent legibility at
537
+ small sizes. Used by Linear, Vercel, and many modern SaaS products.
538
+ - **SF Pro / SF Mono:** Apple's system font. Native feel on macOS. Tabular
539
+ figures built in.
540
+ - **IBM Plex Sans / Mono:** Open source. Strong at 12-14px. Used by Carbon
541
+ Design System.
542
+ - **JetBrains Mono:** For code/log displays within dashboards.
543
+
544
+ **Key rules:**
545
+ - Use **tabular (monospaced) figures** for numbers in tables and metrics so
546
+ digits align vertically (font-feature-settings: "tnum").
547
+ - Below 14px, add **+0.2px letter-spacing** to maintain readability.
548
+ - WCAG minimum line height is 1.5x font size for body text. Headings can use
549
+ 1.2-1.33x.
550
+
551
+ ### 4.2 Spacing System
552
+
553
+ Use a **4px base unit** with an **8px primary scale** for component spacing:
554
+
555
+ ```
556
+ 4px -- icon-to-label gap, tight inline elements
557
+ 8px -- compact padding (dense table cells, badge internal padding)
558
+ 12px -- list item padding, small card padding
559
+ 16px -- standard card padding, form field spacing
560
+ 24px -- section gaps, card-to-card spacing
561
+ 32px -- page margins, major section dividers
562
+ 48px -- top bar height (minimum), large section spacing
563
+ ```
564
+
565
+ #### Table Cell Padding Conventions
566
+
567
+ | Density Mode | Vertical Padding | Horizontal Padding | Row Height |
568
+ |-----------------|------------------|--------------------|------------|
569
+ | **Compact** | 4-6px | 8-12px | 32-36px |
570
+ | **Default** | 8-10px | 12-16px | 40-44px |
571
+ | **Comfortable** | 12-16px | 16-20px | 48-56px |
572
+
573
+ - Ant Design's Table component supports `size="small"` (compact) and
574
+ `size="middle"` (default) props.
575
+ - Shopify Polaris DataTable uses 16px horizontal padding and 12px vertical
576
+ padding by default.
577
+ - Provide a density toggle (compact/default/comfortable) for power users.
578
+ Linear and Notion both offer this.
579
+
580
+ ### 4.3 Color System for Dashboards
581
+
582
+ | Token | Purpose | Example Value |
583
+ |----------------------|----------------------------------|----------------------|
584
+ | `--bg-primary` | Main content background | #FFFFFF / #0F0F0F |
585
+ | `--bg-secondary` | Card backgrounds, sidebar | #F9FAFB / #1A1A1A |
586
+ | `--bg-tertiary` | Hover states, subtle emphasis | #F3F4F6 / #262626 |
587
+ | `--text-primary` | Headings, primary content | #111827 / #F9FAFB |
588
+ | `--text-secondary` | Descriptions, metadata | #6B7280 / #9CA3AF |
589
+ | `--text-tertiary` | Placeholders, disabled | #9CA3AF / #6B7280 |
590
+ | `--border-default` | Card borders, dividers | #E5E7EB / #2D2D2D |
591
+ | `--accent-primary` | CTAs, active nav, links | Brand color |
592
+ | `--status-success` | Positive metrics, completed | #10B981 |
593
+ | `--status-warning` | Warnings, at-risk items | #F59E0B |
594
+ | `--status-error` | Errors, negative metrics | #EF4444 |
595
+ | `--status-info` | Informational indicators | #3B82F6 |
596
+
597
+ - Support both light and dark themes. Dashboard users often work in low-light
598
+ environments and will expect dark mode.
599
+ - Use **2 main colors** plus neutrals. Retool recommends a brand color for
600
+ navigation backgrounds and an accent color for primary actions.
601
+
602
+ ---
603
+
604
+ ## 5. Common Mistakes
605
+
606
+ ### 5.1 Too Much Data With No Hierarchy
607
+
608
+ **Symptom:** Every metric has equal visual weight. Users cannot distinguish
609
+ critical KPIs from supporting data.
610
+
611
+ **Fix:** Establish a clear visual hierarchy. Hero metrics get large type
612
+ (24-32px), secondary metrics get medium type (16-18px), and supporting data
613
+ lives in tables or detail views. Use Ant Design Pro's "one card, one topic"
614
+ principle to group related data.
615
+
616
+ ### 5.2 Charts Without Context or Comparison
617
+
618
+ **Symptom:** A bar chart shows this month's revenue as $142K. Is that good?
619
+ Bad? The user has no way to know.
620
+
621
+ **Fix:** Always show comparison data. Options:
622
+ - Period-over-period: "vs. last month: +12%."
623
+ - Target/benchmark: "Goal: $150K (95% achieved)."
624
+ - Trend line: Show the last 6-12 data points so the user can see trajectory.
625
+ - Annotations: Mark significant events (product launch, outage) on time-series
626
+ charts.
627
+
628
+ ### 5.3 Non-Responsive Dashboards
629
+
630
+ **Symptom:** The dashboard is designed for 1440px+ screens. On a laptop
631
+ (1280px) or tablet, content overflows, charts are cut off, and tables require
632
+ awkward horizontal scrolling.
633
+
634
+ **Fix:** Design for 1280px as the primary viewport, not 1440px. Use the
635
+ responsive breakpoint system from Section 2.6. Test on 1024px, 768px, and
636
+ 375px. Ensure tables scroll horizontally within their container rather than
637
+ breaking the page layout.
638
+
639
+ ### 5.4 Slow-Loading Data Visualizations
640
+
641
+ **Symptom:** Charts take 3-5 seconds to render. Users see a blank space or a
642
+ spinner. They lose trust and stop using the dashboard.
643
+
644
+ **Fix:**
645
+ - Use skeleton screens that match chart layout.
646
+ - Lazy-load charts below the fold.
647
+ - Render with Canvas instead of SVG for > 1,000 data points.
648
+ - Cache query results and show stale data with a "Last updated: 2m ago"
649
+ indicator while fresh data loads in the background.
650
+ - Debounce filter changes (200-300ms) before triggering re-renders.
651
+
652
+ ### 5.5 Poor Empty States
653
+
654
+ **Symptom:** A new user sees "No data" with no explanation or guidance. They
655
+ do not know if something is broken or if they need to take action.
656
+
657
+ **Fix:** Design intentional empty states for every view (see Section 3.6).
658
+ Include: (1) an illustration or icon, (2) a clear headline, (3) a one-sentence
659
+ explanation, and (4) a primary CTA. Test by creating a new account and
660
+ navigating every section.
661
+
662
+ ### 5.6 One-Size-Fits-All Dashboard
663
+
664
+ **Symptom:** Executives, analysts, and operators all see the same dashboard.
665
+ None of them find it useful.
666
+
667
+ **Fix:** Design role-specific views or allow dashboard customization
668
+ (drag-and-drop widgets, saved views). At minimum, provide a "compact" vs.
669
+ "comfortable" density toggle.
670
+
671
+ ### 5.7 Overusing Color
672
+
673
+ **Symptom:** Every chart series is a different bright color. Status indicators
674
+ use red, orange, yellow, green, blue, and purple. The dashboard looks like a
675
+ bag of candy.
676
+
677
+ **Fix:** Limit chart palettes to 5-7 colors. Use a single-hue sequential
678
+ palette when possible. Reserve red and green for semantic meaning (error/success)
679
+ and do not use them as arbitrary categorical colors.
680
+
681
+ ### 5.8 Ignoring Keyboard Navigation
682
+
683
+ **Symptom:** Power users cannot navigate tables, switch tabs, or trigger actions
684
+ without a mouse. No command palette exists.
685
+
686
+ **Fix:** Implement Cmd+K command palette. Add keyboard shortcuts for common
687
+ actions (N for new, E for edit, Delete for remove). Ensure all interactive
688
+ elements are reachable via Tab and operable via Enter/Space. Show keyboard
689
+ shortcut hints in tooltips and action menus.
690
+
691
+ ### 5.9 Assuming Users Understand Chart Types
692
+
693
+ **Symptom:** A funnel chart or Sankey diagram is used without labels, legend, or
694
+ explanation. Users who are not data-literate cannot interpret it.
695
+
696
+ **Fix:** Add clear titles to every chart. Include a legend. Use tooltips on
697
+ hover to show exact values. Consider adding a brief "What this shows" subtitle
698
+ for complex visualizations.
699
+
700
+ ### 5.10 No Data Freshness Indicators
701
+
702
+ **Symptom:** Users do not know when the data was last updated. They make
703
+ decisions based on potentially stale data.
704
+
705
+ **Fix:** Show "Last updated: [time]" on every data widget or at the page level.
706
+ For real-time dashboards, show a live indicator (pulse dot) and auto-refresh
707
+ interval. For batch-updated dashboards, show the next scheduled refresh time.
708
+
709
+ ---
710
+
711
+ ## 6. Dashboard Design Checklist
712
+
713
+ Use this checklist before shipping or reviewing a dashboard design. Each item
714
+ should be verified.
715
+
716
+ ### Layout & Structure
717
+
718
+ - [ ] **Sidebar width** is 240-280px expanded and collapses to 56-64px with
719
+ icon-only display and tooltips on hover.
720
+ - [ ] **Top bar** includes breadcrumbs, global search trigger (Cmd+K), and
721
+ user menu. Height is 48-56px.
722
+ - [ ] **Content area** uses a 12-column grid with 16-24px gutters and 24-32px
723
+ page margins.
724
+ - [ ] **Responsive behavior** tested at 1440px, 1280px, 1024px, 768px, and
725
+ 375px. Sidebar becomes a drawer on mobile (< 768px).
726
+
727
+ ### Data Display
728
+
729
+ - [ ] **Every chart has context:** comparison data, trend lines, or benchmarks.
730
+ No isolated numbers without reference.
731
+ - [ ] **Data tables** have sorting, filtering, and pagination. Numeric columns
732
+ are right-aligned. Text columns are left-aligned.
733
+ - [ ] **Empty states** are designed for first-use, no-results, and error
734
+ scenarios with clear messaging and CTAs.
735
+ - [ ] **Loading states** use skeleton screens for container components. No blank
736
+ white spaces during data fetch.
737
+ - [ ] **Data freshness** is indicated with "Last updated" timestamps or
738
+ real-time pulse indicators.
739
+
740
+ ### Interaction & Navigation
741
+
742
+ - [ ] **Command palette** (Cmd+K) is implemented for global search and
743
+ quick actions.
744
+ - [ ] **Keyboard navigation** works for tables (arrow keys), tabs (left/right),
745
+ and modals (Escape to close).
746
+ - [ ] **Bulk actions** appear when table rows are selected, with clear
747
+ selection count.
748
+ - [ ] **Filter state** is visible (active filter badges/chips) and clearable
749
+ with a single "Reset" action.
750
+ - [ ] **Saved filters** are available for data-heavy views so users can
751
+ bookmark common queries.
752
+
753
+ ### Visual Design
754
+
755
+ - [ ] **Typography** uses tabular figures for numbers. Body text is 13-14px
756
+ minimum. Heading hierarchy is clear (24px > 18px > 16px > 14px).
757
+ - [ ] **Color palette** is limited to 5-7 data colors. Semantic colors (red,
758
+ green, yellow) are used consistently for status. Color is never the sole
759
+ indicator.
760
+ - [ ] **Dark mode** is supported or planned. Color tokens use semantic naming,
761
+ not raw hex values.
762
+ - [ ] **Density** is appropriate for the audience. Enterprise tools use compact
763
+ spacing; consumer tools use generous spacing. A density toggle is ideal.
764
+
765
+ ### Accessibility
766
+
767
+ - [ ] **Color contrast** meets WCAG AA (4.5:1 for text, 3:1 for large text
768
+ and UI components).
769
+ - [ ] **Status indicators** pair color with icons, labels, or patterns for
770
+ color-blind users.
771
+ - [ ] **Charts** include text labels or tooltips so information is not
772
+ color-dependent. Palettes are tested against color vision deficiency
773
+ simulations.
774
+
775
+ ---
776
+
777
+ ## References
778
+
779
+ - [Ant Design Pro - Layout](https://pro.ant.design/docs/layout) | [Visualization Page Spec](https://ant.design/docs/spec/visualization-page/)
780
+ - [Atlassian DS - Navigation System](https://atlassian.design/components/navigation-system/) | [New Navigation Blog](https://www.atlassian.com/blog/design/designing-atlassians-new-navigation) | [Data Viz Colors](https://www.atlassian.com/data/charts/how-to-choose-colors-data-visualization)
781
+ - [Shopify Polaris - Data Table](https://polaris.shopify.com/components/tables/data-table) | [Data Visualizations](https://polaris-react.shopify.com/design/data-visualizations) | [Spatial Organization](https://polaris-react.shopify.com/design/layout/spacial-organization)
782
+ - [Tremor - Dashboard Components](https://www.tremor.so/) | [Retool - Design Best Practices](https://docs.retool.com/education/coe/well-architected/design)
783
+ - [Cloudscape - Configurable Dashboard](https://cloudscape.design/patterns/general/service-dashboard/configurable-dashboard/)
784
+ - [Carbon DS - Empty States](https://carbondesignsystem.com/patterns/empty-states-pattern/) | [Loading Pattern](https://carbondesignsystem.com/patterns/loading-pattern/)
785
+ - [Linear - UI Redesign](https://linear.app/now/how-we-redesigned-the-linear-ui) | [Dashboard Best Practices](https://linear.app/now/dashboards-best-practices)
786
+ - [Pencil & Paper - Data Tables](https://www.pencilandpaper.io/articles/ux-pattern-analysis-enterprise-data-tables) | [Dashboards](https://www.pencilandpaper.io/articles/ux-pattern-analysis-data-dashboards) | [Filtering](https://www.pencilandpaper.io/articles/ux-pattern-analysis-enterprise-filtering)
787
+ - [NN/g - Skeleton Screens](https://www.nngroup.com/articles/skeleton-screens/) | [Empty States in Complex Apps](https://www.nngroup.com/articles/empty-state-interface-design/)
788
+ - [Superhuman - Command Palette](https://blog.superhuman.com/how-to-build-a-remarkable-command-palette/) | [LogRocket - Linear Design Trend](https://blog.logrocket.com/ux-design/linear-design/)
789
+ - [Dense Dashboard Fonts](https://fontalternatives.com/blog/best-fonts-dense-dashboards/) | [8pt Grid System](https://uxplanet.org/everything-you-should-know-about-8-point-grid-system-in-ux-design-b69cb945b18d)
790
+ - [Data Viz Color Best Practices](https://letdataspeak.com/mastering-color-in-data-visualizations/) | [USWDS Data Visualizations](https://designsystem.digital.gov/components/data-visualizations/)