@jttc/projen-project-types 1.0.0-beta.0 → 1.0.0-beta.10

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 (113) hide show
  1. package/.cz-config.js +83 -43
  2. package/.czrc +1 -1
  3. package/.jsii +4637 -14
  4. package/AGENTS.md +132 -0
  5. package/API.md +31146 -7
  6. package/README.md +197 -29
  7. package/docs/components/cdk8s.md +724 -0
  8. package/docs/components/commitzent.md +261 -0
  9. package/docs/components/k3d.md +456 -0
  10. package/docs/default-configurations.md +267 -0
  11. package/docs/index.md +86 -1
  12. package/docs/project-types/cdk-app.md +481 -0
  13. package/docs/project-types/cdk-library.md +321 -0
  14. package/docs/project-types/cdk8s-app.md +353 -0
  15. package/docs/project-types/cdk8s-library.md +442 -0
  16. package/docs/project-types/nx-monorepo.md +382 -0
  17. package/lib/cdk/cdk-app-project.d.ts +12 -0
  18. package/lib/cdk/cdk-app-project.js +28 -0
  19. package/lib/cdk/cdk-library-project.d.ts +12 -0
  20. package/lib/cdk/cdk-library-project.js +28 -0
  21. package/lib/cdk/cdk8s-app-project.d.ts +14 -0
  22. package/lib/cdk/cdk8s-app-project.js +54 -0
  23. package/lib/cdk/cdk8s-library-project.d.ts +14 -0
  24. package/lib/cdk/cdk8s-library-project.js +50 -0
  25. package/lib/cdk/index.d.ts +5 -0
  26. package/lib/cdk/index.js +22 -0
  27. package/lib/cdk/interfaces/cdk-app-options.d.ts +7 -0
  28. package/lib/cdk/interfaces/cdk-app-options.js +3 -0
  29. package/lib/cdk/interfaces/cdk-library-options.d.ts +7 -0
  30. package/lib/cdk/interfaces/cdk-library-options.js +3 -0
  31. package/lib/cdk/interfaces/cdk8s-app-options.d.ts +18 -0
  32. package/lib/cdk/interfaces/cdk8s-app-options.js +3 -0
  33. package/lib/cdk/interfaces/cdk8s-library-options.d.ts +8 -0
  34. package/lib/cdk/interfaces/cdk8s-library-options.js +3 -0
  35. package/lib/cdk/interfaces/index.d.ts +5 -0
  36. package/lib/cdk/interfaces/index.js +22 -0
  37. package/lib/cdk/interfaces/jsii-options.d.ts +7 -0
  38. package/lib/cdk/interfaces/jsii-options.js +3 -0
  39. package/lib/cdk/interfaces/project-global-options.d.ts +15 -0
  40. package/lib/cdk/interfaces/project-global-options.js +3 -0
  41. package/lib/cdk/jsii-project.d.ts +12 -0
  42. package/lib/cdk/jsii-project.js +24 -0
  43. package/lib/common/common-options.d.ts +40 -0
  44. package/lib/common/common-options.js +110 -0
  45. package/lib/components/agents/agents.d.ts +21 -0
  46. package/lib/components/agents/agents.js +476 -0
  47. package/lib/components/agents/index.d.ts +1 -0
  48. package/lib/components/agents/index.js +18 -0
  49. package/lib/components/cdk8s/cdk8s.d.ts +11 -0
  50. package/lib/components/cdk8s/cdk8s.js +124 -0
  51. package/lib/components/cdk8s/index.d.ts +2 -0
  52. package/lib/components/cdk8s/index.js +19 -0
  53. package/lib/components/cdk8s/interfaces/Cdk8s.d.ts +34 -0
  54. package/lib/components/cdk8s/interfaces/Cdk8s.js +12 -0
  55. package/lib/components/cdk8s/main-library.ts.template +35 -0
  56. package/lib/components/cdk8s/main.test.ts.template +3 -0
  57. package/lib/components/cdk8s/main.ts.template +38 -0
  58. package/lib/components/commitzent/commitzent.d.ts +8 -0
  59. package/lib/components/commitzent/commitzent.js +100 -0
  60. package/lib/components/commitzent/index.d.ts +2 -0
  61. package/lib/components/commitzent/index.js +19 -0
  62. package/lib/components/commitzent/interfaces/Icommitzent.d.ts +34 -0
  63. package/lib/components/commitzent/interfaces/Icommitzent.js +3 -0
  64. package/lib/components/index.d.ts +4 -0
  65. package/lib/components/index.js +21 -0
  66. package/lib/components/k3d/index.d.ts +3 -0
  67. package/lib/components/k3d/index.js +20 -0
  68. package/lib/components/k3d/k3d.d.ts +33 -0
  69. package/lib/components/k3d/k3d.js +109 -0
  70. package/lib/components/k3d/k3dBase.d.ts +4 -0
  71. package/lib/components/k3d/k3dBase.js +23 -0
  72. package/lib/components/k3d/types.d.ts +64 -0
  73. package/lib/components/k3d/types.js +8 -0
  74. package/lib/index.d.ts +5 -3
  75. package/lib/index.js +20 -12
  76. package/lib/monorepo/components/NxConfiguration.d.ts +17 -0
  77. package/lib/monorepo/components/NxConfiguration.js +105 -0
  78. package/lib/monorepo/components/index.d.ts +2 -0
  79. package/lib/monorepo/components/index.js +19 -0
  80. package/lib/monorepo/components/publish-release.d.ts +5 -0
  81. package/lib/monorepo/components/publish-release.js +80 -0
  82. package/lib/monorepo/index.d.ts +3 -0
  83. package/lib/monorepo/index.js +20 -0
  84. package/lib/monorepo/interfaces/Nx.d.ts +130 -0
  85. package/lib/monorepo/interfaces/Nx.js +3 -0
  86. package/lib/monorepo/interfaces/NxMonorepo.d.ts +3 -0
  87. package/lib/monorepo/interfaces/NxMonorepo.js +3 -0
  88. package/lib/monorepo/interfaces/index.d.ts +2 -0
  89. package/lib/monorepo/interfaces/index.js +19 -0
  90. package/lib/monorepo/monorepo.d.ts +16 -0
  91. package/lib/monorepo/monorepo.js +131 -0
  92. package/lib/terraform/components/index.d.ts +2 -0
  93. package/lib/terraform/components/index.js +19 -0
  94. package/lib/terraform/components/terraform-deploy-github-workflow.d.ts +26 -0
  95. package/lib/terraform/components/terraform-deploy-github-workflow.js +92 -0
  96. package/lib/terraform/components/terraform-plan-github-workflow.d.ts +31 -0
  97. package/lib/terraform/components/terraform-plan-github-workflow.js +155 -0
  98. package/lib/terraform/index.d.ts +5 -0
  99. package/lib/terraform/index.js +22 -0
  100. package/lib/terraform/providers/hetzner-provider.d.ts +105 -0
  101. package/lib/terraform/providers/hetzner-provider.js +83 -0
  102. package/lib/terraform/providers/index.d.ts +2 -0
  103. package/lib/terraform/providers/index.js +19 -0
  104. package/lib/terraform/providers/provider-strategy.d.ts +44 -0
  105. package/lib/terraform/providers/provider-strategy.js +38 -0
  106. package/lib/terraform/terraform-base-project.d.ts +38 -0
  107. package/lib/terraform/terraform-base-project.js +97 -0
  108. package/lib/terraform/terraform-module-project.d.ts +24 -0
  109. package/lib/terraform/terraform-module-project.js +77 -0
  110. package/lib/terraform/terraform-stack-project.d.ts +28 -0
  111. package/lib/terraform/terraform-stack-project.js +83 -0
  112. package/mkdocs.yml +12 -0
  113. package/package.json +14 -7
