@khester/create-dynamics-app 1.0.8 → 1.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 (107) hide show
  1. package/bin/create-dynamics-app.js +1 -1
  2. package/dist/index.js +140 -15
  3. package/dist/index.js.map +1 -1
  4. package/dist/utils/consultingHelpers.d.ts +13 -0
  5. package/dist/utils/consultingHelpers.d.ts.map +1 -0
  6. package/dist/utils/consultingHelpers.js +569 -0
  7. package/dist/utils/consultingHelpers.js.map +1 -0
  8. package/dist/utils/copyTemplate.d.ts.map +1 -1
  9. package/dist/utils/copyTemplate.js.map +1 -1
  10. package/dist/utils/initGit.d.ts.map +1 -1
  11. package/dist/utils/initGit.js.map +1 -1
  12. package/dist/utils/installDependencies.d.ts.map +1 -1
  13. package/dist/utils/installDependencies.js +3 -2
  14. package/dist/utils/installDependencies.js.map +1 -1
  15. package/dist/utils/updatePackageJson.d.ts +1 -1
  16. package/dist/utils/updatePackageJson.d.ts.map +1 -1
  17. package/dist/utils/updatePackageJson.js +11 -1
  18. package/dist/utils/updatePackageJson.js.map +1 -1
  19. package/package.json +1 -1
  20. package/templates/dynamics-365-starter/INTEGRATION_TEST_RESULTS.md +302 -0
  21. package/templates/dynamics-365-starter/PHASE_4_COMPLETION_SUMMARY.md +305 -0
  22. package/templates/dynamics-365-starter/README.md +566 -137
  23. package/templates/dynamics-365-starter/deployment/QUICKSTART-MAC.md +507 -0
  24. package/templates/dynamics-365-starter/deployment/QUICKSTART-WINDOWS.md +372 -0
  25. package/templates/dynamics-365-starter/deployment/README.md +484 -0
  26. package/templates/dynamics-365-starter/deployment/pipelines/README.md +375 -0
  27. package/templates/dynamics-365-starter/deployment/pipelines/azure-pipelines.yml +330 -0
  28. package/templates/dynamics-365-starter/deployment/pipelines/github-actions.yml +422 -0
  29. package/templates/dynamics-365-starter/deployment/pipelines/jenkins.groovy +636 -0
  30. package/templates/dynamics-365-starter/deployment/scripts/deploy.ps1 +417 -0
  31. package/templates/dynamics-365-starter/deployment/scripts/deploy.sh +582 -0
  32. package/templates/dynamics-365-starter/deployment/scripts/team-onboarding.ps1 +486 -0
  33. package/templates/dynamics-365-starter/deployment/scripts/team-onboarding.sh +567 -0
  34. package/templates/dynamics-365-starter/deployment/scripts/validate-setup.ps1 +703 -0
  35. package/templates/dynamics-365-starter/deployment/scripts/validate-setup.sh +671 -0
  36. package/templates/dynamics-365-starter/docs/ARCHITECTURE_OVERVIEW.md +506 -0
  37. package/templates/dynamics-365-starter/docs/BEST_PRACTICES.md +723 -0
  38. package/templates/dynamics-365-starter/docs/MIGRATION_GUIDE.md +447 -0
  39. package/templates/dynamics-365-starter/docs/team-standards/README.md +273 -0
  40. package/templates/dynamics-365-starter/docs/team-standards/client-onboarding.md +577 -0
  41. package/templates/dynamics-365-starter/docs/team-standards/code-review-checklist.md +359 -0
  42. package/templates/dynamics-365-starter/docs/team-standards/coding-standards.md +700 -0
  43. package/templates/dynamics-365-starter/docs/team-standards/cross-platform-team-guide.md +736 -0
  44. package/templates/dynamics-365-starter/docs/team-standards/development-workflows.md +727 -0
  45. package/templates/dynamics-365-starter/docs/troubleshooting/common-errors.md +758 -0
  46. package/templates/dynamics-365-starter/docs/troubleshooting/platform-specific-issues.md +878 -0
  47. package/templates/dynamics-365-starter/package.json +22 -1
  48. package/templates/dynamics-365-starter/public/index.html +8 -11
  49. package/templates/dynamics-365-starter/scripts/custom-build.js +255 -0
  50. package/templates/dynamics-365-starter/src/client-project-template/README.md +234 -0
  51. package/templates/dynamics-365-starter/src/client-project-template/config/client.template.json +114 -0
  52. package/templates/dynamics-365-starter/src/client-project-template/config/environments/template.json +186 -0
  53. package/templates/dynamics-365-starter/src/client-project-template/scripts/client-setup.js +667 -0
  54. package/templates/dynamics-365-starter/src/components/AccountForm.css +71 -0
  55. package/templates/dynamics-365-starter/src/components/AccountForm.tsx +541 -0
  56. package/templates/dynamics-365-starter/src/components/AccountManagement.css +86 -0
  57. package/templates/dynamics-365-starter/src/components/AccountManagement.tsx +370 -0
  58. package/templates/dynamics-365-starter/src/components/ContactForm.tsx +149 -63
  59. package/templates/dynamics-365-starter/src/components/ContactManagement.tsx +153 -63
  60. package/templates/dynamics-365-starter/src/components/Logging/LogDialog.tsx +291 -0
  61. package/templates/dynamics-365-starter/src/components/Logging/LoggingContext.tsx +166 -0
  62. package/templates/dynamics-365-starter/src/components/Logging/LoggingDebugPanel.css +192 -0
  63. package/templates/dynamics-365-starter/src/components/Logging/LoggingDebugPanel.tsx +177 -0
  64. package/templates/dynamics-365-starter/src/components/Logging/LoggingProvider.tsx +3 -0
  65. package/templates/dynamics-365-starter/src/components/Logging/logger.ts +193 -0
  66. package/templates/dynamics-365-starter/src/constants/account.ts +410 -0
  67. package/templates/dynamics-365-starter/src/constants/contact.ts +362 -0
  68. package/templates/dynamics-365-starter/src/examples/README.md +52 -0
  69. package/templates/dynamics-365-starter/src/examples/component-examples/opportunity-management.tsx +625 -0
  70. package/templates/dynamics-365-starter/src/examples/entity-examples/opportunity-model.ts +545 -0
  71. package/templates/dynamics-365-starter/src/examples/integration-examples/custom-pcf-wrapper.tsx +722 -0
  72. package/templates/dynamics-365-starter/src/examples/workflow-examples/sales-workflow.ts +662 -0
  73. package/templates/dynamics-365-starter/src/index.tsx +107 -19
  74. package/templates/dynamics-365-starter/src/models/Account.ts +480 -0
  75. package/templates/dynamics-365-starter/src/models/BaseEntity.ts +204 -0
  76. package/templates/dynamics-365-starter/src/models/Contact.ts +580 -0
  77. package/templates/dynamics-365-starter/src/page-templates/EntityDashboard.tsx +519 -0
  78. package/templates/dynamics-365-starter/src/page-templates/EntityDetailPage.tsx +456 -0
  79. package/templates/dynamics-365-starter/src/page-templates/EntityListPage.tsx +406 -0
  80. package/templates/dynamics-365-starter/src/page-templates/RelatedEntitiesPage.tsx +578 -0
  81. package/templates/dynamics-365-starter/src/page-templates/SearchPage.tsx +629 -0
  82. package/templates/dynamics-365-starter/src/pcf/ContactControlWrapper.tsx +75 -22
  83. package/templates/dynamics-365-starter/src/pcf/MultiEntityControlWrapper.tsx +205 -0
  84. package/templates/dynamics-365-starter/src/providers/DynamicsProvider.tsx +297 -80
  85. package/templates/dynamics-365-starter/src/services/MockApiService.ts +260 -0
  86. package/templates/dynamics-365-starter/src/services/ServiceFactory.ts +65 -0
  87. package/templates/dynamics-365-starter/src/services/XrmApiService.ts +213 -0
  88. package/templates/dynamics-365-starter/src/styles/index.css +74 -7
  89. package/templates/dynamics-365-starter/tools/entity-generator/index.js +168 -0
  90. package/templates/dynamics-365-starter/tools/entity-generator/templates/constants.template.ts +124 -0
  91. package/templates/dynamics-365-starter/tools/entity-generator/templates/form.template.css +283 -0
  92. package/templates/dynamics-365-starter/tools/entity-generator/templates/form.template.tsx +275 -0
  93. package/templates/dynamics-365-starter/tools/entity-generator/templates/management.template.css +204 -0
  94. package/templates/dynamics-365-starter/tools/entity-generator/templates/management.template.tsx +413 -0
  95. package/templates/dynamics-365-starter/tools/entity-generator/templates/model.template.ts +250 -0
  96. package/templates/dynamics-365-starter/tools/metadata-sync/d365-client.js +410 -0
  97. package/templates/dynamics-365-starter/tools/metadata-sync/index.js +512 -0
  98. package/templates/dynamics-365-starter/tools/metadata-sync/type-generator.js +675 -0
  99. package/templates/dynamics-365-starter/tsconfig.json +11 -8
  100. package/templates/dynamics-365-starter/webpack.config.js +8 -9
  101. package/templates/power-pages-starter/README.md +7 -1
  102. package/templates/power-pages-starter/public/index.html +8 -11
  103. package/templates/power-pages-starter/src/components/ContactForm.tsx +60 -41
  104. package/templates/power-pages-starter/src/index.tsx +3 -3
  105. package/templates/power-pages-starter/src/providers/PowerPagesProvider.tsx +46 -23
  106. package/templates/power-pages-starter/tsconfig.json +3 -9
  107. package/templates/power-pages-starter/webpack.config.js +8 -3
