@khester/create-dynamics-app 1.1.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/README.md +74 -0
  2. package/dist/artifacts/registry.d.ts +18 -0
  3. package/dist/artifacts/registry.d.ts.map +1 -0
  4. package/dist/artifacts/registry.js +340 -0
  5. package/dist/artifacts/registry.js.map +1 -0
  6. package/dist/artifacts/types.d.ts +122 -0
  7. package/dist/artifacts/types.d.ts.map +1 -0
  8. package/dist/artifacts/types.js +7 -0
  9. package/dist/artifacts/types.js.map +1 -0
  10. package/dist/artifacts/validators.d.ts +16 -0
  11. package/dist/artifacts/validators.d.ts.map +1 -0
  12. package/dist/artifacts/validators.js +45 -0
  13. package/dist/artifacts/validators.js.map +1 -0
  14. package/dist/fromDesign.d.ts +5 -0
  15. package/dist/fromDesign.d.ts.map +1 -0
  16. package/dist/fromDesign.js +98 -0
  17. package/dist/fromDesign.js.map +1 -0
  18. package/dist/index.js +129 -177
  19. package/dist/index.js.map +1 -1
  20. package/dist/injectDevTools.d.ts +28 -0
  21. package/dist/injectDevTools.d.ts.map +1 -0
  22. package/dist/injectDevTools.js +148 -0
  23. package/dist/injectDevTools.js.map +1 -0
  24. package/dist/scaffold.d.ts +48 -0
  25. package/dist/scaffold.d.ts.map +1 -0
  26. package/dist/scaffold.js +180 -0
  27. package/dist/scaffold.js.map +1 -0
  28. package/dist/templatePlan.d.ts +3 -0
  29. package/dist/templatePlan.d.ts.map +1 -0
  30. package/dist/templatePlan.js +43 -0
  31. package/dist/templatePlan.js.map +1 -0
  32. package/dist/utils/copyTemplate.d.ts +13 -1
  33. package/dist/utils/copyTemplate.d.ts.map +1 -1
  34. package/dist/utils/copyTemplate.js +98 -4
  35. package/dist/utils/copyTemplate.js.map +1 -1
  36. package/dist/utils/updatePackageJson.d.ts +11 -1
  37. package/dist/utils/updatePackageJson.d.ts.map +1 -1
  38. package/dist/utils/updatePackageJson.js +12 -10
  39. package/dist/utils/updatePackageJson.js.map +1 -1
  40. package/package.json +10 -7
  41. package/templates/_shared/dev-tools/auth/get-token.js +72 -0
  42. package/templates/_shared/dev-tools/dev/mock-xrm.js +42 -0
  43. package/templates/_shared/dev-tools/metadata-sync/index.js +152 -0
  44. package/templates/_shared/dev-tools/smoke/test-retrieve.js +44 -0
  45. package/templates/dialog-form/README.md +27 -0
  46. package/templates/dialog-form/_variants/App.v8.tsx +39 -0
  47. package/templates/dialog-form/_variants/App.v9.tsx +41 -0
  48. package/templates/dialog-form/gitignore +5 -0
  49. package/templates/dialog-form/package.json +27 -0
  50. package/templates/dialog-form/public/index.html +11 -0
  51. package/templates/dialog-form/src/index.tsx +10 -0
  52. package/templates/dialog-form/src/services/dataverse.ts +30 -0
  53. package/templates/dialog-form/tsconfig.json +15 -0
  54. package/templates/dialog-form/webpack.config.js +17 -0
  55. package/templates/grid-customizer/README.md +28 -0
  56. package/templates/grid-customizer/gitignore +4 -0
  57. package/templates/grid-customizer/package.json +25 -0
  58. package/templates/grid-customizer/src/GridCustomizer.ts +28 -0
  59. package/templates/grid-customizer/src/cell-renderers.tsx +35 -0
  60. package/templates/grid-customizer/src/index.ts +4 -0
  61. package/templates/grid-customizer/src/types/grid-types.ts +30 -0
  62. package/templates/grid-customizer/src/utils/color-utils.ts +24 -0
  63. package/templates/grid-customizer/tsconfig.json +15 -0
  64. package/templates/grid-customizer/webpack.config.js +17 -0
  65. package/templates/pcf-dataset/ControlManifest.Input.xml +16 -0
  66. package/templates/pcf-dataset/README.md +21 -0
  67. package/templates/pcf-dataset/gitignore +5 -0
  68. package/templates/pcf-dataset/index.ts +39 -0
  69. package/templates/pcf-dataset/package.json +30 -0
  70. package/templates/pcf-dataset/strings/{{componentName}}.1033.resx +47 -0
  71. package/templates/pcf-dataset/tsconfig.json +8 -0
  72. package/templates/pcf-dataset/{{componentName}}Component.tsx +39 -0
  73. package/templates/pcf-field/ControlManifest.Input.xml +17 -0
  74. package/templates/pcf-field/README.md +95 -0
  75. package/templates/pcf-field/_variants/ValueInput.boolean.tsx +24 -0
  76. package/templates/pcf-field/_variants/ValueInput.date.tsx +27 -0
  77. package/templates/pcf-field/_variants/ValueInput.number.tsx +35 -0
  78. package/templates/pcf-field/_variants/ValueInput.text.tsx +27 -0
  79. package/templates/pcf-field/gitignore +5 -0
  80. package/templates/pcf-field/index.ts +61 -0
  81. package/templates/pcf-field/package.json +30 -0
  82. package/templates/pcf-field/strings/{{componentName}}.1033.resx +47 -0
  83. package/templates/pcf-field/tsconfig.json +8 -0
  84. package/templates/pcf-field/{{componentName}}Component.tsx +35 -0
  85. package/templates/power-pages-starter/gitignore +5 -0
  86. package/templates/react-custom-page/gitignore +5 -0
  87. package/templates/{dynamics-365-starter → react-custom-page}/package.json +3 -3
  88. package/templates/react-custom-page/tools/metadata-sync/index.js +152 -0
  89. package/templates/static-web-app/README.md +36 -0
  90. package/templates/static-web-app/_variants/App.v8.tsx +32 -0
  91. package/templates/static-web-app/_variants/App.v9.tsx +31 -0
  92. package/templates/static-web-app/api/host.json +12 -0
  93. package/templates/static-web-app/api/package.json +19 -0
  94. package/templates/static-web-app/api/src/functions/hello.ts +16 -0
  95. package/templates/static-web-app/api/tsconfig.json +14 -0
  96. package/templates/static-web-app/frontend/index.html +12 -0
  97. package/templates/static-web-app/frontend/package.json +23 -0
  98. package/templates/static-web-app/frontend/src/index.tsx +8 -0
  99. package/templates/static-web-app/frontend/tsconfig.json +16 -0
  100. package/templates/static-web-app/frontend/vite.config.ts +13 -0
  101. package/templates/static-web-app/gitignore +8 -0
  102. package/templates/static-web-app/package.json +15 -0
  103. package/templates/static-web-app/staticwebapp.config.json +7 -0
  104. package/templates/teams-app/README.md +27 -0
  105. package/templates/teams-app/_variants/graph.off.ts +7 -0
  106. package/templates/teams-app/_variants/graph.on.ts +22 -0
  107. package/templates/teams-app/appPackage/manifest.json +26 -0
  108. package/templates/teams-app/gitignore +5 -0
  109. package/templates/teams-app/index.html +12 -0
  110. package/templates/teams-app/package.json +26 -0
  111. package/templates/teams-app/src/App.tsx +25 -0
  112. package/templates/teams-app/src/index.tsx +8 -0
  113. package/templates/teams-app/tsconfig.json +16 -0
  114. package/templates/teams-app/vite.config.ts +9 -0
  115. package/templates/web-resource/README.md +39 -0
  116. package/templates/web-resource/_variants/App.v8.tsx +29 -0
  117. package/templates/web-resource/_variants/App.v9.tsx +28 -0
  118. package/templates/web-resource/gitignore +5 -0
  119. package/templates/web-resource/package.json +27 -0
  120. package/templates/web-resource/public/index.html +11 -0
  121. package/templates/web-resource/src/index.tsx +10 -0
  122. package/templates/web-resource/src/services/dataverse.ts +30 -0
  123. package/templates/web-resource/tsconfig.json +15 -0
  124. package/templates/web-resource/webpack.config.js +17 -0
  125. package/dist/utils/consultingHelpers.d.ts +0 -13
  126. package/dist/utils/consultingHelpers.d.ts.map +0 -1
  127. package/dist/utils/consultingHelpers.js +0 -569
  128. package/dist/utils/consultingHelpers.js.map +0 -1
  129. package/templates/dynamics-365-starter/INTEGRATION_TEST_RESULTS.md +0 -302
  130. package/templates/dynamics-365-starter/PHASE_4_COMPLETION_SUMMARY.md +0 -305
  131. package/templates/dynamics-365-starter/deployment/QUICKSTART-MAC.md +0 -507
  132. package/templates/dynamics-365-starter/deployment/QUICKSTART-WINDOWS.md +0 -372
  133. package/templates/dynamics-365-starter/deployment/pipelines/README.md +0 -375
  134. package/templates/dynamics-365-starter/deployment/pipelines/azure-pipelines.yml +0 -330
  135. package/templates/dynamics-365-starter/deployment/pipelines/github-actions.yml +0 -422
  136. package/templates/dynamics-365-starter/deployment/pipelines/jenkins.groovy +0 -636
  137. package/templates/dynamics-365-starter/deployment/scripts/deploy.ps1 +0 -417
  138. package/templates/dynamics-365-starter/deployment/scripts/deploy.sh +0 -582
  139. package/templates/dynamics-365-starter/deployment/scripts/team-onboarding.ps1 +0 -486
  140. package/templates/dynamics-365-starter/deployment/scripts/team-onboarding.sh +0 -567
  141. package/templates/dynamics-365-starter/deployment/scripts/validate-setup.ps1 +0 -703
  142. package/templates/dynamics-365-starter/deployment/scripts/validate-setup.sh +0 -671
  143. package/templates/dynamics-365-starter/docs/team-standards/README.md +0 -273
  144. package/templates/dynamics-365-starter/docs/team-standards/client-onboarding.md +0 -577
  145. package/templates/dynamics-365-starter/docs/team-standards/code-review-checklist.md +0 -359
  146. package/templates/dynamics-365-starter/docs/team-standards/coding-standards.md +0 -700
  147. package/templates/dynamics-365-starter/docs/team-standards/cross-platform-team-guide.md +0 -736
  148. package/templates/dynamics-365-starter/docs/team-standards/development-workflows.md +0 -727
  149. package/templates/dynamics-365-starter/docs/troubleshooting/common-errors.md +0 -758
  150. package/templates/dynamics-365-starter/docs/troubleshooting/platform-specific-issues.md +0 -878
  151. package/templates/dynamics-365-starter/src/client-project-template/README.md +0 -234
  152. package/templates/dynamics-365-starter/src/client-project-template/config/client.template.json +0 -114
  153. package/templates/dynamics-365-starter/src/client-project-template/config/environments/template.json +0 -186
  154. package/templates/dynamics-365-starter/src/client-project-template/scripts/client-setup.js +0 -667
  155. package/templates/dynamics-365-starter/src/examples/README.md +0 -52
  156. package/templates/dynamics-365-starter/src/examples/component-examples/opportunity-management.tsx +0 -625
  157. package/templates/dynamics-365-starter/src/examples/entity-examples/opportunity-model.ts +0 -545
  158. package/templates/dynamics-365-starter/src/examples/integration-examples/custom-pcf-wrapper.tsx +0 -722
  159. package/templates/dynamics-365-starter/src/examples/workflow-examples/sales-workflow.ts +0 -662
  160. package/templates/dynamics-365-starter/src/page-templates/EntityDashboard.tsx +0 -519
  161. package/templates/dynamics-365-starter/src/page-templates/EntityDetailPage.tsx +0 -456
  162. package/templates/dynamics-365-starter/src/page-templates/EntityListPage.tsx +0 -406
  163. package/templates/dynamics-365-starter/src/page-templates/RelatedEntitiesPage.tsx +0 -578
  164. package/templates/dynamics-365-starter/src/page-templates/SearchPage.tsx +0 -629
  165. package/templates/dynamics-365-starter/tools/entity-generator/index.js +0 -168
  166. package/templates/dynamics-365-starter/tools/entity-generator/templates/constants.template.ts +0 -124
  167. package/templates/dynamics-365-starter/tools/entity-generator/templates/form.template.css +0 -283
  168. package/templates/dynamics-365-starter/tools/entity-generator/templates/form.template.tsx +0 -275
  169. package/templates/dynamics-365-starter/tools/entity-generator/templates/management.template.css +0 -204
  170. package/templates/dynamics-365-starter/tools/entity-generator/templates/management.template.tsx +0 -413
  171. package/templates/dynamics-365-starter/tools/entity-generator/templates/model.template.ts +0 -250
  172. package/templates/dynamics-365-starter/tools/metadata-sync/d365-client.js +0 -410
  173. package/templates/dynamics-365-starter/tools/metadata-sync/index.js +0 -512
  174. package/templates/dynamics-365-starter/tools/metadata-sync/type-generator.js +0 -675
  175. /package/templates/{dynamics-365-starter → react-custom-page}/README.md +0 -0
  176. /package/templates/{dynamics-365-starter → react-custom-page}/deployment/README.md +0 -0
  177. /package/templates/{dynamics-365-starter → react-custom-page}/docs/ARCHITECTURE_OVERVIEW.md +0 -0
  178. /package/templates/{dynamics-365-starter → react-custom-page}/docs/BEST_PRACTICES.md +0 -0
  179. /package/templates/{dynamics-365-starter → react-custom-page}/docs/MIGRATION_GUIDE.md +0 -0
  180. /package/templates/{dynamics-365-starter → react-custom-page}/public/index.html +0 -0
  181. /package/templates/{dynamics-365-starter → react-custom-page}/scripts/custom-build.js +0 -0
  182. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/AccountForm.css +0 -0
  183. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/AccountForm.tsx +0 -0
  184. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/AccountManagement.css +0 -0
  185. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/AccountManagement.tsx +0 -0
  186. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/ContactForm.css +0 -0
  187. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/ContactForm.tsx +0 -0
  188. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/ContactManagement.css +0 -0
  189. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/ContactManagement.tsx +0 -0
  190. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LogDialog.tsx +0 -0
  191. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LoggingContext.tsx +0 -0
  192. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LoggingDebugPanel.css +0 -0
  193. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LoggingDebugPanel.tsx +0 -0
  194. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/LoggingProvider.tsx +0 -0
  195. /package/templates/{dynamics-365-starter → react-custom-page}/src/components/Logging/logger.ts +0 -0
  196. /package/templates/{dynamics-365-starter → react-custom-page}/src/constants/account.ts +0 -0
  197. /package/templates/{dynamics-365-starter → react-custom-page}/src/constants/contact.ts +0 -0
  198. /package/templates/{dynamics-365-starter → react-custom-page}/src/index.tsx +0 -0
  199. /package/templates/{dynamics-365-starter → react-custom-page}/src/models/Account.ts +0 -0
  200. /package/templates/{dynamics-365-starter → react-custom-page}/src/models/BaseEntity.ts +0 -0
  201. /package/templates/{dynamics-365-starter → react-custom-page}/src/models/Contact.ts +0 -0
  202. /package/templates/{dynamics-365-starter → react-custom-page}/src/pcf/ContactControlWrapper.tsx +0 -0
  203. /package/templates/{dynamics-365-starter → react-custom-page}/src/pcf/MultiEntityControlWrapper.tsx +0 -0
  204. /package/templates/{dynamics-365-starter → react-custom-page}/src/providers/DynamicsProvider.tsx +0 -0
  205. /package/templates/{dynamics-365-starter → react-custom-page}/src/services/MockApiService.ts +0 -0
  206. /package/templates/{dynamics-365-starter → react-custom-page}/src/services/ServiceFactory.ts +0 -0
  207. /package/templates/{dynamics-365-starter → react-custom-page}/src/services/XrmApiService.ts +0 -0
  208. /package/templates/{dynamics-365-starter → react-custom-page}/src/styles/index.css +0 -0
  209. /package/templates/{dynamics-365-starter → react-custom-page}/tsconfig.json +0 -0
  210. /package/templates/{dynamics-365-starter → react-custom-page}/webpack.config.js +0 -0
