@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.
- package/AGENTS.md +111 -0
- package/CHANGELOG.md +14 -0
- package/CONTRIBUTING.md +101 -0
- package/LICENSE +21 -0
- package/README.md +314 -0
- package/assets/composition-engine.mmd +34 -0
- package/assets/demo-script.sh +17 -0
- package/assets/logo-dark.svg +14 -0
- package/assets/logo.svg +14 -0
- package/assets/pipeline.mmd +39 -0
- package/assets/record-demo.sh +51 -0
- package/docs/README.md +51 -0
- package/docs/adapters/context-mode.md +60 -0
- package/docs/concepts/architecture.md +87 -0
- package/docs/concepts/artifact-model.md +60 -0
- package/docs/concepts/composition-engine.md +36 -0
- package/docs/concepts/indexing-and-recall.md +160 -0
- package/docs/concepts/observability.md +41 -0
- package/docs/concepts/roles-and-workflows.md +59 -0
- package/docs/concepts/terminology-policy.md +27 -0
- package/docs/getting-started/01-installation.md +78 -0
- package/docs/getting-started/02-first-run.md +102 -0
- package/docs/getting-started/03-adding-to-project.md +15 -0
- package/docs/getting-started/04-host-setup.md +15 -0
- package/docs/guides/ci-integration.md +15 -0
- package/docs/guides/creating-skills.md +15 -0
- package/docs/guides/expertise-module-authoring.md +15 -0
- package/docs/guides/hook-development.md +15 -0
- package/docs/guides/memory-and-learnings.md +34 -0
- package/docs/guides/multi-host-export.md +15 -0
- package/docs/guides/troubleshooting.md +101 -0
- package/docs/guides/writing-custom-roles.md +15 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
- package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
- package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
- package/docs/readmes/INDEX.md +99 -0
- package/docs/readmes/features/expertise/README.md +171 -0
- package/docs/readmes/features/exports/README.md +222 -0
- package/docs/readmes/features/hooks/README.md +103 -0
- package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
- package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
- package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
- package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
- package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
- package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
- package/docs/readmes/features/hooks/session-start.md +119 -0
- package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
- package/docs/readmes/features/roles/README.md +157 -0
- package/docs/readmes/features/roles/clarifier.md +152 -0
- package/docs/readmes/features/roles/content-author.md +190 -0
- package/docs/readmes/features/roles/designer.md +193 -0
- package/docs/readmes/features/roles/executor.md +184 -0
- package/docs/readmes/features/roles/learner.md +210 -0
- package/docs/readmes/features/roles/planner.md +182 -0
- package/docs/readmes/features/roles/researcher.md +164 -0
- package/docs/readmes/features/roles/reviewer.md +184 -0
- package/docs/readmes/features/roles/specifier.md +162 -0
- package/docs/readmes/features/roles/verifier.md +215 -0
- package/docs/readmes/features/schemas/README.md +178 -0
- package/docs/readmes/features/skills/README.md +63 -0
- package/docs/readmes/features/skills/brainstorming.md +96 -0
- package/docs/readmes/features/skills/debugging.md +148 -0
- package/docs/readmes/features/skills/design.md +120 -0
- package/docs/readmes/features/skills/prepare-next.md +109 -0
- package/docs/readmes/features/skills/run-audit.md +159 -0
- package/docs/readmes/features/skills/scan-project.md +109 -0
- package/docs/readmes/features/skills/self-audit.md +176 -0
- package/docs/readmes/features/skills/tdd.md +137 -0
- package/docs/readmes/features/skills/using-skills.md +92 -0
- package/docs/readmes/features/skills/verification.md +120 -0
- package/docs/readmes/features/skills/writing-plans.md +104 -0
- package/docs/readmes/features/tooling/README.md +320 -0
- package/docs/readmes/features/workflows/README.md +186 -0
- package/docs/readmes/features/workflows/author.md +181 -0
- package/docs/readmes/features/workflows/clarify.md +154 -0
- package/docs/readmes/features/workflows/design-review.md +171 -0
- package/docs/readmes/features/workflows/design.md +169 -0
- package/docs/readmes/features/workflows/discover.md +162 -0
- package/docs/readmes/features/workflows/execute.md +173 -0
- package/docs/readmes/features/workflows/learn.md +167 -0
- package/docs/readmes/features/workflows/plan-review.md +165 -0
- package/docs/readmes/features/workflows/plan.md +170 -0
- package/docs/readmes/features/workflows/prepare-next.md +167 -0
- package/docs/readmes/features/workflows/review.md +169 -0
- package/docs/readmes/features/workflows/run-audit.md +191 -0
- package/docs/readmes/features/workflows/spec-challenge.md +159 -0
- package/docs/readmes/features/workflows/specify.md +160 -0
- package/docs/readmes/features/workflows/verify.md +177 -0
- package/docs/readmes/packages/README.md +50 -0
- package/docs/readmes/packages/ajv.md +117 -0
- package/docs/readmes/packages/context-mode.md +118 -0
- package/docs/readmes/packages/gray-matter.md +116 -0
- package/docs/readmes/packages/node-test.md +137 -0
- package/docs/readmes/packages/yaml.md +112 -0
- package/docs/reference/configuration-reference.md +159 -0
- package/docs/reference/expertise-index.md +52 -0
- package/docs/reference/git-flow.md +43 -0
- package/docs/reference/hooks.md +87 -0
- package/docs/reference/host-exports.md +50 -0
- package/docs/reference/launch-checklist.md +172 -0
- package/docs/reference/marketplace-listings.md +76 -0
- package/docs/reference/release-process.md +34 -0
- package/docs/reference/roles-reference.md +77 -0
- package/docs/reference/skills.md +33 -0
- package/docs/reference/templates.md +29 -0
- package/docs/reference/tooling-cli.md +94 -0
- package/docs/truth-claims.yaml +222 -0
- package/expertise/PROGRESS.md +63 -0
- package/expertise/README.md +18 -0
- package/expertise/antipatterns/PROGRESS.md +56 -0
- package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
- package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
- package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
- package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
- package/expertise/antipatterns/backend/index.md +24 -0
- package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
- package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
- package/expertise/antipatterns/code/async-antipatterns.md +622 -0
- package/expertise/antipatterns/code/code-smells.md +1186 -0
- package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
- package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
- package/expertise/antipatterns/code/index.md +27 -0
- package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
- package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
- package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
- package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
- package/expertise/antipatterns/design/dark-patterns.md +1121 -0
- package/expertise/antipatterns/design/index.md +22 -0
- package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
- package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
- package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
- package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
- package/expertise/antipatterns/frontend/index.md +23 -0
- package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
- package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
- package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
- package/expertise/antipatterns/index.md +31 -0
- package/expertise/antipatterns/performance/index.md +20 -0
- package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
- package/expertise/antipatterns/performance/premature-optimization.md +623 -0
- package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
- package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
- package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
- package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
- package/expertise/antipatterns/process/index.md +23 -0
- package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
- package/expertise/antipatterns/security/index.md +20 -0
- package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
- package/expertise/antipatterns/security/security-theater.md +843 -0
- package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
- package/expertise/architecture/PROGRESS.md +70 -0
- package/expertise/architecture/data/caching-architecture.md +671 -0
- package/expertise/architecture/data/data-consistency.md +574 -0
- package/expertise/architecture/data/data-modeling.md +536 -0
- package/expertise/architecture/data/event-streams-and-queues.md +634 -0
- package/expertise/architecture/data/index.md +25 -0
- package/expertise/architecture/data/search-architecture.md +663 -0
- package/expertise/architecture/data/sql-vs-nosql.md +708 -0
- package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
- package/expertise/architecture/decisions/build-vs-buy.md +616 -0
- package/expertise/architecture/decisions/index.md +23 -0
- package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
- package/expertise/architecture/decisions/technology-selection.md +616 -0
- package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
- package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
- package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
- package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
- package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
- package/expertise/architecture/distributed/index.md +25 -0
- package/expertise/architecture/distributed/saga-pattern.md +797 -0
- package/expertise/architecture/foundations/architectural-thinking.md +460 -0
- package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
- package/expertise/architecture/foundations/design-principles-solid.md +649 -0
- package/expertise/architecture/foundations/domain-driven-design.md +719 -0
- package/expertise/architecture/foundations/index.md +25 -0
- package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
- package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
- package/expertise/architecture/index.md +34 -0
- package/expertise/architecture/integration/api-design-graphql.md +638 -0
- package/expertise/architecture/integration/api-design-grpc.md +804 -0
- package/expertise/architecture/integration/api-design-rest.md +892 -0
- package/expertise/architecture/integration/index.md +25 -0
- package/expertise/architecture/integration/third-party-integration.md +795 -0
- package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
- package/expertise/architecture/integration/websockets-realtime.md +791 -0
- package/expertise/architecture/mobile-architecture/index.md +22 -0
- package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
- package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
- package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
- package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
- package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
- package/expertise/architecture/patterns/event-driven.md +797 -0
- package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
- package/expertise/architecture/patterns/index.md +27 -0
- package/expertise/architecture/patterns/layered-architecture.md +736 -0
- package/expertise/architecture/patterns/microservices.md +753 -0
- package/expertise/architecture/patterns/modular-monolith.md +692 -0
- package/expertise/architecture/patterns/monolith.md +626 -0
- package/expertise/architecture/patterns/plugin-architecture.md +735 -0
- package/expertise/architecture/patterns/serverless.md +780 -0
- package/expertise/architecture/scaling/database-scaling.md +615 -0
- package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
- package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
- package/expertise/architecture/scaling/index.md +24 -0
- package/expertise/architecture/scaling/multi-tenancy.md +800 -0
- package/expertise/architecture/scaling/stateless-design.md +787 -0
- package/expertise/backend/embedded-firmware.md +625 -0
- package/expertise/backend/go.md +853 -0
- package/expertise/backend/index.md +24 -0
- package/expertise/backend/java-spring.md +448 -0
- package/expertise/backend/node-typescript.md +625 -0
- package/expertise/backend/python-fastapi.md +724 -0
- package/expertise/backend/rust.md +458 -0
- package/expertise/backend/solidity.md +711 -0
- package/expertise/composition-map.yaml +443 -0
- package/expertise/content/foundations/content-modeling.md +395 -0
- package/expertise/content/foundations/editorial-standards.md +449 -0
- package/expertise/content/foundations/index.md +24 -0
- package/expertise/content/foundations/microcopy.md +455 -0
- package/expertise/content/foundations/terminology-governance.md +509 -0
- package/expertise/content/index.md +34 -0
- package/expertise/content/patterns/accessibility-copy.md +518 -0
- package/expertise/content/patterns/index.md +24 -0
- package/expertise/content/patterns/notification-content.md +433 -0
- package/expertise/content/patterns/sample-content.md +486 -0
- package/expertise/content/patterns/state-copy.md +439 -0
- package/expertise/design/PROGRESS.md +58 -0
- package/expertise/design/disciplines/dark-mode-theming.md +577 -0
- package/expertise/design/disciplines/design-systems.md +595 -0
- package/expertise/design/disciplines/index.md +25 -0
- package/expertise/design/disciplines/information-architecture.md +800 -0
- package/expertise/design/disciplines/interaction-design.md +788 -0
- package/expertise/design/disciplines/responsive-design.md +552 -0
- package/expertise/design/disciplines/usability-testing.md +516 -0
- package/expertise/design/disciplines/user-research.md +792 -0
- package/expertise/design/foundations/accessibility-design.md +796 -0
- package/expertise/design/foundations/color-theory.md +797 -0
- package/expertise/design/foundations/iconography.md +795 -0
- package/expertise/design/foundations/index.md +26 -0
- package/expertise/design/foundations/motion-and-animation.md +653 -0
- package/expertise/design/foundations/rtl-design.md +585 -0
- package/expertise/design/foundations/spacing-and-layout.md +607 -0
- package/expertise/design/foundations/typography.md +800 -0
- package/expertise/design/foundations/visual-hierarchy.md +761 -0
- package/expertise/design/index.md +32 -0
- package/expertise/design/patterns/authentication-flows.md +474 -0
- package/expertise/design/patterns/content-consumption.md +789 -0
- package/expertise/design/patterns/data-display.md +618 -0
- package/expertise/design/patterns/e-commerce.md +1494 -0
- package/expertise/design/patterns/feedback-and-states.md +642 -0
- package/expertise/design/patterns/forms-and-input.md +819 -0
- package/expertise/design/patterns/gamification.md +801 -0
- package/expertise/design/patterns/index.md +31 -0
- package/expertise/design/patterns/microinteractions.md +449 -0
- package/expertise/design/patterns/navigation.md +800 -0
- package/expertise/design/patterns/notifications.md +705 -0
- package/expertise/design/patterns/onboarding.md +700 -0
- package/expertise/design/patterns/search-and-filter.md +601 -0
- package/expertise/design/patterns/settings-and-preferences.md +768 -0
- package/expertise/design/patterns/social-and-community.md +748 -0
- package/expertise/design/platforms/desktop-native.md +612 -0
- package/expertise/design/platforms/index.md +25 -0
- package/expertise/design/platforms/mobile-android.md +825 -0
- package/expertise/design/platforms/mobile-cross-platform.md +983 -0
- package/expertise/design/platforms/mobile-ios.md +699 -0
- package/expertise/design/platforms/tablet.md +794 -0
- package/expertise/design/platforms/web-dashboard.md +790 -0
- package/expertise/design/platforms/web-responsive.md +550 -0
- package/expertise/design/psychology/behavioral-nudges.md +449 -0
- package/expertise/design/psychology/cognitive-load.md +1191 -0
- package/expertise/design/psychology/error-psychology.md +778 -0
- package/expertise/design/psychology/index.md +22 -0
- package/expertise/design/psychology/persuasive-design.md +736 -0
- package/expertise/design/psychology/user-mental-models.md +623 -0
- package/expertise/design/tooling/open-pencil.md +266 -0
- package/expertise/frontend/angular.md +1073 -0
- package/expertise/frontend/desktop-electron.md +546 -0
- package/expertise/frontend/flutter.md +782 -0
- package/expertise/frontend/index.md +27 -0
- package/expertise/frontend/native-android.md +409 -0
- package/expertise/frontend/native-ios.md +490 -0
- package/expertise/frontend/react-native.md +1160 -0
- package/expertise/frontend/react.md +808 -0
- package/expertise/frontend/vue.md +1089 -0
- package/expertise/humanize/domain-rules-code.md +79 -0
- package/expertise/humanize/domain-rules-content.md +67 -0
- package/expertise/humanize/domain-rules-technical-docs.md +56 -0
- package/expertise/humanize/index.md +35 -0
- package/expertise/humanize/self-audit-checklist.md +87 -0
- package/expertise/humanize/sentence-patterns.md +218 -0
- package/expertise/humanize/vocabulary-blacklist.md +105 -0
- package/expertise/i18n/PROGRESS.md +65 -0
- package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
- package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
- package/expertise/i18n/advanced/complex-scripts.md +30 -0
- package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
- package/expertise/i18n/advanced/testing-i18n.md +28 -0
- package/expertise/i18n/content/content-adaptation.md +23 -0
- package/expertise/i18n/content/locale-specific-formatting.md +23 -0
- package/expertise/i18n/content/machine-translation-integration.md +28 -0
- package/expertise/i18n/content/translation-management.md +29 -0
- package/expertise/i18n/foundations/date-time-calendars.md +67 -0
- package/expertise/i18n/foundations/i18n-architecture.md +272 -0
- package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
- package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
- package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
- package/expertise/i18n/foundations/string-externalization.md +236 -0
- package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
- package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
- package/expertise/i18n/index.md +38 -0
- package/expertise/i18n/platform/backend-i18n.md +31 -0
- package/expertise/i18n/platform/flutter-i18n.md +148 -0
- package/expertise/i18n/platform/native-android-i18n.md +36 -0
- package/expertise/i18n/platform/native-ios-i18n.md +36 -0
- package/expertise/i18n/platform/react-i18n.md +103 -0
- package/expertise/i18n/platform/web-css-i18n.md +81 -0
- package/expertise/i18n/rtl/arabic-specific.md +175 -0
- package/expertise/i18n/rtl/hebrew-specific.md +149 -0
- package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
- package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
- package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
- package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
- package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
- package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
- package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
- package/expertise/i18n/rtl/rtl-typography.md +160 -0
- package/expertise/index.md +113 -0
- package/expertise/index.yaml +216 -0
- package/expertise/infrastructure/cloud-aws.md +597 -0
- package/expertise/infrastructure/cloud-gcp.md +599 -0
- package/expertise/infrastructure/cybersecurity.md +816 -0
- package/expertise/infrastructure/database-mongodb.md +447 -0
- package/expertise/infrastructure/database-postgres.md +400 -0
- package/expertise/infrastructure/devops-cicd.md +787 -0
- package/expertise/infrastructure/index.md +27 -0
- package/expertise/performance/PROGRESS.md +50 -0
- package/expertise/performance/backend/api-latency.md +1204 -0
- package/expertise/performance/backend/background-jobs.md +506 -0
- package/expertise/performance/backend/connection-pooling.md +1209 -0
- package/expertise/performance/backend/database-query-optimization.md +515 -0
- package/expertise/performance/backend/index.md +23 -0
- package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
- package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
- package/expertise/performance/foundations/caching-strategies.md +489 -0
- package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
- package/expertise/performance/foundations/index.md +24 -0
- package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
- package/expertise/performance/foundations/memory-management.md +964 -0
- package/expertise/performance/foundations/performance-budgets.md +1314 -0
- package/expertise/performance/index.md +31 -0
- package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
- package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
- package/expertise/performance/infrastructure/index.md +22 -0
- package/expertise/performance/infrastructure/load-balancing.md +1081 -0
- package/expertise/performance/infrastructure/observability.md +1079 -0
- package/expertise/performance/mobile/index.md +23 -0
- package/expertise/performance/mobile/mobile-animations.md +544 -0
- package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
- package/expertise/performance/mobile/mobile-network.md +452 -0
- package/expertise/performance/mobile/mobile-rendering.md +599 -0
- package/expertise/performance/mobile/mobile-startup-time.md +505 -0
- package/expertise/performance/platform-specific/flutter-performance.md +647 -0
- package/expertise/performance/platform-specific/index.md +22 -0
- package/expertise/performance/platform-specific/node-performance.md +1307 -0
- package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
- package/expertise/performance/platform-specific/react-performance.md +1403 -0
- package/expertise/performance/web/bundle-optimization.md +1239 -0
- package/expertise/performance/web/image-and-media.md +636 -0
- package/expertise/performance/web/index.md +24 -0
- package/expertise/performance/web/network-optimization.md +1133 -0
- package/expertise/performance/web/rendering-performance.md +1098 -0
- package/expertise/performance/web/ssr-and-hydration.md +918 -0
- package/expertise/performance/web/web-vitals.md +1374 -0
- package/expertise/quality/accessibility.md +985 -0
- package/expertise/quality/evidence-based-verification.md +499 -0
- package/expertise/quality/index.md +24 -0
- package/expertise/quality/ml-model-audit.md +614 -0
- package/expertise/quality/performance.md +600 -0
- package/expertise/quality/testing-api.md +891 -0
- package/expertise/quality/testing-mobile.md +496 -0
- package/expertise/quality/testing-web.md +849 -0
- package/expertise/security/PROGRESS.md +54 -0
- package/expertise/security/agentic-identity.md +540 -0
- package/expertise/security/compliance-frameworks.md +601 -0
- package/expertise/security/data/data-encryption.md +364 -0
- package/expertise/security/data/data-privacy-gdpr.md +692 -0
- package/expertise/security/data/database-security.md +1171 -0
- package/expertise/security/data/index.md +22 -0
- package/expertise/security/data/pii-handling.md +531 -0
- package/expertise/security/foundations/authentication.md +1041 -0
- package/expertise/security/foundations/authorization.md +603 -0
- package/expertise/security/foundations/cryptography.md +1001 -0
- package/expertise/security/foundations/index.md +25 -0
- package/expertise/security/foundations/owasp-top-10.md +1354 -0
- package/expertise/security/foundations/secrets-management.md +1217 -0
- package/expertise/security/foundations/secure-sdlc.md +700 -0
- package/expertise/security/foundations/supply-chain-security.md +698 -0
- package/expertise/security/index.md +31 -0
- package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
- package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
- package/expertise/security/infrastructure/container-security.md +721 -0
- package/expertise/security/infrastructure/incident-response.md +1295 -0
- package/expertise/security/infrastructure/index.md +24 -0
- package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
- package/expertise/security/infrastructure/network-security.md +1337 -0
- package/expertise/security/mobile/index.md +23 -0
- package/expertise/security/mobile/mobile-android-security.md +1218 -0
- package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
- package/expertise/security/mobile/mobile-data-storage.md +1265 -0
- package/expertise/security/mobile/mobile-ios-security.md +1401 -0
- package/expertise/security/mobile/mobile-network-security.md +1520 -0
- package/expertise/security/smart-contract-security.md +594 -0
- package/expertise/security/testing/index.md +22 -0
- package/expertise/security/testing/penetration-testing.md +1258 -0
- package/expertise/security/testing/security-code-review.md +1765 -0
- package/expertise/security/testing/threat-modeling.md +1074 -0
- package/expertise/security/testing/vulnerability-scanning.md +1062 -0
- package/expertise/security/web/api-security.md +586 -0
- package/expertise/security/web/cors-and-headers.md +433 -0
- package/expertise/security/web/csrf.md +562 -0
- package/expertise/security/web/file-upload.md +1477 -0
- package/expertise/security/web/index.md +25 -0
- package/expertise/security/web/injection.md +1375 -0
- package/expertise/security/web/session-management.md +1101 -0
- package/expertise/security/web/xss.md +1158 -0
- package/exports/README.md +17 -0
- package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
- package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
- package/exports/hosts/claude/.claude/agents/designer.md +55 -0
- package/exports/hosts/claude/.claude/agents/executor.md +55 -0
- package/exports/hosts/claude/.claude/agents/learner.md +51 -0
- package/exports/hosts/claude/.claude/agents/planner.md +53 -0
- package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
- package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
- package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
- package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
- package/exports/hosts/claude/.claude/commands/author.md +42 -0
- package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
- package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
- package/exports/hosts/claude/.claude/commands/design.md +44 -0
- package/exports/hosts/claude/.claude/commands/discover.md +37 -0
- package/exports/hosts/claude/.claude/commands/execute.md +48 -0
- package/exports/hosts/claude/.claude/commands/learn.md +38 -0
- package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
- package/exports/hosts/claude/.claude/commands/plan.md +39 -0
- package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
- package/exports/hosts/claude/.claude/commands/review.md +40 -0
- package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
- package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
- package/exports/hosts/claude/.claude/commands/specify.md +38 -0
- package/exports/hosts/claude/.claude/commands/verify.md +37 -0
- package/exports/hosts/claude/.claude/settings.json +34 -0
- package/exports/hosts/claude/CLAUDE.md +19 -0
- package/exports/hosts/claude/export.manifest.json +38 -0
- package/exports/hosts/claude/host-package.json +67 -0
- package/exports/hosts/codex/AGENTS.md +19 -0
- package/exports/hosts/codex/export.manifest.json +38 -0
- package/exports/hosts/codex/host-package.json +41 -0
- package/exports/hosts/cursor/.cursor/hooks.json +16 -0
- package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
- package/exports/hosts/cursor/export.manifest.json +38 -0
- package/exports/hosts/cursor/host-package.json +42 -0
- package/exports/hosts/gemini/GEMINI.md +19 -0
- package/exports/hosts/gemini/export.manifest.json +38 -0
- package/exports/hosts/gemini/host-package.json +41 -0
- package/hooks/README.md +18 -0
- package/hooks/definitions/loop_cap_guard.yaml +21 -0
- package/hooks/definitions/post_tool_capture.yaml +24 -0
- package/hooks/definitions/pre_compact_summary.yaml +19 -0
- package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
- package/hooks/definitions/protected_path_write_guard.yaml +19 -0
- package/hooks/definitions/session_start.yaml +19 -0
- package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
- package/hooks/loop-cap-guard +17 -0
- package/hooks/post-tool-lint +36 -0
- package/hooks/protected-path-write-guard +17 -0
- package/hooks/session-start +41 -0
- package/llms-full.txt +2355 -0
- package/llms.txt +43 -0
- package/package.json +79 -0
- package/roles/README.md +20 -0
- package/roles/clarifier.md +42 -0
- package/roles/content-author.md +63 -0
- package/roles/designer.md +55 -0
- package/roles/executor.md +55 -0
- package/roles/learner.md +51 -0
- package/roles/planner.md +53 -0
- package/roles/researcher.md +43 -0
- package/roles/reviewer.md +54 -0
- package/roles/specifier.md +47 -0
- package/roles/verifier.md +71 -0
- package/schemas/README.md +24 -0
- package/schemas/accepted-learning.schema.json +20 -0
- package/schemas/author-artifact.schema.json +156 -0
- package/schemas/clarification.schema.json +19 -0
- package/schemas/design-artifact.schema.json +80 -0
- package/schemas/docs-claim.schema.json +18 -0
- package/schemas/export-manifest.schema.json +20 -0
- package/schemas/hook.schema.json +67 -0
- package/schemas/host-export-package.schema.json +18 -0
- package/schemas/implementation-plan.schema.json +19 -0
- package/schemas/proposed-learning.schema.json +19 -0
- package/schemas/research.schema.json +18 -0
- package/schemas/review.schema.json +29 -0
- package/schemas/run-manifest.schema.json +18 -0
- package/schemas/spec-challenge.schema.json +18 -0
- package/schemas/spec.schema.json +20 -0
- package/schemas/usage.schema.json +102 -0
- package/schemas/verification-proof.schema.json +29 -0
- package/schemas/wazir-manifest.schema.json +173 -0
- package/skills/README.md +40 -0
- package/skills/brainstorming/SKILL.md +77 -0
- package/skills/debugging/SKILL.md +50 -0
- package/skills/design/SKILL.md +61 -0
- package/skills/dispatching-parallel-agents/SKILL.md +128 -0
- package/skills/executing-plans/SKILL.md +70 -0
- package/skills/finishing-a-development-branch/SKILL.md +169 -0
- package/skills/humanize/SKILL.md +123 -0
- package/skills/init-pipeline/SKILL.md +124 -0
- package/skills/prepare-next/SKILL.md +20 -0
- package/skills/receiving-code-review/SKILL.md +123 -0
- package/skills/requesting-code-review/SKILL.md +105 -0
- package/skills/requesting-code-review/code-reviewer.md +108 -0
- package/skills/run-audit/SKILL.md +197 -0
- package/skills/scan-project/SKILL.md +41 -0
- package/skills/self-audit/SKILL.md +153 -0
- package/skills/subagent-driven-development/SKILL.md +154 -0
- package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
- package/skills/subagent-driven-development/implementer-prompt.md +102 -0
- package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/skills/tdd/SKILL.md +23 -0
- package/skills/using-git-worktrees/SKILL.md +163 -0
- package/skills/using-skills/SKILL.md +95 -0
- package/skills/verification/SKILL.md +22 -0
- package/skills/wazir/SKILL.md +463 -0
- package/skills/writing-plans/SKILL.md +30 -0
- package/skills/writing-skills/SKILL.md +157 -0
- package/skills/writing-skills/anthropic-best-practices.md +122 -0
- package/skills/writing-skills/persuasion-principles.md +50 -0
- package/templates/README.md +20 -0
- package/templates/artifacts/README.md +10 -0
- package/templates/artifacts/accepted-learning.md +19 -0
- package/templates/artifacts/accepted-learning.template.json +12 -0
- package/templates/artifacts/author.md +74 -0
- package/templates/artifacts/author.template.json +19 -0
- package/templates/artifacts/clarification.md +21 -0
- package/templates/artifacts/clarification.template.json +12 -0
- package/templates/artifacts/execute-notes.md +19 -0
- package/templates/artifacts/implementation-plan.md +21 -0
- package/templates/artifacts/implementation-plan.template.json +11 -0
- package/templates/artifacts/learning-proposal.md +19 -0
- package/templates/artifacts/next-run-handoff.md +21 -0
- package/templates/artifacts/plan-review.md +19 -0
- package/templates/artifacts/proposed-learning.template.json +12 -0
- package/templates/artifacts/research.md +21 -0
- package/templates/artifacts/research.template.json +12 -0
- package/templates/artifacts/review-findings.md +19 -0
- package/templates/artifacts/review.template.json +11 -0
- package/templates/artifacts/run-manifest.template.json +8 -0
- package/templates/artifacts/spec-challenge.md +19 -0
- package/templates/artifacts/spec-challenge.template.json +11 -0
- package/templates/artifacts/spec.md +21 -0
- package/templates/artifacts/spec.template.json +12 -0
- package/templates/artifacts/verification-proof.md +19 -0
- package/templates/artifacts/verification-proof.template.json +11 -0
- package/templates/examples/accepted-learning.example.json +14 -0
- package/templates/examples/author.example.json +152 -0
- package/templates/examples/clarification.example.json +15 -0
- package/templates/examples/docs-claim.example.json +8 -0
- package/templates/examples/export-manifest.example.json +7 -0
- package/templates/examples/host-export-package.example.json +11 -0
- package/templates/examples/implementation-plan.example.json +17 -0
- package/templates/examples/proposed-learning.example.json +13 -0
- package/templates/examples/research.example.json +15 -0
- package/templates/examples/research.example.md +6 -0
- package/templates/examples/review.example.json +17 -0
- package/templates/examples/run-manifest.example.json +9 -0
- package/templates/examples/spec-challenge.example.json +14 -0
- package/templates/examples/spec.example.json +21 -0
- package/templates/examples/verification-proof.example.json +21 -0
- package/templates/examples/wazir-manifest.example.yaml +65 -0
- package/templates/task-definition-schema.md +99 -0
- package/tooling/README.md +20 -0
- package/tooling/src/adapters/context-mode.js +50 -0
- package/tooling/src/capture/command.js +376 -0
- package/tooling/src/capture/store.js +99 -0
- package/tooling/src/capture/usage.js +270 -0
- package/tooling/src/checks/branches.js +50 -0
- package/tooling/src/checks/brand-truth.js +110 -0
- package/tooling/src/checks/changelog.js +231 -0
- package/tooling/src/checks/command-registry.js +36 -0
- package/tooling/src/checks/commits.js +102 -0
- package/tooling/src/checks/docs-drift.js +103 -0
- package/tooling/src/checks/docs-truth.js +201 -0
- package/tooling/src/checks/runtime-surface.js +156 -0
- package/tooling/src/cli.js +116 -0
- package/tooling/src/command-options.js +56 -0
- package/tooling/src/commands/validate.js +320 -0
- package/tooling/src/doctor/command.js +91 -0
- package/tooling/src/export/command.js +77 -0
- package/tooling/src/export/compiler.js +498 -0
- package/tooling/src/guards/loop-cap-guard.js +52 -0
- package/tooling/src/guards/protected-path-write-guard.js +67 -0
- package/tooling/src/index/command.js +152 -0
- package/tooling/src/index/storage.js +1061 -0
- package/tooling/src/index/summarizers.js +261 -0
- package/tooling/src/loaders.js +18 -0
- package/tooling/src/project-root.js +22 -0
- package/tooling/src/recall/command.js +225 -0
- package/tooling/src/schema-validator.js +30 -0
- package/tooling/src/state-root.js +40 -0
- package/tooling/src/status/command.js +71 -0
- package/wazir.manifest.yaml +135 -0
- package/workflows/README.md +19 -0
- package/workflows/author.md +42 -0
- package/workflows/clarify.md +38 -0
- package/workflows/design-review.md +46 -0
- package/workflows/design.md +44 -0
- package/workflows/discover.md +37 -0
- package/workflows/execute.md +48 -0
- package/workflows/learn.md +38 -0
- package/workflows/plan-review.md +42 -0
- package/workflows/plan.md +39 -0
- package/workflows/prepare-next.md +37 -0
- package/workflows/review.md +40 -0
- package/workflows/run-audit.md +41 -0
- package/workflows/spec-challenge.md +41 -0
- package/workflows/specify.md +38 -0
- 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/)
|