@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
package/README.md CHANGED
@@ -1,55 +1,223 @@
1
- # Projen Project Types
1
+ # πŸ—οΈ Projen Project Types
2
2
 
3
- A collection of opinionated custom project templates for [projen.io](https://projen.io).
3
+ > **Opinionated project templates for [projen.io](https://projen.io) that accelerate development with best practices built-in**
4
4
 
5
- ## Overview
5
+ [![npm version](https://img.shields.io/npm/v/@jttc/projen-project-types)](https://www.npmjs.com/package/@jttc/projen-project-types)
6
+ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
7
+ [![Documentation](https://img.shields.io/badge/docs-mkdocs-blue)](https://jumptothecloud.github.io/projen-project-types/)
8
+ [![GitHub](https://img.shields.io/github/stars/JumpToTheCloud/projen-project-types?style=social)](https://github.com/JumpToTheCloud/projen-project-types)
6
9
 
7
- This repository provides curated project types that extend projen's capabilities with opinionated configurations and best practices. These project types are designed to accelerate development workflows while maintaining consistency and quality across projects.
10
+ ## ✨ What is this?
8
11
 
9
- ## Requirements
12
+ This package provides **ready-to-use project templates** that extend [projen](https://projen.io) with opinionated configurations, saving you hours of setup time while ensuring consistency and best practices across your projects.
10
13
 
11
- ### Documentation
14
+ Instead of manually configuring Prettier, ESLint, VSCode settings, CI/CD pipelines, and other tools for every project, these templates give you everything pre-configured and battle-tested.
12
15
 
13
- This project uses MkDocs for documentation. To work with the documentation locally, you need to install the following dependencies:
16
+ ## πŸš€ Quick Start
14
17
 
15
18
  ```bash
16
- # Install MkDocs and Material theme
17
- pip3 install mkdocs mkdocs-material
19
+ # Create a CDK construct library
20
+ npx projen new --from @jttc/projen-project-types cdk-library
18
21
 
19
- # Install Mike for documentation versioning
20
- pip3 install mike
22
+ # Create a CDK application
23
+ npx projen new --from @jttc/projen-project-types cdk-app
24
+
25
+ # Create a CDK8s construct library with Kubernetes support
26
+ npx projen new --from @jttc/projen-project-types cdk8s-library
27
+
28
+ # Create a CDK8s application with Kubernetes support
29
+ npx projen new --from @jttc/projen-project-types cdk8s-app
30
+
31
+ # Create an NX monorepo workspace
32
+ npx projen new --from @jttc/projen-project-types nx-monorepo
21
33
  ```
22
34
 
23
- ### Development Commands
35
+ ## πŸ“¦ Available Project Types
36
+
37
+ | Project Type | Description | Best For |
38
+ |--------------|-------------|----------|
39
+ | **[CDK Library](https://jumptothecloud.github.io/projen-project-types/project-types/cdk-library/)** | AWS CDK construct libraries | Creating reusable AWS infrastructure components |
40
+ | **[CDK App](https://jumptothecloud.github.io/projen-project-types/project-types/cdk-app/)** | AWS CDK applications | Building and deploying AWS infrastructure |
41
+ | **[CDK8s Library](https://jumptothecloud.github.io/projen-project-types/project-types/cdk8s-library/)** | CDK8s libraries with Kubernetes | Creating reusable Kubernetes constructs |
42
+ | **[CDK8s App](https://jumptothecloud.github.io/projen-project-types/project-types/cdk8s-app/)** | CDK8s applications with Kubernetes | Building and deploying Kubernetes applications |
43
+ | **[NX Monorepo](https://jumptothecloud.github.io/projen-project-types/project-types/nx-monorepo/)** | NX monorepo workspace | Managing multiple related packages in a single repository |
44
+
45
+ ## 🧩 Available Components
46
+
47
+ | Component | Description | Documentation |
48
+ |-----------|-------------|---------------|
49
+ | **[CDK8s Component](https://jumptothecloud.github.io/projen-project-types/components/cdk8s/)** | Kubernetes manifest generation with TypeScript | Add to any project type |
50
+ | **[K3d Component](https://jumptothecloud.github.io/projen-project-types/components/k3d/)** | Local Kubernetes development with K3d | Included in CDK8s apps, add to any project |
51
+ | **[Commitzent Component](https://jumptothecloud.github.io/projen-project-types/components/commitzent/)** | Conventional Commits with interactive prompts | Included by default |
52
+
53
+ ## ⚑ What You Get Out of the Box
54
+
55
+ Every project template includes:
56
+
57
+ - 🎨 **[Prettier](https://jumptothecloud.github.io/projen-project-types/default-configurations/#prettier-configuration)** - Consistent code formatting
58
+ - πŸ”§ **[VSCode Setup](https://jumptothecloud.github.io/projen-project-types/default-configurations/#vscode-configuration)** - Optimized editor experience with recommended extensions
59
+ - πŸ“‹ **[Commitzent](https://jumptothecloud.github.io/projen-project-types/components/commitzent/)** - Conventional commits with interactive prompts
60
+ - πŸ“ **TypeScript** - Best practices and configurations
61
+ - πŸ§ͺ **Jest Testing** - Ready-to-use testing framework
62
+ - 🚒 **CI/CD Pipelines** - GitHub Actions workflows
63
+ - πŸ“š **Documentation** - Auto-generated API docs
64
+ - πŸ”’ **Security** - Dependabot and security scanning
65
+
66
+ ## πŸ’‘ Example Usage
67
+
68
+ ### CDK Library with Custom Configuration
69
+
70
+ ```typescript
71
+ // .projenrc.ts
72
+ import { CdkLibrary } from '@jttc/projen-project-types';
73
+
74
+ const project = new CdkLibrary({
75
+ name: 'my-awesome-constructs',
76
+ author: 'Your Name',
77
+ authorAddress: 'your@email.com',
78
+ repositoryUrl: 'https://github.com/yourusername/my-awesome-constructs.git',
79
+ cdkVersion: '2.1.0',
80
+ defaultReleaseBranch: 'main',
81
+
82
+ // Customize as needed
83
+ prettier: true,
84
+ vscode: true,
85
+ });
86
+
87
+ project.synth();
88
+ ```
24
89
 
25
- Once the requirements are installed, you can use the following commands:
90
+ ### CDK8s Library with Kubernetes Support
91
+
92
+ ```typescript
93
+ // .projenrc.ts
94
+ import { Cdk8sLibrary, K8sVersion } from '@jttc/projen-project-types';
95
+
96
+ const project = new Cdk8sLibrary({
97
+ name: 'my-k8s-constructs',
98
+ author: 'Your Name',
99
+ authorAddress: 'your@email.com',
100
+ repositoryUrl: 'https://github.com/yourusername/my-k8s-constructs.git',
101
+ cdkVersion: '2.1.0',
102
+ defaultReleaseBranch: 'main',
103
+
104
+ // CDK8s specific options
105
+ k8sVersion: K8sVersion.V1_31,
106
+ appPath: 'src/k8s',
107
+ imports: ['cert-manager@v1.13.0'],
108
+ });
109
+
110
+ project.synth();
111
+ ```
112
+
113
+ ## πŸ—οΈ Architecture
114
+
115
+ ```
116
+ projen-project-types/
117
+ β”œβ”€β”€ πŸ“ Project Types/ # Complete project templates
118
+ β”‚ β”œβ”€β”€ CDK Library # AWS CDK construct libraries
119
+ β”‚ β”œβ”€β”€ CDK App # AWS CDK applications
120
+ β”‚ └── CDK8s Library # Kubernetes + CDK8s libraries
121
+ β”œβ”€β”€ 🧩 Components/ # Reusable functionality
122
+ β”‚ └── CDK8s Component # Kubernetes manifest generation
123
+ └── βš™οΈ Common Config/ # Shared configurations
124
+ β”œβ”€β”€ Prettier # Code formatting
125
+ β”œβ”€β”€ VSCode # Editor setup
126
+ └── TypeScript # Language configuration
127
+ ```
128
+
129
+ ## πŸ“š Documentation
130
+
131
+ Comprehensive documentation is available at: **[jumptothecloud.github.io/projen-project-types](https://jumptothecloud.github.io/projen-project-types/)**
132
+
133
+ - **[Getting Started Guide](https://jumptothecloud.github.io/projen-project-types/)**
134
+ - **[Project Types](https://jumptothecloud.github.io/projen-project-types/project-types/cdk-library/)**
135
+ - **[Components](https://jumptothecloud.github.io/projen-project-types/components/cdk8s/)**
136
+ - **[Default Configurations](https://jumptothecloud.github.io/projen-project-types/default-configurations/)**
137
+
138
+ ## πŸ› οΈ Development
139
+
140
+ ### Prerequisites
141
+
142
+ - **Node.js** (v18+)
143
+ - **Yarn** package manager
144
+ - **Python 3** (for documentation)
145
+
146
+ ### Setup
26
147
 
27
148
  ```bash
28
- # Build the documentation
29
- yarn docs:build
149
+ # Clone the repository
150
+ git clone https://github.com/JumpToTheCloud/projen-project-types.git
151
+ cd projen-project-types
30
152
 
31
- # Serve the documentation locally (with live reload)
153
+ # Install dependencies
154
+ yarn install
155
+
156
+ # Run tests
157
+ yarn test
158
+
159
+ # Build the project
160
+ yarn build
161
+ ```
162
+
163
+ ### Documentation Development
164
+
165
+ ```bash
166
+ # Install documentation dependencies
167
+ pip3 install mkdocs mkdocs-material mike
168
+
169
+ # Serve documentation locally with hot reload
32
170
  yarn docs:serve
171
+
172
+ # Build documentation
173
+ yarn docs:build
33
174
  ```
34
175
 
35
- The documentation will be available at `http://localhost:8000` when using the serve command.
176
+ The documentation will be available at `http://localhost:8099` when using the serve command.
177
+
178
+ ## πŸ—ΊοΈ Roadmap
179
+
180
+ Planned features and project types:
181
+
182
+ - **Next.js Projects** - Full-stack TypeScript applications
183
+ - **Node.js APIs** - REST and GraphQL API templates
184
+ - **React Libraries** - Component library templates
185
+ - **Terraform Modules** - Infrastructure as Code templates
186
+ - **Docker Components** - Containerization support
187
+ - **Serverless Functions** - AWS Lambda and other FaaS templates
188
+
189
+ ## 🀝 Contributing
190
+
191
+ We welcome contributions! Here's how to get started:
192
+
193
+ 1. **Fork the repository**
194
+ 2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
195
+ 3. **Make your changes** and add tests
196
+ 4. **Run tests**: `yarn test`
197
+ 5. **Update documentation** if needed
198
+ 6. **Commit your changes**: `git commit -m 'Add amazing feature'`
199
+ 7. **Push to the branch**: `git push origin feature/amazing-feature`
200
+ 8. **Open a Pull Request**
201
+
202
+ ### Contribution Guidelines
36
203
 
37
- ## Features
204
+ - All new features should include tests
205
+ - Documentation should be updated for new project types or components
206
+ - Follow the existing code style and patterns
207
+ - Ensure all CI checks pass
38
208
 
39
- - πŸš€ **Ready-to-use project templates** for various use cases
40
- - πŸ“¦ **Integrated tooling** with sensible defaults
41
- - πŸ”§ **Customizable configurations** to fit your needs
42
- - πŸ“š **Comprehensive documentation** with MkDocs Material theme
43
- - πŸ”„ **Continuous integration** templates included
209
+ ## ❓ Support
44
210
 
45
- ## Getting Started
211
+ - **Documentation**: [jumptothecloud.github.io/projen-project-types](https://jumptothecloud.github.io/projen-project-types/)
212
+ - **Issues**: [GitHub Issues](https://github.com/JumpToTheCloud/projen-project-types/issues)
213
+ - **Discussions**: [GitHub Discussions](https://github.com/JumpToTheCloud/projen-project-types/discussions)
46
214
 
47
- More detailed documentation and project types will be added as features are developed. Visit the documentation site for the latest information.
215
+ ## πŸ“„ License
48
216
 
49
- ## Contributing
217
+ This project is licensed under the **Apache 2.0 License** - see the [LICENSE](LICENSE) file for details.
50
218
 
51
- Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests to help improve these project types.
219
+ ## 🌟 Credits
52
220
 
53
- ## License
221
+ Built with ❀️ by the [JumpToTheCloud](https://github.com/JumpToTheCloud) team.
54
222
 
55
- This project is licensed under the terms specified in the LICENSE file.
223
+ Special thanks to the [projen](https://projen.io) community for creating such an amazing tool for project configuration management.