@@ -0,0 +1,736 @@
1
+ # Cross-Platform Team Development Standards
2
+
3
+ ## Overview
4
+
5
+ This guide establishes standards and best practices for mixed Windows/Mac development teams working
6
+ on Dynamics 365 projects. It ensures consistent workflows, compatible tooling, and seamless
7
+ collaboration across different platforms.
8
+
9
+ ## Table of Contents
10
+
11
+ 1. [Team Composition Guidelines](#team-composition-guidelines)
12
+ 2. [Platform-Agnostic Standards](#platform-agnostic-standards)
13
+ 3. [Development Environment Setup](#development-environment-setup)
14
+ 4. [Git and Version Control](#git-and-version-control)
15
+ 5. [Code Standards and Reviews](#code-standards-and-reviews)
16
+ 6. [Communication and Collaboration](#communication-and-collaboration)
17
+ 7. [CI/CD and Deployment](#cicd-and-deployment)
18
+ 8. [Troubleshooting Cross-Platform Issues](#troubleshooting-cross-platform-issues)
19
+ 9. [Team Onboarding Process](#team-onboarding-process)
20
+ 10. [Best Practices and Guidelines](#best-practices-and-guidelines)
21
+
22
+ ## Team Composition Guidelines
23
+
24
+ ### 🎯 Recommended Team Structure
25
+
26
+ For optimal cross-platform collaboration, we recommend:
27
+
28
+ - **Mixed Platform Distribution**: 60/40 or 70/30 split (not 100% single platform)
29
+ - **Platform Champions**: At least one expert per platform who can help others
30
+ - **Shared Responsibilities**: All team members should understand both platforms
31
+ - **Documentation Leaders**: Dedicated maintainers for platform-specific docs
32
+
33
+ ### 👥 Role-Platform Mapping
34
+
35
+ | Role | Windows Preference | Mac Preference | Platform Agnostic |
36
+ | ---------------------- | ----------------------- | --------------------- | ------------------------ |
37
+ | **DevOps Engineer** | ✅ PowerShell expertise | ⭐ Bash/Docker skills | ✅ Both valuable |
38
+ | **Backend Developer** | ✅ .NET/Azure focus | ⭐ Node.js/Linux | ✅ JavaScript/TypeScript |
39
+ | **Frontend Developer** | ⭐ VS Code/Chrome | ✅ Design tools | ✅ React/Web standards |
40
+ | **QA Engineer** | ✅ Windows testing | ⭐ Mobile testing | ✅ Web testing |
41
+ | **Technical Lead** | ✅ Enterprise systems | ⭐ Open source | ✅ Architecture focus |
42
+
43
+ ## Platform-Agnostic Standards
44
+
45
+ ### 🔧 Core Technology Stack
46
+
47
+ All team members use the same core technologies:
48
+
49
+ ```json
50
+ {
51
+ "runtime": "Node.js 18+",
52
+ "language": "TypeScript 5+",
53
+ "framework": "React 18+",
54
+ "styling": "Fluent UI v8",
55
+ "testing": "Jest + Testing Library",
56
+ "linting": "ESLint + Prettier",
57
+ "bundling": "Webpack 5+",
58
+ "version_control": "Git 2.40+"
59
+ }
60
+ ```
61
+
62
+ ### 📁 Project Structure Standards
63
+
64
+ ```
65
+ project-root/
66
+ ├── src/ # Cross-platform source code
67
+ ├── config/ # Shared JSON configurations
68
+ ├── deployment/
69
+ │ ├── scripts/
70
+ │ │ ├── *.sh # Bash scripts (Mac/Linux)
71
+ │ │ └── *.ps1 # PowerShell scripts (Windows)
72
+ │ ├── QUICKSTART-MAC.md # Mac-specific setup
73
+ │ └── QUICKSTART-WINDOWS.md # Windows-specific setup
74
+ ├── docs/ # Platform-agnostic documentation
75
+ └── .vscode/ # Shared VS Code configuration
76
+ ```
77
+
78
+ ### 🔐 Configuration Management
79
+
80
+ #### Shared Configuration Files
81
+
82
+ All configuration uses JSON format (cross-platform compatible):
83
+
84
+ ```json
85
+ // config/environments/dev.json
86
+ {
87
+ "name": "Development",
88
+ "dynamics365": {
89
+ "orgUrl": "https://dev.crm.dynamics.com",
90
+ "webApiUrl": "https://dev.api.crm.dynamics.com/api/data/v9.2"
91
+ },
92
+ "authentication": {
93
+ "clientId": "${D365_CLIENT_ID}",
94
+ "clientSecret": "${D365_CLIENT_SECRET}"
95
+ }
96
+ }
97
+ ```
98
+
99
+ #### Platform-Specific Variables
100
+
101
+ Use environment variables for platform differences:
102
+
103
+ ```bash
104
+ # Mac/Linux (.env.local)
105
+ D365_CLIENT_ID=your-client-id
106
+ D365_CLIENT_SECRET=your-client-secret
107
+ NODE_ENV=development
108
+ PATH_SEPARATOR=/
109
+ ```
110
+
111
+ ```powershell
112
+ # Windows (.env.local)
113
+ D365_CLIENT_ID=your-client-id
114
+ D365_CLIENT_SECRET=your-client-secret
115
+ NODE_ENV=development
116
+ PATH_SEPARATOR=\
117
+ ```
118
+
119
+ ## Development Environment Setup
120
+
121
+ ### 🚀 Quick Start by Platform
122
+
123
+ #### Windows Developers
124
+
125
+ ```powershell
126
+ # 1. Run team onboarding script
127
+ .\deployment\scripts\team-onboarding.ps1
128
+
129
+ # 2. Follow Windows-specific guide
130
+ start deployment\QUICKSTART-WINDOWS.md
131
+
132
+ # 3. Validate setup
133
+ .\deployment\scripts\validate-setup.ps1
134
+
135
+ # 4. First deployment test
136
+ .\deployment\scripts\deploy.ps1 -Environment dev -DryRun
137
+ ```
138
+
139
+ #### Mac Developers
140
+
141
+ ```bash
142
+ # 1. Run team onboarding script
143
+ ./deployment/scripts/team-onboarding.sh
144
+
145
+ # 2. Follow Mac-specific guide
146
+ open deployment/QUICKSTART-MAC.md
147
+
148
+ # 3. Validate setup
149
+ ./deployment/scripts/validate-setup.sh
150
+
151
+ # 4. First deployment test
152
+ ./deployment/scripts/deploy.sh dev --dry-run
153
+ ```
154
+
155
+ ### 🛠️ Common Tool Requirements
156
+
157
+ All team members must have:
158
+
159
+ | Tool | Windows Installation | Mac Installation | Purpose |
160
+ | --------------- | ---------------------- | ---------------------------------------- | ------------------- |
161
+ | **Node.js 18+** | `choco install nodejs` | `brew install node` | Runtime environment |
162
+ | **Git** | `choco install git` | `brew install git` | Version control |
163
+ | **VS Code** | `choco install vscode` | `brew install --cask visual-studio-code` | IDE |
164
+ | **jq** | `choco install jq` | `brew install jq` | JSON processing |
165
+
166
+ ### 🔧 Platform-Specific Tools
167
+
168
+ #### Windows-Only Tools
169
+
170
+ ```powershell
171
+ # PowerShell modules for Dynamics 365
172
+ Install-Module Microsoft.PowerApps.Administration.PowerShell
173
+ Install-Module Microsoft.PowerApps.PowerShell
174
+
175
+ # Windows Subsystem for Linux (optional)
176
+ wsl --install
177
+
178
+ # Chocolatey package manager
179
+ Set-ExecutionPolicy Bypass -Scope Process -Force
180
+ iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
181
+ ```
182
+
183
+ #### Mac-Only Tools
184
+
185
+ ```bash
186
+ # Homebrew package manager
187
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
188
+
189
+ # Xcode Command Line Tools
190
+ xcode-select --install
191
+
192
+ # Docker Desktop for Mac
193
+ brew install --cask docker
194
+ ```
195
+
196
+ ## Git and Version Control
197
+
198
+ ### 🌿 Branch Strategy
199
+
200
+ All team members follow the same Git workflow:
201
+
202
+ ```bash
203
+ # Main branches (same for all platforms)
204
+ main # Production-ready code
205
+ develop # Integration branch
206
+ feature/* # Feature development
207
+ hotfix/* # Production fixes
208
+ release/* # Release preparation
209
+ ```
210
+
211
+ ### 📝 Commit Standards
212
+
213
+ #### Commit Message Format
214
+
215
+ ```
216
+ type(scope): description
217
+
218
+ [optional body]
219
+
220
+ [optional footer]
221
+ ```
222
+
223
+ **Examples:**
224
+
225
+ ```bash
226
+ feat(auth): add Azure AD authentication
227
+ fix(deploy): resolve PowerShell execution policy issue
228
+ docs(readme): update cross-platform setup instructions
229
+ style(format): apply prettier formatting
230
+ ```
231
+
232
+ #### Cross-Platform Commit Hooks
233
+
234
+ ```bash
235
+ # .husky/pre-commit (works on both platforms)
236
+ #!/bin/sh
237
+ npm run lint
238
+ npm run typecheck
239
+ npm run test:staged
240
+ ```
241
+
242
+ ### 🔄 Pull Request Process
243
+
244
+ #### Required Checks
245
+
246
+ All PRs must pass:
247
+
248
+ - ✅ **Cross-platform validation** (Windows + Linux CI)
249
+ - ✅ **Code review** (minimum 2 approvals)
250
+ - ✅ **Automated tests** (unit + integration)
251
+ - ✅ **Deployment simulation** (dry-run on both platforms)
252
+
253
+ #### Review Guidelines
254
+
255
+ 1. **Platform Compatibility**: Reviewer checks both Windows and Mac workflows
256
+ 2. **Script Validation**: If modifying deployment scripts, test both .ps1 and .sh
257
+ 3. **Documentation Updates**: Update platform-specific docs when needed
258
+ 4. **Configuration Changes**: Verify JSON configs work across platforms
259
+
260
+ ## Code Standards and Reviews
261
+
262
+ ### 📋 Code Style Standards
263
+
264
+ #### TypeScript/JavaScript
265
+
266
+ ```json
267
+ // .eslintrc.json (shared across platforms)
268
+ {
269
+ "extends": ["@typescript-eslint/recommended", "prettier"],
270
+ "rules": {
271
+ "no-console": "error",
272
+ "prefer-const": "error",
273
+ "@typescript-eslint/no-unused-vars": "error"
274
+ }
275
+ }
276
+ ```
277
+
278
+ #### File Path Handling
279
+
280
+ ```typescript
281
+ // ❌ Platform-specific (Windows-only)
282
+ const filePath = 'src\\components\\MyComponent.tsx';
283
+
284
+ // ✅ Cross-platform compatible
285
+ import path from 'path';
286
+ const filePath = path.join('src', 'components', 'MyComponent.tsx');
287
+ ```
288
+
289
+ #### Environment Variables
290
+
291
+ ```typescript
292
+ // ❌ Platform-specific
293
+ const isDev = process.env.NODE_ENV === 'development';
294
+ const separator = process.platform === 'win32' ? '\\' : '/';
295
+
296
+ // ✅ Cross-platform
297
+ const isDev = process.env.NODE_ENV === 'development';
298
+ const separator = path.sep; // Use Node.js path module
299
+ ```
300
+
301
+ ### 🔍 Review Checklist
302
+
303
+ #### General Code Review
304
+
305
+ - [ ] Code follows TypeScript strict mode
306
+ - [ ] No hardcoded file paths (use path.join)
307
+ - [ ] Environment variables used for configuration
308
+ - [ ] Error handling includes platform context
309
+ - [ ] Logging uses centralized logger
310
+ - [ ] Comments explain platform-specific logic
311
+
312
+ #### Platform-Specific Review
313
+
314
+ - [ ] Windows: PowerShell scripts have proper error handling
315
+ - [ ] Mac: Bash scripts have proper permissions (chmod +x)
316
+ - [ ] Both: JSON configurations are valid
317
+ - [ ] Both: Build artifacts are identical
318
+ - [ ] Both: Deployment results are consistent
319
+
320
+ ## Communication and Collaboration
321
+
322
+ ### 💬 Communication Standards
323
+
324
+ #### Daily Standups
325
+
326
+ **Format:** Video call with shared screen
327
+
328
+ **Platform Considerations:**
329
+
330
+ - Windows team members share PowerShell deployment results
331
+ - Mac team members share Terminal/Bash deployment results
332
+ - All share VS Code debugging and development experience
333
+ - Focus on blockers that might be platform-specific
334
+
335
+ #### Platform-Specific Channels
336
+
337
+ **Slack/Teams Structure:**
338
+
339
+ ```
340
+ #dynamics-general # All team communication
341
+ #dynamics-windows # Windows-specific issues
342
+ #dynamics-mac # Mac-specific issues
343
+ #dynamics-deployment # Cross-platform deployment
344
+ #dynamics-troubleshooting # Platform issues help
345
+ ```
346
+
347
+ ### 📚 Knowledge Sharing
348
+
349
+ #### Weekly Platform Updates
350
+
351
+ **Every Friday 3:00 PM:**
352
+
353
+ - Windows team shares PowerShell tips and tricks
354
+ - Mac team shares Terminal/Bash improvements
355
+ - Both teams demo new tools and workflows
356
+ - Cross-platform troubleshooting session
357
+
358
+ #### Documentation Responsibilities
359
+
360
+ | Team Member | Responsibility |
361
+ | ---------------- | ----------------------------------------------- |
362
+ | **Windows Lead** | Maintain QUICKSTART-WINDOWS.md and .ps1 scripts |
363
+ | **Mac Lead** | Maintain QUICKSTART-MAC.md and .sh scripts |
364
+ | **DevOps Lead** | Ensure CI/CD works on both platforms |
365
+ | **All Members** | Update cross-platform compatibility notes |
366
+
367
+ ### 🎯 Pair Programming Guidelines
368
+
369
+ #### Cross-Platform Pairing
370
+
371
+ **Best Practices:**
372
+
373
+ - Use VS Code Live Share for real-time collaboration
374
+ - Share terminal sessions for deployment testing
375
+ - Test deployments on both platforms during pairing
376
+ - Document any platform-specific discoveries
377
+
378
+ **Pairing Rotation:**
379
+
380
+ - Windows ↔ Mac pairing every sprint
381
+ - Senior ↔ Junior cross-platform mentoring
382
+ - DevOps ↔ Developer deployment knowledge sharing
383
+
384
+ ## CI/CD and Deployment
385
+
386
+ ### 🚀 Pipeline Strategy
387
+
388
+ Our CI/CD supports both platforms with optimized stage distribution:
389
+
390
+ ```yaml
391
+ # Pipeline Strategy
392
+ Build: Linux (fastest performance)
393
+ Dev Deploy: Linux + Bash (Mac developer experience)
394
+ Test Deploy: Windows + PowerShell (Windows validation)
395
+ Prod Deploy: Flexible choice (team preference)
396
+ ```
397
+
398
+ ### 🔧 Deployment Commands
399
+
400
+ #### Command Equivalents
401
+
402
+ | Task | Windows PowerShell | Mac Bash | Result |
403
+ | ---------------- | --------------------------------------------------------- | ---------------------------------- | ---------- |
404
+ | **Deploy Dev** | `.\deploy.ps1 -Environment dev` | `./deploy.sh dev` | Identical |
405
+ | **Health Check** | `.\health-check.ps1 -Environment prod` | `./health-check.sh prod` | Same data |
406
+ | **Rollback** | `.\rollback.ps1 -Environment prod -BackupFile backup.zip` | `./rollback.sh prod backup.tar.gz` | Same state |
407
+
408
+ #### Local Development
409
+
410
+ ```bash
411
+ # All platforms use same npm commands
412
+ npm run build:dev # Development build
413
+ npm run build:prod # Production build
414
+ npm run lint # Code linting
415
+ npm run typecheck # TypeScript validation
416
+ npm run test # Unit tests
417
+ npm run deploy:dev # Deploy to development
418
+ ```
419
+
420
+ ### 🏗️ Build Consistency
421
+
422
+ #### Shared Build Configuration
423
+
424
+ ```json
425
+ // package.json (platform-agnostic scripts)
426
+ {
427
+ "scripts": {
428
+ "build:dev": "webpack --mode development",
429
+ "build:prod": "webpack --mode production",
430
+ "deploy:dev": "node scripts/deploy.js dev",
431
+ "deploy:test": "node scripts/deploy.js test",
432
+ "deploy:prod": "node scripts/deploy.js prod"
433
+ }
434
+ }
435
+ ```
436
+
437
+ #### Platform-Specific Scripts
438
+
439
+ ```javascript
440
+ // scripts/deploy.js (detects platform and runs appropriate script)
441
+ const os = require('os');
442
+ const { exec } = require('child_process');
443
+
444
+ const platform = os.platform();
445
+ const environment = process.argv[2];
446
+
447
+ const command =
448
+ platform === 'win32'
449
+ ? `.\\deployment\\scripts\\deploy.ps1 -Environment ${environment}`
450
+ : `./deployment/scripts/deploy.sh ${environment}`;
451
+
452
+ exec(command, (error, stdout, stderr) => {
453
+ if (error) {
454
+ console.error(`Deployment failed: ${error}`);
455
+ process.exit(1);
456
+ }
457
+ console.log(stdout);
458
+ });
459
+ ```
460
+
461
+ ## Troubleshooting Cross-Platform Issues
462
+
463
+ ### 🔧 Common Platform Issues
464
+
465
+ #### File Path Problems
466
+
467
+ **Issue:** Windows backslashes vs Unix forward slashes
468
+
469
+ **Solution:**
470
+
471
+ ```typescript
472
+ // Use Node.js path module
473
+ import path from 'path';
474
+
475
+ // ❌ Wrong
476
+ const configPath = 'config\\environments\\dev.json';
477
+
478
+ // ✅ Correct
479
+ const configPath = path.join('config', 'environments', 'dev.json');
480
+ ```
481
+
482
+ #### Script Execution Issues
483
+
484
+ **Windows PowerShell:**
485
+
486
+ ```powershell
487
+ # Issue: Execution policy prevents script running
488
+ Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
489
+
490
+ # Issue: Module not found
491
+ Install-Module Microsoft.PowerApps.PowerShell -Force -AllowClobber
492
+ ```
493
+
494
+ **Mac/Linux Bash:**
495
+
496
+ ```bash
497
+ # Issue: Script not executable
498
+ chmod +x deployment/scripts/*.sh
499
+
500
+ # Issue: Missing dependencies
501
+ brew install jq curl node npm
502
+ ```
503
+
504
+ #### Environment Variables
505
+
506
+ **Windows:**
507
+
508
+ ```powershell
509
+ # Set for session
510
+ $env:D365_CLIENT_ID = "your-client-id"
511
+
512
+ # Set permanently
513
+ [Environment]::SetEnvironmentVariable("D365_CLIENT_ID", "your-client-id", "User")
514
+ ```
515
+
516
+ **Mac/Linux:**
517
+
518
+ ```bash
519
+ # Set for session
520
+ export D365_CLIENT_ID="your-client-id"
521
+
522
+ # Set permanently
523
+ echo 'export D365_CLIENT_ID="your-client-id"' >> ~/.zshrc
524
+ source ~/.zshrc
525
+ ```
526
+
527
+ ### 🚨 Escalation Process
528
+
529
+ #### Level 1: Self-Help
530
+
531
+ 1. Check platform-specific quick start guide
532
+ 2. Review troubleshooting section in deployment README
533
+ 3. Search team Slack channels for similar issues
534
+ 4. Try the other platform's approach (if applicable)
535
+
536
+ #### Level 2: Team Support
537
+
538
+ 1. Post in platform-specific Slack channel
539
+ 2. Tag platform champion for assistance
540
+ 3. Share complete error logs and environment info
541
+ 4. Schedule pairing session if needed
542
+
543
+ #### Level 3: Architecture Review
544
+
545
+ 1. Escalate to technical lead
546
+ 2. Review if issue indicates larger architectural problem
547
+ 3. Consider if platform-agnostic solution is needed
548
+ 4. Update team standards if pattern emerges
549
+
550
+ ### 📋 Debugging Checklist
551
+
552
+ #### When Things Don't Work
553
+
554
+ **Information to Gather:**
555
+
556
+ - [ ] Operating system and version
557
+ - [ ] Node.js and npm versions
558
+ - [ ] PowerShell version (Windows) or Shell version (Mac)
559
+ - [ ] Complete error message and stack trace
560
+ - [ ] Command that was executed
561
+ - [ ] Environment variables and configuration
562
+ - [ ] Recent changes to codebase
563
+
564
+ **Steps to Take:**
565
+
566
+ 1. **Reproduce on other platform** - Does it work on Windows/Mac?
567
+ 2. **Check recent changes** - What changed since it last worked?
568
+ 3. **Validate environment** - Run validation script
569
+ 4. **Compare configurations** - Are configs identical?
570
+ 5. **Test in isolation** - Remove variables one by one
571
+
572
+ ## Team Onboarding Process
573
+
574
+ ### 🎯 New Team Member Checklist
575
+
576
+ #### Week 1: Platform Setup
577
+
578
+ **Day 1: Environment Setup**
579
+
580
+ - [ ] Clone project repository
581
+ - [ ] Run platform-specific onboarding script
582
+ - [ ] Complete environment validation
583
+ - [ ] Set up development tools (VS Code, Git, etc.)
584
+ - [ ] Join communication channels
585
+
586
+ **Day 2: Cross-Platform Awareness**
587
+
588
+ - [ ] Read both platform quick start guides
589
+ - [ ] Understand deployment command equivalents
590
+ - [ ] Review CI/CD pipeline documentation
591
+ - [ ] Learn about platform-specific troubleshooting
592
+
593
+ **Day 3: Development Environment**
594
+
595
+ - [ ] Set up local development environment
596
+ - [ ] Run first successful build
597
+ - [ ] Deploy to development environment
598
+ - [ ] Test health check commands
599
+
600
+ **Day 4: Code Standards and Git**
601
+
602
+ - [ ] Review coding standards document
603
+ - [ ] Set up Git hooks and commit templates
604
+ - [ ] Practice pull request workflow
605
+ - [ ] Complete first code review
606
+
607
+ **Day 5: Team Integration**
608
+
609
+ - [ ] Pair with team member from other platform
610
+ - [ ] Attend cross-platform knowledge sharing session
611
+ - [ ] Complete onboarding feedback survey
612
+ - [ ] Contribute to team documentation
613
+
614
+ #### Week 2: Project Deep Dive
615
+
616
+ **Focus Areas:**
617
+
618
+ - Client business requirements and context
619
+ - Technical architecture and patterns
620
+ - Integration points and external systems
621
+ - Testing strategies and quality processes
622
+ - Deployment procedures and troubleshooting
623
+
624
+ ### 🤝 Buddy System
625
+
626
+ Each new team member is paired with:
627
+
628
+ 1. **Platform Buddy** - Same platform expert for immediate help
629
+ 2. **Cross-Platform Buddy** - Other platform expert for broader perspective
630
+ 3. **Project Buddy** - Experienced team member for business context
631
+
632
+ ### 📚 Training Resources
633
+
634
+ #### Required Reading
635
+
636
+ - [ ] Cross-Platform Team Development Standards (this document)
637
+ - [ ] Platform-specific quick start guide
638
+ - [ ] Project architecture overview
639
+ - [ ] Client requirements and business context
640
+ - [ ] Deployment and CI/CD documentation
641
+
642
+ #### Optional Learning
643
+
644
+ - [ ] Other platform's quick start guide
645
+ - [ ] Advanced debugging techniques
646
+ - [ ] Performance optimization strategies
647
+ - [ ] Security and compliance requirements
648
+ - [ ] Dynamics 365 platform deep dive
649
+
650
+ ## Best Practices and Guidelines
651
+
652
+ ### ✅ Do's
653
+
654
+ #### Development Practices
655
+
656
+ - **Use path.join()** for all file path operations
657
+ - **Test on both platforms** before submitting PR
658
+ - **Document platform differences** when they occur
659
+ - **Share learning** with the team regularly
660
+ - **Validate deployments** on both platforms in CI/CD
661
+
662
+ #### Collaboration Practices
663
+
664
+ - **Rotate pairing partners** across platforms weekly
665
+ - **Include both platforms** in architectural discussions
666
+ - **Share terminal sessions** during troubleshooting
667
+ - **Maintain platform-specific documentation** as first-class citizens
668
+ - **Celebrate platform diversity** as a team strength
669
+
670
+ #### Documentation Practices
671
+
672
+ - **Keep both guides updated** when making changes
673
+ - **Include command equivalents** in all procedural docs
674
+ - **Document platform-specific gotchas** immediately
675
+ - **Create searchable knowledge base** for common issues
676
+ - **Video record complex setup procedures** for both platforms
677
+
678
+ ### ❌ Don'ts
679
+
680
+ #### Development Anti-Patterns
681
+
682
+ - **Don't hardcode file paths** with platform-specific separators
683
+ - **Don't assume single platform** in scripts or documentation
684
+ - **Don't ignore CI failures** on other platforms
685
+ - **Don't commit platform-specific** temporary files
686
+ - **Don't skip cross-platform validation** for "simple" changes
687
+
688
+ #### Collaboration Anti-Patterns
689
+
690
+ - **Don't create platform silos** or exclusive teams
691
+ - **Don't dismiss other platform approaches** without understanding
692
+ - **Don't let one platform dominate** architectural decisions
693
+ - **Don't ignore knowledge sharing** opportunities
694
+ - **Don't assume platform expertise** translates to superiority
695
+
696
+ ### 🎯 Success Metrics
697
+
698
+ #### Team Performance Indicators
699
+
700
+ - **Cross-platform deployment success rate** > 95%
701
+ - **Platform-specific build failures** < 5%
702
+ - **Knowledge sharing sessions attendance** > 80%
703
+ - **Cross-platform code reviews** > 50%
704
+ - **Platform champion availability** < 4 hour response time
705
+
706
+ #### Quality Indicators
707
+
708
+ - **Identical deployment results** across platforms
709
+ - **Consistent development experience** regardless of platform
710
+ - **Comprehensive platform documentation** maintained
711
+ - **Zero platform bias** in architectural decisions
712
+ - **High team satisfaction** with cross-platform workflow
713
+
714
+ ### 🔄 Continuous Improvement
715
+
716
+ #### Monthly Reviews
717
+
718
+ - **Platform-specific challenges** encountered and resolved
719
+ - **Documentation gaps** identified and addressed
720
+ - **Tool improvements** and workflow optimizations
721
+ - **Team satisfaction** and collaboration effectiveness
722
+ - **Knowledge sharing** quality and frequency
723
+
724
+ #### Quarterly Assessments
725
+
726
+ - **Architecture decisions** impact on cross-platform compatibility
727
+ - **CI/CD pipeline** effectiveness and optimization opportunities
728
+ - **Team skills development** in cross-platform competencies
729
+ - **Client satisfaction** with delivery consistency
730
+ - **Technology stack evolution** and platform implications
731
+
732
+ ---
733
+
734
+ This cross-platform team development guide ensures that Windows and Mac developers can work together
735
+ effectively while leveraging the strengths of each platform. Regular updates and team feedback help
736
+ maintain and improve these standards over time.