@jmruthers/pace-core 0.6.6 → 0.6.7
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/{scripts/audit/audit-dependencies.cjs → audit-tool/00-dependencies.cjs} +12 -13
- package/audit-tool/audits/01-pace-core-compliance.cjs +556 -0
- package/audit-tool/audits/02-project-structure.cjs +255 -0
- package/audit-tool/audits/03-architecture.cjs +196 -0
- package/audit-tool/audits/04-code-quality.cjs +149 -0
- package/audit-tool/audits/05-styling.cjs +224 -0
- package/audit-tool/audits/06-security-rbac.cjs +544 -0
- package/audit-tool/audits/07-api-tech-stack.cjs +301 -0
- package/audit-tool/audits/08-testing-documentation.cjs +202 -0
- package/audit-tool/audits/09-operations.cjs +208 -0
- package/audit-tool/index.cjs +291 -0
- package/audit-tool/utils/code-utils.cjs +218 -0
- package/audit-tool/utils/file-utils.cjs +230 -0
- package/audit-tool/utils/report-utils.cjs +241 -0
- package/cursor-rules/00-standards-overview.mdc +156 -0
- package/cursor-rules/{00-pace-core-compliance.mdc → 01-pace-core-compliance.mdc} +187 -34
- package/cursor-rules/02-project-structure.mdc +37 -5
- package/cursor-rules/{03-solid-principles.mdc → 03-architecture.mdc} +125 -11
- package/cursor-rules/04-code-quality.mdc +419 -0
- package/cursor-rules/{08-markup-quality.mdc → 05-styling.mdc} +55 -10
- package/cursor-rules/{09-rbac-compliance.mdc → 06-security-rbac.mdc} +62 -6
- package/cursor-rules/07-api-tech-stack.mdc +377 -0
- package/cursor-rules/08-testing-documentation.mdc +324 -0
- package/cursor-rules/09-operations.mdc +365 -0
- package/dist/DataTable-7PMH7XN7.js +15 -0
- package/dist/{DataTable-2N_tqbfq.d.ts → DataTable-DRUIgtUH.d.ts} +1 -1
- package/dist/{PublicPageProvider-BBH6Vqg7.d.ts → PublicPageProvider-DlsCaR5v.d.ts} +26 -16
- package/dist/{chunk-FENMYN2U.js → chunk-5X4QLXRG.js} +1 -3
- package/dist/{chunk-4T7OBVTU.js → chunk-6F3IILHI.js} +1 -1
- package/dist/{chunk-SD6WQY43.js → chunk-7ILTDCL2.js} +9 -1
- package/dist/{chunk-3QC3KRHK.js → chunk-A3W6LW53.js} +16 -1
- package/dist/{chunk-7TYHROIV.js → chunk-BM4CQ5P3.js} +50 -8
- package/dist/{chunk-2HGJFNAH.js → chunk-FEJLJNWA.js} +1 -15
- package/dist/{chunk-OHIK3MIO.js → chunk-GHYHJTYV.js} +2 -2
- package/dist/{chunk-UIYSCEV7.js → chunk-IUBRCBSY.js} +1 -1
- package/dist/{chunk-LAZMKTTF.js → chunk-JGWDVX64.js} +281 -347
- package/dist/{chunk-MAGBIDNS.js → chunk-L4XMVJKY.js} +2 -2
- package/dist/{chunk-A55DK444.js → chunk-OJ4SKRSV.js} +1 -7
- package/dist/{chunk-ZS5VO5JB.js → chunk-Q7Q7V5NV.js} +406 -451
- package/dist/{chunk-3O3WHILE.js → chunk-VBCS3DUA.js} +236 -60
- package/dist/{chunk-BVP2BCJF.js → chunk-ZKAWKYT4.js} +8 -8
- package/dist/components.d.ts +5 -4
- package/dist/components.js +27 -32
- package/dist/eslint-rules/index.cjs +22 -9
- package/{src/eslint-rules/rules/compliance.cjs → dist/eslint-rules/rules/01-pace-core-compliance.cjs} +184 -23
- package/dist/eslint-rules/rules/04-code-quality.cjs +290 -0
- package/dist/eslint-rules/rules/05-styling.cjs +61 -0
- package/dist/eslint-rules/rules/{rbac.cjs → 06-security-rbac.cjs} +26 -10
- package/dist/eslint-rules/rules/07-api-tech-stack.cjs +263 -0
- package/dist/eslint-rules/rules/08-testing.cjs +94 -0
- package/dist/hooks.d.ts +5 -5
- package/dist/hooks.js +6 -6
- package/dist/index.d.ts +6 -6
- package/dist/index.js +18 -17
- package/dist/rbac/index.js +6 -6
- package/dist/theming/runtime.d.ts +14 -1
- package/dist/theming/runtime.js +1 -1
- package/dist/{types-B-K_5VnO.d.ts → types-DXstZpNI.d.ts} +0 -17
- package/dist/{usePublicRouteParams-COZ28Mvq.d.ts → usePublicRouteParams-MamNgwqe.d.ts} +19 -19
- package/dist/utils.d.ts +2 -2
- package/dist/utils.js +8 -8
- package/docs/README.md +1 -1
- package/docs/api/modules.md +47 -31
- package/docs/api-reference/components.md +18 -20
- package/docs/api-reference/hooks.md +80 -80
- package/docs/api-reference/types.md +1 -1
- package/docs/api-reference/utilities.md +1 -1
- package/docs/architecture/README.md +1 -1
- package/docs/core-concepts/events.md +3 -3
- package/docs/core-concepts/organisations.md +6 -6
- package/docs/core-concepts/permissions.md +6 -6
- package/docs/documentation-index.md +12 -18
- package/docs/getting-started/documentation-index.md +1 -1
- package/docs/getting-started/examples/README.md +4 -4
- package/docs/getting-started/examples/full-featured-app.md +1 -1
- package/docs/getting-started/faq.md +2 -2
- package/docs/getting-started/quick-reference.md +4 -4
- package/docs/implementation-guides/authentication.md +15 -15
- package/docs/implementation-guides/component-styling.md +1 -1
- package/docs/implementation-guides/data-tables.md +126 -33
- package/docs/implementation-guides/datatable-rbac-usage.md +1 -1
- package/docs/implementation-guides/dynamic-colors.md +3 -3
- package/docs/implementation-guides/file-upload-storage.md +2 -2
- package/docs/implementation-guides/hierarchical-datatable.md +40 -60
- package/docs/implementation-guides/inactivity-tracking.md +3 -3
- package/docs/implementation-guides/large-datasets.md +3 -2
- package/docs/implementation-guides/organisation-security.md +2 -2
- package/docs/implementation-guides/performance.md +2 -2
- package/docs/implementation-guides/permission-enforcement.md +1 -1
- package/docs/migration/V0.3.44_organisation-context-timing-fix.md +1 -1
- package/docs/migration/V0.4.0_rbac-migration.md +6 -6
- package/docs/rbac/README.md +5 -5
- package/docs/rbac/advanced-patterns.md +6 -6
- package/docs/rbac/api-reference.md +20 -20
- package/docs/rbac/event-based-apps.md +3 -3
- package/docs/rbac/examples.md +41 -41
- package/docs/rbac/getting-started.md +37 -37
- package/docs/rbac/performance.md +1 -1
- package/docs/rbac/quick-start.md +52 -52
- package/docs/rbac/secure-client-protection.md +1 -1
- package/docs/rbac/troubleshooting.md +1 -1
- package/docs/security/README.md +5 -5
- package/docs/standards/0-standards-overview.md +220 -0
- package/docs/standards/{00-pace-core-compliance.md → 1-pace-core-compliance-standards.md} +204 -185
- package/docs/standards/{02-project-structure.md → 2-project-structure-standards.md} +11 -47
- package/docs/standards/3-architecture-standards.md +606 -0
- package/docs/standards/4-code-quality-standards.md +728 -0
- package/docs/standards/{08-markup-quality.md → 5-styling-standards.md} +12 -9
- package/docs/standards/{09-rbac-compliance.md → 6-security-rbac-standards.md} +126 -18
- package/docs/standards/7-api-tech-stack-standards.md +662 -0
- package/docs/standards/8-testing-documentation-standards.md +401 -0
- package/docs/standards/9-operations-standards.md +1102 -0
- package/docs/standards/README.md +203 -104
- package/docs/troubleshooting/README.md +4 -4
- package/docs/troubleshooting/common-issues.md +2 -2
- package/docs/troubleshooting/debugging.md +9 -9
- package/docs/troubleshooting/migration.md +4 -4
- package/eslint-config-pace-core.cjs +21 -10
- package/package.json +6 -5
- package/scripts/install-cursor-rules.cjs +11 -243
- package/scripts/install-eslint-config.cjs +284 -0
- package/src/__tests__/helpers/__tests__/component-test-utils.test.tsx +2 -2
- package/src/__tests__/helpers/__tests__/test-providers.test.tsx +2 -2
- package/src/__tests__/helpers/__tests__/test-utils.test.tsx +10 -10
- package/src/__tests__/integration/UserProfile.test.tsx +14 -14
- package/src/__tests__/rbac/PagePermissionGuard.test.tsx +6 -6
- package/src/__tests__/templates/accessibility.test.template.tsx +9 -9
- package/src/__tests__/templates/component.test.template.tsx +18 -15
- package/src/components/Calendar/Calendar.tsx +201 -47
- package/src/components/ContextSelector/ContextSelector.tsx +137 -153
- package/src/components/DataTable/AUDIT_REPORT.md +293 -0
- package/src/components/DataTable/__tests__/DataTableCore.test.tsx +10 -2
- package/src/components/DataTable/__tests__/a11y.basic.test.tsx +10 -4
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +9 -9
- package/src/components/DataTable/components/ColumnFilter.tsx +63 -74
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +43 -41
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +9 -11
- package/src/components/DataTable/components/DataTableLayout.tsx +5 -16
- package/src/components/DataTable/components/EditableRow.tsx +5 -7
- package/src/components/DataTable/components/EmptyState.tsx +10 -9
- package/src/components/DataTable/components/FilterRow.tsx +2 -4
- package/src/components/DataTable/components/ImportModal.tsx +124 -126
- package/src/components/DataTable/components/LoadingState.tsx +5 -6
- package/src/components/DataTable/components/SortIndicator.tsx +50 -0
- package/src/components/DataTable/components/__tests__/COVERAGE_NOTE.md +4 -4
- package/src/components/DataTable/components/__tests__/ColumnFilter.test.tsx +23 -82
- package/src/components/DataTable/components/__tests__/DataTableErrorBoundary.test.tsx +37 -9
- package/src/components/DataTable/components/__tests__/EmptyState.test.tsx +7 -4
- package/src/components/DataTable/components/__tests__/FilterRow.test.tsx +12 -4
- package/src/components/DataTable/components/__tests__/LoadingState.test.tsx +41 -27
- package/src/components/DataTable/components/index.ts +2 -1
- package/src/components/DataTable/types.ts +0 -18
- package/src/components/DataTable/utils/a11yUtils.ts +17 -0
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.test.tsx +2 -1
- package/src/components/DatePickerWithTimezone/DatePickerWithTimezone.tsx +11 -15
- package/src/components/DateTimeField/DateTimeField.tsx +7 -8
- package/src/components/Dialog/Dialog.test.tsx +1 -0
- package/src/components/Dialog/Dialog.tsx +25 -8
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +77 -79
- package/src/components/FileUpload/FileUpload.test.tsx +52 -14
- package/src/components/FileUpload/FileUpload.tsx +112 -130
- package/src/components/Progress/Progress.tsx +2 -4
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +8 -8
- package/src/components/Select/Select.tsx +86 -77
- package/src/components/Select/types.ts +3 -0
- package/src/hooks/__tests__/ServiceHooks.test.tsx +16 -16
- package/src/hooks/__tests__/hooks.integration.test.tsx +49 -49
- package/src/hooks/__tests__/useFocusTrap.unit.test.tsx +97 -97
- package/src/hooks/public/usePublicEvent.ts +5 -5
- package/src/hooks/public/usePublicEventLogo.ts +5 -5
- package/src/hooks/public/usePublicFileDisplay.ts +2 -2
- package/src/hooks/public/usePublicRouteParams.ts +5 -5
- package/src/hooks/useAppConfig.ts +2 -2
- package/src/hooks/useEventTheme.test.ts +7 -7
- package/src/hooks/useEventTheme.ts +1 -4
- package/src/hooks/useFileDisplay.ts +2 -2
- package/src/providers/UnifiedAuthProvider.smoke.test.tsx +21 -21
- package/src/providers/__tests__/AuthProvider.test.tsx +21 -21
- package/src/providers/__tests__/EventProvider.test.tsx +61 -61
- package/src/providers/__tests__/InactivityProvider.test.tsx +56 -56
- package/src/providers/__tests__/OrganisationProvider.test.tsx +75 -75
- package/src/providers/__tests__/ProviderLifecycle.test.tsx +37 -37
- package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +103 -103
- package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +7 -7
- package/src/providers/services/__tests__/UnifiedAuthProvider.integration.test.tsx +10 -10
- package/src/styles/core.css +7 -0
- package/src/theming/__tests__/parseEventColours.test.ts +9 -3
- package/src/theming/parseEventColours.ts +22 -10
- package/src/utils/__tests__/lazyLoad.unit.test.tsx +42 -39
- package/src/utils/storage/README.md +1 -1
- package/cursor-rules/01-standards-compliance.mdc +0 -285
- package/cursor-rules/04-testing-standards.mdc +0 -270
- package/cursor-rules/05-bug-reports-and-features.mdc +0 -248
- package/cursor-rules/06-code-quality.mdc +0 -311
- package/cursor-rules/07-tech-stack-compliance.mdc +0 -216
- package/cursor-rules/10-error-handling-patterns.mdc +0 -179
- package/cursor-rules/11-performance-optimization.mdc +0 -169
- package/cursor-rules/12-ci-cd-integration.mdc +0 -150
- package/dist/DataTable-LRJL4IRV.js +0 -15
- package/dist/eslint-rules/rules/compliance.cjs +0 -348
- package/dist/eslint-rules/rules/components.cjs +0 -113
- package/dist/eslint-rules/rules/imports.cjs +0 -102
- package/docs/best-practices/README.md +0 -472
- package/docs/best-practices/accessibility.md +0 -604
- package/docs/best-practices/common-patterns.md +0 -516
- package/docs/best-practices/deployment.md +0 -1103
- package/docs/best-practices/performance.md +0 -1328
- package/docs/best-practices/security.md +0 -940
- package/docs/best-practices/testing.md +0 -1034
- package/docs/rbac/compliance/compliance-guide.md +0 -544
- package/docs/standards/01-standards-compliance.md +0 -188
- package/docs/standards/03-solid-principles.md +0 -39
- package/docs/standards/04-testing-standards.md +0 -36
- package/docs/standards/05-bug-reports-and-features.md +0 -27
- package/docs/standards/06-code-quality.md +0 -34
- package/docs/standards/07-tech-stack-compliance.md +0 -30
- package/docs/standards/10-error-handling-patterns.md +0 -401
- package/docs/standards/11-performance-optimization.md +0 -348
- package/docs/standards/12-ci-cd-integration.md +0 -370
- package/docs/standards/ALIGNMENT_REVIEW_SUMMARY.md +0 -192
- package/scripts/audit/audit-compliance.cjs +0 -1295
- package/scripts/audit/audit-components.cjs +0 -260
- package/scripts/audit/audit-rbac.cjs +0 -954
- package/scripts/audit/audit-standards.cjs +0 -1268
- package/scripts/audit/index.cjs +0 -1927
- package/src/components/DataTable/components/DataTableBody.tsx +0 -478
- package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -156
- package/src/components/DataTable/components/ExpandButton.tsx +0 -113
- package/src/components/DataTable/components/GroupHeader.tsx +0 -54
- package/src/components/DataTable/components/ViewRowModal.tsx +0 -68
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -525
- package/src/components/DataTable/components/__tests__/ExpandButton.test.tsx +0 -462
- package/src/components/DataTable/components/__tests__/GroupHeader.test.tsx +0 -393
- package/src/components/DataTable/components/__tests__/ViewRowModal.test.tsx +0 -476
- package/src/components/DataTable/components/__tests__/VirtualizedDataTable.test.tsx +0 -128
- package/src/components/DataTable/core/DataTableContext.tsx +0 -216
- package/src/components/DataTable/core/__tests__/DataTableContext.test.tsx +0 -136
- package/src/components/DataTable/hooks/__tests__/useColumnReordering.test.ts +0 -570
- package/src/components/DataTable/hooks/useColumnReordering.ts +0 -123
- package/src/components/DataTable/utils/debugTools.ts +0 -514
- package/src/eslint-rules/index.cjs +0 -22
- package/src/eslint-rules/rules/components.cjs +0 -113
- package/src/eslint-rules/rules/imports.cjs +0 -102
- package/src/eslint-rules/rules/rbac.cjs +0 -790
- package/src/eslint-rules/utils/helpers.cjs +0 -42
- package/src/eslint-rules/utils/manifest-loader.cjs +0 -75
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# Standards Overview
|
|
2
|
+
|
|
3
|
+
**🤖 Cursor Rule**: See [00-standards-overview.mdc](../../cursor-rules/00-standards-overview.mdc) for AI-optimized directives that automatically enforce these standards.
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
|
|
7
|
+
This document provides an overview of the pace-core standards system, how it works, and how to use it. These standards are the **canonical development standards** for **pace-core** and **all consuming applications** in the pace-suite.
|
|
8
|
+
|
|
9
|
+
These standards are **human-readable first**, but are deliberately structured so they can be **enforced by automation**, including Cursor rules, ESLint, and custom audit tooling.
|
|
10
|
+
|
|
11
|
+
They are the **single source of truth**.
|
|
12
|
+
All other quality tools must align *to these standards*, not reinterpret them.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## How to Use These Standards
|
|
17
|
+
|
|
18
|
+
### pace-core
|
|
19
|
+
|
|
20
|
+
- Treat these standards as **hard constraints**
|
|
21
|
+
- pace-core sets the bar and defines the contracts
|
|
22
|
+
- Any deviation must be explicitly documented here
|
|
23
|
+
|
|
24
|
+
### Consuming Applications
|
|
25
|
+
|
|
26
|
+
- Inherit these standards by default
|
|
27
|
+
- Only diverge where a documented exception exists
|
|
28
|
+
- Consuming apps should never weaken standards silently
|
|
29
|
+
|
|
30
|
+
### AI Agents (Cursor, Codex, etc.)
|
|
31
|
+
|
|
32
|
+
- Follow these standards **strictly**
|
|
33
|
+
- Do **not** silence rules to "make things pass"
|
|
34
|
+
- If compliance is unclear, stop and report rather than guessing
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## The Four Layers of Quality Enforcement
|
|
39
|
+
|
|
40
|
+
The pace-suite uses **four complementary quality layers**, each with a distinct responsibility.
|
|
41
|
+
They are intentionally overlapping in *coverage*, but **not duplicative in purpose**.
|
|
42
|
+
|
|
43
|
+
Think of this as *defence in depth*, not redundancy.
|
|
44
|
+
|
|
45
|
+
### 1. Standards Documents (Source of Truth)
|
|
46
|
+
|
|
47
|
+
**What they are**
|
|
48
|
+
- Human-readable `.md` documents
|
|
49
|
+
- Describe *intent*, *principles*, and *expectations*
|
|
50
|
+
- Technology-agnostic where possible
|
|
51
|
+
|
|
52
|
+
**What they are used for**
|
|
53
|
+
- Defining *what "good" looks like*
|
|
54
|
+
- Onboarding humans and AI agents
|
|
55
|
+
- Resolving ambiguity when tools disagree
|
|
56
|
+
- Designing new rules, lint checks, and audits
|
|
57
|
+
|
|
58
|
+
**What they are NOT**
|
|
59
|
+
- They are not executable
|
|
60
|
+
- They do not enforce anything by themselves
|
|
61
|
+
- They should not contain implementation hacks
|
|
62
|
+
|
|
63
|
+
➡️ **If there is a conflict, the standards win.**
|
|
64
|
+
|
|
65
|
+
### 2. Cursor Rules (Real-time Guidance)
|
|
66
|
+
|
|
67
|
+
**What they are**
|
|
68
|
+
- AI-optimised interpretations of the standards
|
|
69
|
+
- Applied while code is being written or modified
|
|
70
|
+
- Prevent mistakes *before* they land
|
|
71
|
+
|
|
72
|
+
**What they are used for**
|
|
73
|
+
- Steering AI agents toward correct patterns
|
|
74
|
+
- Enforcing architectural intent during development
|
|
75
|
+
- Reducing rework later in linting or audits
|
|
76
|
+
|
|
77
|
+
**What they are NOT**
|
|
78
|
+
- They are not a replacement for lint or audits
|
|
79
|
+
- They should not invent new standards
|
|
80
|
+
- They should not silence problems "to move on"
|
|
81
|
+
|
|
82
|
+
➡️ Cursor rules **translate standards into behaviour**, but do not redefine them.
|
|
83
|
+
|
|
84
|
+
### 3. ESLint (Fast, Local Static Analysis)
|
|
85
|
+
|
|
86
|
+
**What it is**
|
|
87
|
+
- Deterministic, file-level static analysis
|
|
88
|
+
- Runs locally and in CI
|
|
89
|
+
- Focused on correctness, safety, and consistency
|
|
90
|
+
|
|
91
|
+
**What it is used for**
|
|
92
|
+
- Catching obvious issues early (types, hooks, imports, patterns)
|
|
93
|
+
- Enforcing mechanically checkable rules
|
|
94
|
+
- Preventing regressions during refactors
|
|
95
|
+
|
|
96
|
+
**What it is NOT**
|
|
97
|
+
- ESLint should not encode complex business rules
|
|
98
|
+
- It should not contain subjective or architectural debates
|
|
99
|
+
- It should not be silenced to "get green builds"
|
|
100
|
+
|
|
101
|
+
➡️ ESLint enforces *how code is written*, not *whether the system is correct*.
|
|
102
|
+
|
|
103
|
+
### 4. Audit Tool (Deep, System-Level Analysis)
|
|
104
|
+
|
|
105
|
+
**What it is**
|
|
106
|
+
- A custom static analysis tool
|
|
107
|
+
- Operates across files, folders, and systems
|
|
108
|
+
- Understands pace-core contracts and invariants
|
|
109
|
+
- Organized by the 10-file standards structure
|
|
110
|
+
|
|
111
|
+
**What it is used for**
|
|
112
|
+
- Validating architectural compliance (RBAC, data access, boundaries)
|
|
113
|
+
- Catching issues ESLint cannot see (cross-file analysis, configuration validation)
|
|
114
|
+
- Providing actionable remediation plans
|
|
115
|
+
- System-level checks (provider nesting, RLS policies in SQL, project structure)
|
|
116
|
+
|
|
117
|
+
**What it is NOT**
|
|
118
|
+
- It is not a linter replacement
|
|
119
|
+
- It should not report stylistic issues (handled by ESLint)
|
|
120
|
+
- It should not duplicate ESLint checks (file-level AST analysis)
|
|
121
|
+
- It should not contradict the standards
|
|
122
|
+
|
|
123
|
+
➡️ The audit tool answers: *"Is this system actually compliant?"*
|
|
124
|
+
|
|
125
|
+
**Usage**: Run `npm run audit:pace-core` in your consuming app to generate a comprehensive audit report organized by standard.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## How the Layers Work Together
|
|
130
|
+
|
|
131
|
+
| Layer | Strength | Timing |
|
|
132
|
+
|--------------|----------------------------------|-----------------|
|
|
133
|
+
| Standards | Intent & clarity | Design time |
|
|
134
|
+
| Cursor rules | Preventive guidance | Write time |
|
|
135
|
+
| ESLint | Fast mechanical enforcement | Dev / CI |
|
|
136
|
+
| Audit tool | Deep architectural verification | Review / CI |
|
|
137
|
+
|
|
138
|
+
No single layer is sufficient on its own.
|
|
139
|
+
Together, they create a **repeatable, scalable quality system** for both humans and AI.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## Precedence Order
|
|
144
|
+
|
|
145
|
+
When standards conflict, apply this precedence order:
|
|
146
|
+
|
|
147
|
+
1. **Security** - Security and RBAC standards take highest priority
|
|
148
|
+
2. **API/RPC** - API contracts and RPC standards
|
|
149
|
+
3. **Components & Markup** - Component usage and markup quality
|
|
150
|
+
4. **Code Quality/Style** - TypeScript, naming, code style
|
|
151
|
+
5. **Testing & Documentation** - Testing and documentation requirements
|
|
152
|
+
6. **Consuming App Structure** - Project structure and organization
|
|
153
|
+
|
|
154
|
+
**Example:** If a component pattern conflicts with a security requirement, security wins.
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Standards File Mapping
|
|
159
|
+
|
|
160
|
+
The standards are organized into 10 files, each covering a specific domain:
|
|
161
|
+
|
|
162
|
+
| File | Standard | Cursor Rule | Purpose |
|
|
163
|
+
|------|----------|------------|---------|
|
|
164
|
+
| `0-standards-overview.md` | Overview | `00-standards-overview.mdc` | This file - entry point and system overview |
|
|
165
|
+
| `1-pace-core-compliance-standards.md` | pace-core Compliance | `01-pace-core-compliance.mdc` | Enforce pace-core usage patterns |
|
|
166
|
+
| `2-project-structure-standards.md` | Project Structure | `02-project-structure.mdc` | Define standard folder structure |
|
|
167
|
+
| `3-architecture-standards.md` | Architecture | `03-architecture.mdc` | Enforce SOLID architecture principles |
|
|
168
|
+
| `4-code-quality-standards.md` | Code Quality | `04-code-quality.mdc` | Enforce code quality standards |
|
|
169
|
+
| `5-styling-standards.md` | Styling | `05-styling.mdc` | Enforce clean markup and styling standards |
|
|
170
|
+
| `6-security-rbac-standards.md` | Security & RBAC | `06-security-rbac.mdc` | Enforce RBAC contract and security |
|
|
171
|
+
| `7-api-tech-stack-standards.md` | API & Tech Stack | `07-api-tech-stack.mdc` | Enforce tech stack versions and API standards |
|
|
172
|
+
| `8-testing-documentation-standards.md` | Testing & Documentation | `08-testing-documentation.mdc` | Enforce testing and documentation standards |
|
|
173
|
+
| `9-operations-standards.md` | Operations | `09-operations.mdc` | Enforce error handling, performance, and CI/CD |
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Quick Reference Guide
|
|
178
|
+
|
|
179
|
+
**New to pace-core?** Start here:
|
|
180
|
+
1. Read [Standards Overview](./0-standards-overview.md) (this file) - Understand the system
|
|
181
|
+
2. Read [Styling Standards](./5-styling-standards.md) - **CRITICAL:** Required CSS setup
|
|
182
|
+
3. Read [pace-core Compliance](./1-pace-core-compliance-standards.md) - How to use pace-core
|
|
183
|
+
4. Read [Project Structure](./2-project-structure-standards.md) - Organize your code
|
|
184
|
+
|
|
185
|
+
**Common Tasks:**
|
|
186
|
+
- **Setting up a new app?** → [Project Structure](./2-project-structure-standards.md) + [Styling Standards](./5-styling-standards.md)
|
|
187
|
+
- **Writing components?** → [Architecture](./3-architecture-standards.md) + [Code Quality](./4-code-quality-standards.md)
|
|
188
|
+
- **Working with RBAC?** → [Security & RBAC](./6-security-rbac-standards.md)
|
|
189
|
+
- **Creating APIs/RPCs?** → [API & Tech Stack](./7-api-tech-stack-standards.md)
|
|
190
|
+
- **Handling errors?** → [Operations](./9-operations-standards.md)
|
|
191
|
+
- **Writing tests?** → [Testing & Documentation](./8-testing-documentation-standards.md)
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Key Principles
|
|
196
|
+
|
|
197
|
+
- **Do not silence tools** — fix the underlying issue
|
|
198
|
+
- **Do not duplicate rules** — each layer has a purpose
|
|
199
|
+
- **Do not diverge silently** — document exceptions explicitly
|
|
200
|
+
- **Standards always win** — tools must align to them
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Related Documentation
|
|
205
|
+
|
|
206
|
+
- [pace-core Compliance](./1-pace-core-compliance-standards.md) - pace-core usage patterns
|
|
207
|
+
- [Project Structure](./2-project-structure-standards.md) - Project structure and organization
|
|
208
|
+
- [Architecture](./3-architecture-standards.md) - SOLID architecture principles
|
|
209
|
+
- [Code Quality](./4-code-quality-standards.md) - Code quality and TypeScript standards
|
|
210
|
+
- [Styling](./5-styling-standards.md) - Markup and styling standards
|
|
211
|
+
- [Security & RBAC](./6-security-rbac-standards.md) - RBAC and RLS standards
|
|
212
|
+
- [API & Tech Stack](./7-api-tech-stack-standards.md) - Tech stack and API/RPC standards
|
|
213
|
+
- [Testing & Documentation](./8-testing-documentation-standards.md) - Testing and documentation standards
|
|
214
|
+
- [Operations](./9-operations-standards.md) - Error handling, performance, and CI/CD
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
**Last Updated:** 2025-01-28
|
|
219
|
+
**Version:** 2.0.0
|
|
220
|
+
**Applies to:** All pace-core and consuming apps
|