@@ -1,727 +0,0 @@
1
- # Development Workflows for Mixed Teams
2
-
3
- ## Overview
4
-
5
- This document defines standardized development workflows for teams using both Windows and Mac
6
- platforms, ensuring consistent processes and deliverables regardless of the developer's operating
7
- system.
8
-
9
- ## Table of Contents
10
-
11
- 1. [Daily Development Workflow](#daily-development-workflow)
12
- 2. [Feature Development Process](#feature-development-process)
13
- 3. [Code Review Standards](#code-review-standards)
14
- 4. [Testing Workflows](#testing-workflows)
15
- 5. [Deployment Procedures](#deployment-procedures)
16
- 6. [Emergency Response](#emergency-response)
17
- 7. [Platform-Specific Considerations](#platform-specific-considerations)
18
-
19
- ## Daily Development Workflow
20
-
21
- ### 🌅 Morning Routine (All Platforms)
22
-
23
- #### 1. Environment Sync
24
-
25
- ```bash
26
- # All platforms - same commands
27
- git pull origin develop
28
- npm install # In case dependencies changed
29
- npm run build:dev # Ensure clean build
30
- ```
31
-
32
- #### 2. Platform-Specific Health Check
33
-
34
- **Windows Developers:**
35
-
36
- ```powershell
37
- # Daily environment validation
38
- .\deployment\scripts\validate-setup.ps1 -Quiet
39
-
40
- # Check for PowerShell module updates
41
- Get-Module Microsoft.PowerApps* -ListAvailable | Format-Table Name, Version
42
-
43
- # Test deployment connection
44
- .\deployment\scripts\test-connection.ps1 -Environment dev
45
- ```
46
-
47
- **Mac Developers:**
48
-
49
- ```bash
50
- # Daily environment validation
51
- ./deployment/scripts/validate-setup.sh --quiet
52
-
53
- # Check for tool updates
54
- brew outdated
55
-
56
- # Test deployment connection
57
- ./deployment/scripts/test-connection.sh dev
58
- ```
59
-
60
- ### 🔄 Development Loop
61
-
62
- #### 1. Start Development Session
63
-
64
- ```bash
65
- # All platforms - same workflow
66
- git checkout develop
67
- git pull origin develop
68
- git checkout -b feature/your-feature-name
69
-
70
- # Start development server
71
- npm run dev
72
- ```
73
-
74
- #### 2. Iterative Development
75
-
76
- **Code → Test → Commit Cycle:**
77
-
78
- ```bash
79
- # Make changes to code
80
- code src/components/YourComponent.tsx
81
-
82
- # Run quality checks (same on all platforms)
83
- npm run lint
84
- npm run typecheck
85
- npm run test
86
-
87
- # Commit changes
88
- git add .
89
- git commit -m "feat(component): add new feature functionality"
90
- ```
91
-
92
- #### 3. Platform Testing
93
-
94
- Before pushing changes, test on your platform:
95
-
96
- **Windows:**
97
-
98
- ```powershell
99
- # Build and test locally
100
- npm run build:dev
101
- .\deployment\scripts\deploy.ps1 -Environment dev -DryRun
102
- ```
103
-
104
- **Mac:**
105
-
106
- ```bash
107
- # Build and test locally
108
- npm run build:dev
109
- ./deployment/scripts/deploy.sh dev --dry-run
110
- ```
111
-
112
- ### 🌆 End-of-Day Routine
113
-
114
- #### Push Changes
115
-
116
- ```bash
117
- # Final quality check
118
- npm run quality
119
-
120
- # Push to remote
121
- git push origin feature/your-feature-name
122
-
123
- # Create draft PR for tomorrow's review
124
- gh pr create --draft --title "WIP: Your feature description"
125
- ```
126
-
127
- #### Status Update
128
-
129
- Update team on platform-specific findings:
130
-
131
- - Any Windows-specific issues encountered
132
- - Mac-specific optimizations discovered
133
- - Cross-platform compatibility notes
134
-
135
- ## Feature Development Process
136
-
137
- ### 🚀 Feature Kickoff
138
-
139
- #### 1. Architecture Discussion
140
-
141
- **Cross-Platform Considerations:**
142
-
143
- - Will this feature require platform-specific deployment steps?
144
- - Are there any Windows vs Mac development tool differences?
145
- - Do we need to update both .ps1 and .sh scripts?
146
- - Are there platform-specific testing requirements?
147
-
148
- #### 2. Technical Design
149
-
150
- **Platform Impact Assessment:**
151
-
152
- ```markdown
153
- ## Platform Compatibility Checklist
154
-
155
- ### Development Impact
156
-
157
- - [ ] Requires new development tools or dependencies
158
- - [ ] Uses file system operations (ensure cross-platform paths)
159
- - [ ] Modifies build or deployment processes
160
- - [ ] Adds new environment variables or configuration
161
-
162
- ### Testing Impact
163
-
164
- - [ ] Platform-specific testing scenarios
165
- - [ ] Cross-platform validation requirements
166
- - [ ] Performance differences between platforms
167
- - [ ] UI/UX variations between platforms
168
-
169
- ### Documentation Impact
170
-
171
- - [ ] Updates to Windows quick start guide
172
- - [ ] Updates to Mac quick start guide
173
- - [ ] New troubleshooting scenarios
174
- - [ ] Changes to team workflows
175
- ```
176
-
177
- ### 🏗️ Implementation Phase
178
-
179
- #### 1. Development Standards
180
-
181
- **File Path Handling:**
182
-
183
- ```typescript
184
- // ❌ Wrong - platform-specific
185
- const configPath =
186
- process.platform === 'win32' ? 'config\\environments\\dev.json' : 'config/environments/dev.json';
187
-
188
- // ✅ Correct - cross-platform
189
- import path from 'path';
190
- const configPath = path.join('config', 'environments', 'dev.json');
191
- ```
192
-
193
- **Environment Variables:**
194
-
195
- ```typescript
196
- // ✅ Platform-agnostic configuration
197
- const config = {
198
- apiUrl: process.env.D365_API_URL || 'https://default.api.url',
199
- clientId: process.env.D365_CLIENT_ID,
200
- environment: process.env.NODE_ENV || 'development',
201
- };
202
- ```
203
-
204
- #### 2. Cross-Platform Testing
205
-
206
- **During Development:**
207
-
208
- ```bash
209
- # Test build on your platform
210
- npm run build:dev
211
-
212
- # Test key functionality
213
- npm run test:integration
214
-
215
- # Validate deployment preparation
216
- npm run deploy:dev --dry-run
217
- ```
218
-
219
- **Before PR Submission:**
220
-
221
- - ✅ Code builds successfully on your platform
222
- - ✅ All tests pass locally
223
- - ✅ Deployment dry-run succeeds
224
- - ✅ Documentation updated for any platform-specific changes
225
-
226
- ### 🔄 Feature Integration
227
-
228
- #### 1. Pull Request Creation
229
-
230
- **PR Template for Cross-Platform Features:**
231
-
232
- ```markdown
233
- ## Description
234
-
235
- [Feature description]
236
-
237
- ## Cross-Platform Testing
238
-
239
- - [ ] Tested on Windows (PowerShell deployment)
240
- - [ ] Tested on Mac (Bash deployment)
241
- - [ ] CI/CD pipeline passes on both platforms
242
- - [ ] Documentation updated for both platforms
243
-
244
- ## Platform-Specific Changes
245
-
246
- - [ ] Updated .ps1 scripts (if applicable)
247
- - [ ] Updated .sh scripts (if applicable)
248
- - [ ] Updated Windows quick start guide
249
- - [ ] Updated Mac quick start guide
250
-
251
- ## Deployment Impact
252
-
253
- - [ ] No changes to deployment process
254
- - [ ] Minor deployment changes (documented)
255
- - [ ] Major deployment changes (team approval required)
256
-
257
- ## Screenshots/Videos
258
-
259
- [Include platform-specific screenshots if UI changes]
260
- ```
261
-
262
- #### 2. Review Assignment
263
-
264
- **Automatic Reviewer Assignment:**
265
-
266
- - At least one Windows developer
267
- - At least one Mac developer
268
- - Technical lead or senior developer
269
- - DevOps engineer (if deployment changes)
270
-
271
- ## Code Review Standards
272
-
273
- ### 🔍 Cross-Platform Review Checklist
274
-
275
- #### General Code Quality
276
-
277
- - [ ] **TypeScript compliance** - Strict mode, proper typing
278
- - [ ] **Code style** - ESLint and Prettier compliance
279
- - [ ] **Error handling** - Comprehensive error scenarios
280
- - [ ] **Testing** - Unit tests and integration tests
281
- - [ ] **Documentation** - Code comments and README updates
282
-
283
- #### Platform Compatibility
284
-
285
- - [ ] **File paths** - Uses path.join() instead of hardcoded separators
286
- - [ ] **Environment variables** - No platform-specific assumptions
287
- - [ ] **Command execution** - Cross-platform compatible if applicable
288
- - [ ] **Dependencies** - Available on both Windows and Mac
289
- - [ ] **Build process** - Identical results on both platforms
290
-
291
- #### Deployment Scripts
292
-
293
- - [ ] **PowerShell (.ps1)** - Updated if deployment changes
294
- - [ ] **Bash (.sh)** - Updated if deployment changes
295
- - [ ] **Error handling** - Platform-appropriate error messages
296
- - [ ] **Parameter compatibility** - Same functionality, different syntax
297
- - [ ] **Validation** - Both scripts produce identical results
298
-
299
- ### 👀 Review Process
300
-
301
- #### 1. Technical Review
302
-
303
- **Windows Reviewer Responsibilities:**
304
-
305
- - Validate PowerShell scripts and Windows-specific paths
306
- - Test on Windows development environment
307
- - Verify Windows deployment procedures work
308
- - Check Windows-specific documentation accuracy
309
-
310
- **Mac Reviewer Responsibilities:**
311
-
312
- - Validate Bash scripts and Unix-style paths
313
- - Test on Mac development environment
314
- - Verify Mac deployment procedures work
315
- - Check Mac-specific documentation accuracy
316
-
317
- #### 2. Cross-Platform Validation
318
-
319
- **Required Checks:**
320
-
321
- ```bash
322
- # Reviewer tests (adapt commands to their platform)
323
- git checkout feature/branch-name
324
- npm install
325
- npm run build:dev
326
- npm run quality
327
- npm run deploy:dev --dry-run
328
- ```
329
-
330
- **Validation Questions:**
331
-
332
- - Does the feature work identically on both platforms?
333
- - Are error messages appropriate for each platform?
334
- - Do deployment results match across platforms?
335
- - Is documentation accurate for both setups?
336
-
337
- #### 3. Approval Process
338
-
339
- **Approval Requirements:**
340
-
341
- - ✅ **Technical approval** from Windows developer
342
- - ✅ **Technical approval** from Mac developer
343
- - ✅ **CI/CD pipeline** passes on both platforms
344
- - ✅ **Architecture approval** from technical lead (if significant changes)
345
- - ✅ **Documentation review** (if docs changed)
346
-
347
- ## Testing Workflows
348
-
349
- ### 🧪 Local Testing Standards
350
-
351
- #### Unit Testing (All Platforms)
352
-
353
- ```bash
354
- # Same commands for all developers
355
- npm run test # Run all tests
356
- npm run test:watch # Watch mode for development
357
- npm run test:coverage # Generate coverage report
358
- npm run test:specific -- MyComponent # Test specific component
359
- ```
360
-
361
- #### Integration Testing
362
-
363
- **Windows Integration Tests:**
364
-
365
- ```powershell
366
- # Test PowerShell integration
367
- .\deployment\scripts\test-integration.ps1 -Environment dev
368
-
369
- # Test Windows-specific features
370
- npm run test:integration:windows
371
- ```
372
-
373
- **Mac Integration Tests:**
374
-
375
- ```bash
376
- # Test Bash integration
377
- ./deployment/scripts/test-integration.sh dev
378
-
379
- # Test Mac-specific features
380
- npm run test:integration:mac
381
- ```
382
-
383
- ### 🔄 CI/CD Testing
384
-
385
- #### Pipeline Testing Strategy
386
-
387
- **Multi-Platform Pipeline:**
388
-
389
- ```yaml
390
- # Simplified CI/CD strategy
391
- Build: Linux (fastest)
392
- Unit Tests: Linux (consistent environment)
393
- Integration: Both Windows and Linux
394
- Deploy Test: Platform-specific (Windows PowerShell, Linux Bash)
395
- Cross-Platform: Validation on both platforms
396
- ```
397
-
398
- #### Pre-Merge Validation
399
-
400
- **Automated Checks:**
401
-
402
- - ✅ Unit tests pass on Linux
403
- - ✅ Integration tests pass on Windows
404
- - ✅ Integration tests pass on Linux
405
- - ✅ Build artifacts are identical
406
- - ✅ Deployment dry-run succeeds on both platforms
407
-
408
- **Manual Validation:**
409
-
410
- - ✅ Code review from both platform developers
411
- - ✅ Feature testing on both platforms
412
- - ✅ Documentation accuracy verification
413
-
414
- ## Deployment Procedures
415
-
416
- ### 🚀 Deployment Workflow
417
-
418
- #### 1. Pre-Deployment Validation
419
-
420
- **All Platforms:**
421
-
422
- ```bash
423
- # Validate code quality
424
- npm run quality
425
-
426
- # Build production bundle
427
- npm run build:prod
428
-
429
- # Run comprehensive tests
430
- npm run test:all
431
- ```
432
-
433
- **Platform-Specific Validation:**
434
-
435
- **Windows:**
436
-
437
- ```powershell
438
- # Validate deployment environment
439
- .\deployment\scripts\validate-setup.ps1
440
-
441
- # Test deployment process
442
- .\deployment\scripts\deploy.ps1 -Environment dev -DryRun
443
- ```
444
-
445
- **Mac:**
446
-
447
- ```bash
448
- # Validate deployment environment
449
- ./deployment/scripts/validate-setup.sh
450
-
451
- # Test deployment process
452
- ./deployment/scripts/deploy.sh dev --dry-run
453
- ```
454
-
455
- #### 2. Environment Deployment
456
-
457
- **Development Environment:**
458
-
459
- ```bash
460
- # Any team member can deploy to dev
461
- npm run deploy:dev
462
-
463
- # Platform-specific commands also work:
464
- # Windows: .\deployment\scripts\deploy.ps1 -Environment dev
465
- # Mac: ./deployment/scripts/deploy.sh dev
466
- ```
467
-
468
- **Test Environment:**
469
-
470
- ```bash
471
- # Requires approval, any platform can execute
472
- npm run deploy:test
473
-
474
- # Automated through CI/CD on main branch merge
475
- ```
476
-
477
- **Production Environment:**
478
-
479
- ```bash
480
- # Requires multiple approvals
481
- npm run deploy:prod
482
-
483
- # Must be tested on both platforms in CI/CD
484
- # Manual approval gate in pipeline
485
- ```
486
-
487
- #### 3. Post-Deployment Validation
488
-
489
- **Health Checks (All Platforms):**
490
-
491
- ```bash
492
- # Universal health check
493
- npm run health-check
494
-
495
- # Platform-specific validation:
496
- # Windows: .\deployment\scripts\health-check.ps1 -Environment prod
497
- # Mac: ./deployment/scripts/health-check.sh prod
498
- ```
499
-
500
- **Monitoring Setup:**
501
-
502
- ```bash
503
- # Cross-platform monitoring
504
- npm run setup-monitoring
505
-
506
- # Platform-specific detailed monitoring
507
- # Windows: .\deployment\scripts\setup-monitoring.ps1
508
- # Mac: ./deployment/scripts/setup-monitoring.sh
509
- ```
510
-
511
- ### 🔄 Rollback Procedures
512
-
513
- #### Emergency Rollback
514
-
515
- **Windows:**
516
-
517
- ```powershell
518
- # Emergency rollback
519
- .\deployment\scripts\rollback.ps1 -Environment prod -BackupFile "backup-20240315-143022.zip"
520
-
521
- # Validation
522
- .\deployment\scripts\health-check.ps1 -Environment prod
523
- ```
524
-
525
- **Mac:**
526
-
527
- ```bash
528
- # Emergency rollback
529
- ./deployment/scripts/rollback.sh prod backup-20240315-143022.tar.gz
530
-
531
- # Validation
532
- ./deployment/scripts/health-check.sh prod
533
- ```
534
-
535
- **Cross-Platform Coordination:**
536
-
537
- - Notify team immediately in #dynamics-emergency channel
538
- - Provide platform-agnostic status updates
539
- - Document rollback reason and resolution steps
540
-
541
- ## Emergency Response
542
-
543
- ### 🚨 Incident Response Workflow
544
-
545
- #### 1. Issue Detection
546
-
547
- **Monitoring Alerts:**
548
-
549
- - Automated monitoring detects issue
550
- - Alerts sent to #dynamics-alerts channel
551
- - On-call engineer (any platform) responds
552
-
553
- **Manual Detection:**
554
-
555
- - Team member discovers issue
556
- - Report in #dynamics-emergency channel
557
- - Include platform information in report
558
-
559
- #### 2. Initial Assessment
560
-
561
- **Information Gathering:**
562
-
563
- ```bash
564
- # Gather system information (adapt to platform)
565
- # Windows: Get-ComputerInfo | Select-Object WindowsProductName, TotalPhysicalMemory
566
- # Mac: system_profiler SPSoftwareDataType SPHardwareDataType
567
-
568
- # Check application health
569
- npm run health-check
570
-
571
- # Review recent deployments
572
- git log --oneline -10
573
- ```
574
-
575
- **Platform-Specific Diagnostics:**
576
-
577
- **Windows:**
578
-
579
- ```powershell
580
- # Check Windows-specific issues
581
- Get-EventLog -LogName Application -Source "YourApp" -Newest 10
582
- .\deployment\scripts\diagnose.ps1 -Environment prod
583
- ```
584
-
585
- **Mac:**
586
-
587
- ```bash
588
- # Check Mac-specific issues
589
- tail -n 100 /var/log/system.log | grep YourApp
590
- ./deployment/scripts/diagnose.sh prod
591
- ```
592
-
593
- #### 3. Resolution Process
594
-
595
- **Escalation Levels:**
596
-
597
- 1. **Self-resolve** (15 minutes) - Individual team member
598
- 2. **Team assistance** (30 minutes) - Platform experts help
599
- 3. **Technical lead** (45 minutes) - Architecture-level decisions
600
- 4. **Emergency rollback** (60 minutes) - Return to last known good state
601
-
602
- **Cross-Platform Collaboration:**
603
-
604
- - Share diagnostics in team channel
605
- - Use screen sharing for real-time troubleshooting
606
- - Document platform-specific resolution steps
607
- - Test resolution on both platforms before closing
608
-
609
- ### 📋 Post-Incident Process
610
-
611
- #### 1. Post-Mortem
612
-
613
- **Required Analysis:**
614
-
615
- - Root cause identification
616
- - Platform-specific contributing factors
617
- - Cross-platform impact assessment
618
- - Prevention strategies for both platforms
619
-
620
- #### 2. Process Improvement
621
-
622
- **Documentation Updates:**
623
-
624
- - Update troubleshooting guides for both platforms
625
- - Improve monitoring and alerting
626
- - Enhance deployment validation
627
- - Strengthen team training on platform differences
628
-
629
- ## Platform-Specific Considerations
630
-
631
- ### 🖥️ Windows Development
632
-
633
- #### Unique Strengths
634
-
635
- - **PowerShell ISE/VS Code** - Rich debugging experience
636
- - **PowerApps CLI** - Native Dynamics 365 tooling
637
- - **Azure DevOps** - Seamless integration
638
- - **Enterprise tooling** - Native Windows admin tools
639
-
640
- #### Common Challenges
641
-
642
- - **Execution policies** - PowerShell script restrictions
643
- - **Path separators** - Backslash vs forward slash
644
- - **Case sensitivity** - Different from Linux/Mac
645
- - **Module dependencies** - PowerShell module management
646
-
647
- #### Best Practices
648
-
649
- ```powershell
650
- # Always check execution policy
651
- Get-ExecutionPolicy
652
- Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
653
-
654
- # Use PowerShell-native paths
655
- $configPath = Join-Path $ProjectRoot "config\environments\dev.json"
656
-
657
- # Handle errors properly
658
- try {
659
- Invoke-RestMethod -Uri $ApiUrl -Method GET
660
- } catch {
661
- Write-Error "API call failed: $($_.Exception.Message)"
662
- }
663
- ```
664
-
665
- ### 🍎 Mac Development
666
-
667
- #### Unique Strengths
668
-
669
- - **Terminal/iTerm2** - Powerful command-line experience
670
- - **Homebrew** - Excellent package management
671
- - **Docker** - Native container development
672
- - **Open source tools** - Better compatibility with Linux tooling
673
-
674
- #### Common Challenges
675
-
676
- - **Case sensitivity** - File system differences
677
- - **Permissions** - Script execution permissions
678
- - **Tool installation** - Different package managers
679
- - **Path handling** - Different from Windows
680
-
681
- #### Best Practices
682
-
683
- ```bash
684
- # Always make scripts executable
685
- chmod +x deployment/scripts/*.sh
686
-
687
- # Use proper path handling
688
- config_path="$PROJECT_ROOT/config/environments/dev.json"
689
-
690
- # Handle errors properly
691
- set -euo pipefail # Exit on error, undefined vars, pipe failures
692
-
693
- # Check dependencies
694
- command -v jq >/dev/null 2>&1 || { echo "jq required but not installed"; exit 1; }
695
- ```
696
-
697
- ### 🤝 Cross-Platform Harmony
698
-
699
- #### Shared Strengths
700
-
701
- - **Node.js ecosystem** - Identical runtime environment
702
- - **VS Code** - Consistent development experience
703
- - **Git workflows** - Same version control processes
704
- - **TypeScript** - Same language and tooling
705
-
706
- #### Unified Approaches
707
-
708
- ```typescript
709
- // Platform-agnostic file operations
710
- import fs from 'fs/promises';
711
- import path from 'path';
712
-
713
- // Read configuration
714
- const configPath = path.join(process.cwd(), 'config', 'environments', `${env}.json`);
715
- const config = JSON.parse(await fs.readFile(configPath, 'utf8'));
716
-
717
- // Environment detection
718
- const isWindows = process.platform === 'win32';
719
- const scriptExtension = isWindows ? '.ps1' : '.sh';
720
- const scriptCommand = isWindows ? 'powershell' : 'bash';
721
- ```
722
-
723
- ---
724
-
725
- These development workflows ensure that Windows and Mac team members can work together effectively
726
- while leveraging platform-specific strengths and maintaining consistent deliverables across the
727
- entire team.