@@ -0,0 +1,267 @@
1
+ # Default Configurations
2
+
3
+ This document describes the default configurations applied to all project types in this package.
4
+
5
+ ## Prettier Configuration
6
+
7
+ All projects include Prettier with the following default settings:
8
+
9
+ ### Settings Applied
10
+
11
+ ```json title=".prettierrc.json" linenums="1"
12
+ {
13
+ "trailingComma": "es5",
14
+ "singleQuote": true,
15
+ "bracketSpacing": true,
16
+ "semi": true
17
+ }
18
+ ```
19
+
20
+ ### Rationale
21
+
22
+ - **`trailingComma: "es5"`**: Ensures consistent trailing commas in objects and arrays, making diffs cleaner
23
+ - **`singleQuote: true`**: Uses single quotes for strings, which is common in JavaScript/TypeScript projects
24
+ - **`bracketSpacing: true`**: Adds spaces inside object literal braces `{ foo: bar }`
25
+ - **`semi: true`**: Always includes semicolons for statement termination
26
+
27
+ ### Customization
28
+
29
+ You can override these settings by providing custom `prettierOptions`:
30
+
31
+ ```typescript title="Custom Prettier Configuration" linenums="1" hl_lines="5 6 7 8"
32
+ const project = new ProjectType({
33
+ // ... other options
34
+ prettierOptions: {
35
+ settings: {
36
+ singleQuote: false,
37
+ semi: false,
38
+ tabWidth: 4,
39
+ printWidth: 120,
40
+ },
41
+ },
42
+ });
43
+ ```
44
+
45
+ **Highlighted lines explanation:**
46
+
47
+ - **Line 5**: Use double quotes instead of single quotes
48
+ - **Line 6**: Omit semicolons for cleaner code
49
+ - **Line 7**: Use 4 spaces for indentation instead of 2
50
+ - **Line 8**: Allow longer line length
51
+
52
+ ### Disabling Prettier
53
+
54
+ To completely disable Prettier:
55
+
56
+ ```typescript title="Disable Prettier" linenums="1" hl_lines="3"
57
+ const project = new ProjectType({
58
+ // ... other options
59
+ prettier: false,
60
+ });
61
+ ```
62
+
63
+ **Highlighted line explanation:**
64
+
65
+ - **Line 3**: No `.prettierrc.json` file will be created
66
+
67
+ ## VSCode Configuration
68
+
69
+ All projects include VSCode workspace configuration when enabled (default behavior).
70
+
71
+ ### Settings Applied
72
+
73
+ ```json title=".vscode/settings.json" linenums="1"
74
+ {
75
+ "editor.formatOnSave": true,
76
+ "editor.indentSize": 2,
77
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
78
+ "eslint.nodePath": "./node_modules",
79
+ "eslint.useFlatConfig": false
80
+ }
81
+ ```
82
+
83
+ ### Recommended Extensions
84
+
85
+ The following extensions are automatically recommended for all projects:
86
+
87
+ ```json title=".vscode/extensions.json" linenums="1"
88
+ {
89
+ "recommendations": [
90
+ "amazonwebservices.aws-toolkit-vscode",
91
+ "DanielThielking.aws-cloudformation-yaml",
92
+ "ms-azuretools.vscode-containers",
93
+ "dbaeumer.vscode-eslint",
94
+ "esbenp.prettier-vscode",
95
+ "mhutchie.git-graph",
96
+ "github.vscode-github-actions",
97
+ "GitHub.vscode-pull-request-github",
98
+ "eamodio.gitlens",
99
+ "spmeesseman.vscode-taskexplorer",
100
+ "wayou.vscode-todo-highlight",
101
+ "vscode-icons-team.vscode-icons",
102
+ "ms-vscode-remote.vscode-remote-extensionpack"
103
+ ]
104
+ }
105
+ ```
106
+
107
+ #### Development Tools
108
+ - **AWS Toolkit for VS Code** (`amazonwebservices.aws-toolkit-vscode`)
109
+ - **CloudFormation YAML** (`DanielThielking.aws-cloudformation-yaml`)
110
+ - **Docker** (`ms-azuretools.vscode-containers`)
111
+
112
+ #### Code Quality & Formatting
113
+ - **ESLint** (`dbaeumer.vscode-eslint`)
114
+ - **Prettier** (`esbenp.prettier-vscode`)
115
+
116
+ #### Git & Version Control
117
+ - **Git Graph** (`mhutchie.git-graph`)
118
+ - **GitHub Actions** (`github.vscode-github-actions`)
119
+ - **GitHub Pull Requests** (`GitHub.vscode-pull-request-github`)
120
+ - **GitLens** (`eamodio.gitlens`)
121
+
122
+ #### Productivity
123
+ - **Task Explorer** (`spmeesseman.vscode-taskexplorer`)
124
+ - **TODO Highlight** (`wayou.vscode-todo-highlight`)
125
+ - **VSCode Icons** (`vscode-icons-team.vscode-icons`)
126
+ - **Remote Development Extension Pack** (`ms-vscode-remote.vscode-remote-extensionpack`)
127
+
128
+ ### Rationale
129
+
130
+ - **Format on save**: Automatically formats code when saving, ensuring consistency
131
+ - **Prettier as default formatter**: Uses the configured prettier settings
132
+ - **ESLint integration**: Provides real-time linting and error detection
133
+ - **AWS-focused extensions**: Optimized for AWS and cloud development workflows
134
+ - **Git workflow tools**: Enhanced git management and collaboration features
135
+
136
+ ### Customization
137
+
138
+ You can disable VSCode configuration entirely:
139
+
140
+ ```typescript
141
+ const project = new ProjectType({
142
+ // ... other options
143
+ vscode: false,
144
+ });
145
+ ```
146
+
147
+ Currently, there's no built-in way to customize individual VSCode settings or extensions, but this may be added in future versions.
148
+
149
+ ## Configuration Behavior
150
+
151
+ ### Default Behavior (Recommended)
152
+
153
+ When no explicit configuration is provided:
154
+
155
+ ```typescript title="Default Configuration" linenums="1"
156
+ const project = new ProjectType({
157
+ name: 'my-project',
158
+ // ... other required options
159
+ // prettier: undefined (defaults to true)
160
+ // vscode: undefined (defaults to true)
161
+ });
162
+ ```
163
+
164
+ **Result**: Both Prettier and VSCode configurations are applied with default settings.
165
+
166
+ ### Mixed Configurations
167
+
168
+ You can mix and match configurations:
169
+
170
+ === "Prettier Only"
171
+
172
+ ```typescript linenums="1" title="Prettier Only Configuration" hl_lines="3 4"
173
+ const project = new ProjectType({
174
+ // ... other options
175
+ prettier: true,
176
+ vscode: false,
177
+ });
178
+ ```
179
+
180
+ **Highlighted lines explanation:**
181
+
182
+ - **Line 3**: Enable prettier with default settings
183
+ - **Line 4**: No VSCode configuration files created
184
+
185
+ === "VSCode Only"
186
+
187
+ ```typescript linenums="1" title="VSCode Only Configuration" hl_lines="3 4"
188
+ const project = new ProjectType({
189
+ // ... other options
190
+ prettier: false,
191
+ vscode: true,
192
+ });
193
+ ```
194
+
195
+ **Highlighted lines explanation:**
196
+
197
+ - **Line 3**: No prettier configuration files created
198
+ - **Line 4**: Enable VSCode with default settings
199
+
200
+ === "Both Disabled"
201
+
202
+ ```typescript linenums="1" title="Minimal Configuration" hl_lines="3 4"
203
+ const project = new ProjectType({
204
+ // ... other options
205
+ prettier: false,
206
+ vscode: false,
207
+ });
208
+ ```
209
+
210
+ **Highlighted lines explanation:**
211
+
212
+ - **Line 3**: No prettier files
213
+ - **Line 4**: No VSCode files
214
+
215
+ ## Files Created
216
+
217
+ ### When Prettier is Enabled
218
+
219
+ - `.prettierrc.json` - Prettier configuration file
220
+ - `.prettierignore` - Files to ignore during formatting (if applicable)
221
+
222
+ ### When VSCode is Enabled
223
+
224
+ - `.vscode/settings.json` - Workspace settings
225
+ - `.vscode/extensions.json` - Recommended extensions
226
+
227
+ ## Best Practices
228
+
229
+ ### 1. Stick with Defaults
230
+
231
+ The default configurations have been carefully chosen for optimal development experience across teams. Unless you have specific requirements, it's recommended to use the defaults.
232
+
233
+ ### 2. Team Consistency
234
+
235
+ If you customize configurations, ensure all team members are aware of the changes and update their local environments accordingly.
236
+
237
+ ### 3. Document Customizations
238
+
239
+ If you deviate from defaults, document the reasons in your project's README or contributing guidelines.
240
+
241
+ ### 4. Extension Installation
242
+
243
+ Encourage team members to install the recommended VSCode extensions for the best development experience.
244
+
245
+ ## Future Enhancements
246
+
247
+ Planned improvements to the default configurations:
248
+
249
+ - **ESLint default configuration**: Common ESLint rules for TypeScript projects
250
+ - **Jest configuration**: Default test setup and configuration
251
+ - **GitHub Actions**: Standard CI/CD workflows
252
+ - **Dependabot**: Automated dependency updates
253
+ - **Customizable VSCode settings**: Allow overriding individual settings and extensions
254
+
255
+ ## Contributing
256
+
257
+ To propose changes to the default configurations:
258
+
259
+ 1. Open an issue describing the proposed change and rationale
260
+ 2. Discuss with maintainers and community
261
+ 3. Submit a pull request with the changes
262
+ 4. Update documentation and tests
263
+ 5. Ensure backward compatibility
264
+
265
+ ---
266
+
267
+ *These configurations are maintained by [Jump to the Cloud](https://jumptothecloud.tech) and are designed to provide productive development environments out of the box.*
package/docs/index.md CHANGED
@@ -29,7 +29,92 @@ While projen provides excellent base project types, real-world projects often re
29
29
 
30
30
  ## Getting Started
31
31
 
32
- More detailed documentation and project types will be added as features are developed. Stay tuned for updates!
32
+ Choose from our available project types and components:
33
+
34
+ ### 📦 Project Types
35
+
36
+ | Project Type | Description | Use Case | Quick Start |
37
+ |--------------|-------------|----------|-------------|
38
+ | **[CDK Library](project-types/cdk-library.md)** | AWS CDK construct libraries | Creating reusable CDK constructs | `npx projen new --from @jttc/projen-project-types cdk-library` |
39
+ | **[CDK App](project-types/cdk-app.md)** | AWS CDK applications | Building deployable AWS infrastructure | `npx projen new --from @jttc/projen-project-types cdk-app` |
40
+ | **[CDK8s Library](project-types/cdk8s-library.md)** | CDK8s construct libraries with Kubernetes support | Creating reusable Kubernetes constructs | `npx projen new --from @jttc/projen-project-types cdk8s-library` |
41
+ | **[CDK8s App](project-types/cdk8s-app.md)** | CDK8s applications with Kubernetes support | Building deployable Kubernetes applications | `npx projen new --from @jttc/projen-project-types cdk8s-app` |
42
+ | **[NX Monorepo](project-types/nx-monorepo.md)** | NX monorepo workspace | Managing multiple related packages in a single repository | `npx projen new --from @jttc/projen-project-types nx-monorepo` |
43
+
44
+ ### 🧩 Components
45
+
46
+ | Component | Description | Integration | Documentation |
47
+ |-----------|-------------|-------------|---------------|
48
+ | **[CDK8s Component](components/cdk8s.md)** | Kubernetes manifest generation with CDK8s | Can be added to any project type | [View Details](components/cdk8s.md) |
49
+ | **[K3d Component](components/k3d.md)** | Local Kubernetes development with K3d | Included in CDK8s apps, can be added to any project | [View Details](components/k3d.md) |
50
+ | **[Commitzent Component](components/commitzent.md)** | Conventional Commits with interactive prompts | Included by default in all project types | [View Details](components/commitzent.md) |
51
+
52
+ ### ⚙️ Common Features
53
+
54
+ All project types include:
55
+
56
+ - **[Prettier Configuration](default-configurations.md#prettier-configuration)** - Consistent code formatting
57
+ - **[VSCode Integration](default-configurations.md#vscode-configuration)** - Optimized editor experience
58
+ - **[Commitzent Component](components/commitzent.md)** - Conventional commits with interactive prompts
59
+ - **TypeScript Setup** - Best practices and configurations
60
+ - **Testing Framework** - Jest with appropriate configurations
61
+ - **CI/CD Ready** - GitHub Actions workflows included
62
+
63
+ !!! tip "Getting Started"
64
+ After running any project creation command, follow the interactive prompts to configure your project, then customize further by editing `.projenrc.ts`
65
+
66
+ ## Quick Examples
67
+
68
+ ### CDK Library Example
69
+ ```typescript title=".projenrc.ts"
70
+ import { CdkLibrary } from '@jttc/projen-project-types';
71
+
72
+ const project = new CdkLibrary({
73
+ name: 'my-awesome-constructs',
74
+ author: 'Your Name',
75
+ authorAddress: 'your@email.com',
76
+ repositoryUrl: 'https://github.com/yourusername/my-awesome-constructs.git',
77
+ cdkVersion: '2.1.0',
78
+ defaultReleaseBranch: 'main',
79
+ });
80
+
81
+ project.synth();
82
+ ```
83
+
84
+ ### CDK8s Library Example
85
+ ```typescript title=".projenrc.ts"
86
+ import { Cdk8sLibrary, K8sVersion } from '@jttc/projen-project-types';
87
+
88
+ const project = new Cdk8sLibrary({
89
+ name: 'my-k8s-constructs',
90
+ author: 'Your Name',
91
+ authorAddress: 'your@email.com',
92
+ repositoryUrl: 'https://github.com/yourusername/my-k8s-constructs.git',
93
+ cdkVersion: '2.1.0',
94
+ defaultReleaseBranch: 'main',
95
+ k8sVersion: K8sVersion.V1_31,
96
+ });
97
+
98
+ project.synth();
99
+ ```
100
+
101
+ ## Architecture
102
+
103
+ This project follows a modular architecture:
104
+
105
+ - **Project Types**: Complete project templates with full configuration
106
+ - **Components**: Reusable functionality that can be added to any project
107
+ - **Common Configurations**: Shared settings applied across all project types
108
+
109
+ ## Roadmap
110
+
111
+ Future project types and components planned:
112
+
113
+ - **Next.js Projects** - Full-stack TypeScript applications
114
+ - **Node.js APIs** - REST and GraphQL API templates
115
+ - **React Libraries** - Component library templates
116
+ - **Terraform Modules** - Infrastructure as Code templates
117
+ - **Docker Components** - Containerization support
33
118
 
34
119
  ## Contributing
35
120