container-superposition 0.1.1

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 (327) hide show
  1. package/README.md +843 -0
  2. package/dist/scripts/init.d.ts +3 -0
  3. package/dist/scripts/init.d.ts.map +1 -0
  4. package/dist/scripts/init.js +1190 -0
  5. package/dist/scripts/init.js.map +1 -0
  6. package/dist/scripts/migrate-to-manifests.d.ts +12 -0
  7. package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
  8. package/dist/scripts/migrate-to-manifests.js +230 -0
  9. package/dist/scripts/migrate-to-manifests.js.map +1 -0
  10. package/dist/tool/questionnaire/composer.d.ts +6 -0
  11. package/dist/tool/questionnaire/composer.d.ts.map +1 -0
  12. package/dist/tool/questionnaire/composer.js +1232 -0
  13. package/dist/tool/questionnaire/composer.js.map +1 -0
  14. package/dist/tool/readme/markdown-parser.d.ts +30 -0
  15. package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
  16. package/dist/tool/readme/markdown-parser.js +139 -0
  17. package/dist/tool/readme/markdown-parser.js.map +1 -0
  18. package/dist/tool/readme/readme-generator.d.ts +9 -0
  19. package/dist/tool/readme/readme-generator.d.ts.map +1 -0
  20. package/dist/tool/readme/readme-generator.js +422 -0
  21. package/dist/tool/readme/readme-generator.js.map +1 -0
  22. package/dist/tool/schema/custom-loader.d.ts +17 -0
  23. package/dist/tool/schema/custom-loader.d.ts.map +1 -0
  24. package/dist/tool/schema/custom-loader.js +149 -0
  25. package/dist/tool/schema/custom-loader.js.map +1 -0
  26. package/dist/tool/schema/overlay-loader.d.ts +47 -0
  27. package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
  28. package/dist/tool/schema/overlay-loader.js +252 -0
  29. package/dist/tool/schema/overlay-loader.js.map +1 -0
  30. package/dist/tool/schema/types.d.ts +212 -0
  31. package/dist/tool/schema/types.d.ts.map +1 -0
  32. package/dist/tool/schema/types.js +5 -0
  33. package/dist/tool/schema/types.js.map +1 -0
  34. package/docs/README.md +308 -0
  35. package/docs/architecture.md +233 -0
  36. package/docs/creating-overlays.md +549 -0
  37. package/docs/custom-patches.md +540 -0
  38. package/docs/dependencies.md +279 -0
  39. package/docs/examples/custom-patches-example.md +85 -0
  40. package/docs/examples.md +576 -0
  41. package/docs/messaging-comparison.md +265 -0
  42. package/docs/messaging-quick-start.md +385 -0
  43. package/docs/observability-workflow.md +537 -0
  44. package/docs/overlay-manifest-refactoring.md +214 -0
  45. package/docs/overlay-metadata-archive.md +54 -0
  46. package/docs/overlays.md +523 -0
  47. package/docs/presets-architecture.md +498 -0
  48. package/docs/presets.md +366 -0
  49. package/docs/publishing.md +476 -0
  50. package/docs/quick-reference.md +326 -0
  51. package/docs/ux.md +170 -0
  52. package/features/README.md +85 -0
  53. package/features/cross-distro-packages/README.md +146 -0
  54. package/features/cross-distro-packages/devcontainer-feature.json +20 -0
  55. package/features/cross-distro-packages/install.sh +58 -0
  56. package/features/local-secrets-manager/devcontainer-feature.json +18 -0
  57. package/features/local-secrets-manager/install.sh +127 -0
  58. package/features/project-scaffolder/devcontainer-feature.json +24 -0
  59. package/features/project-scaffolder/install.sh +100 -0
  60. package/features/team-conventions/devcontainer-feature.json +24 -0
  61. package/features/team-conventions/install.sh +93 -0
  62. package/overlays/.registry/README.md +14 -0
  63. package/overlays/.registry/base-images.yml +26 -0
  64. package/overlays/.registry/base-templates.yml +7 -0
  65. package/overlays/README.md +155 -0
  66. package/overlays/alertmanager/.env.example +5 -0
  67. package/overlays/alertmanager/README.md +465 -0
  68. package/overlays/alertmanager/alert-rules.yml +56 -0
  69. package/overlays/alertmanager/alertmanager.yml +42 -0
  70. package/overlays/alertmanager/devcontainer.patch.json +12 -0
  71. package/overlays/alertmanager/docker-compose.yml +20 -0
  72. package/overlays/alertmanager/overlay.yml +17 -0
  73. package/overlays/alertmanager/setup.sh +53 -0
  74. package/overlays/alertmanager/verify.sh +31 -0
  75. package/overlays/aws-cli/README.md +473 -0
  76. package/overlays/aws-cli/devcontainer.patch.json +13 -0
  77. package/overlays/aws-cli/overlay.yml +13 -0
  78. package/overlays/azure-cli/README.md +551 -0
  79. package/overlays/azure-cli/devcontainer.patch.json +8 -0
  80. package/overlays/azure-cli/overlay.yml +13 -0
  81. package/overlays/bun/README.md +312 -0
  82. package/overlays/bun/devcontainer.patch.json +41 -0
  83. package/overlays/bun/overlay.yml +16 -0
  84. package/overlays/bun/setup.sh +79 -0
  85. package/overlays/bun/verify.sh +30 -0
  86. package/overlays/codex/README.md +128 -0
  87. package/overlays/codex/devcontainer.patch.json +3 -0
  88. package/overlays/codex/overlay.yml +14 -0
  89. package/overlays/codex/setup.sh +24 -0
  90. package/overlays/codex/verify.sh +30 -0
  91. package/overlays/commitlint/README.md +333 -0
  92. package/overlays/commitlint/devcontainer.patch.json +8 -0
  93. package/overlays/commitlint/overlay.yml +16 -0
  94. package/overlays/commitlint/setup.sh +234 -0
  95. package/overlays/direnv/README.md +504 -0
  96. package/overlays/direnv/devcontainer.patch.json +6 -0
  97. package/overlays/direnv/overlay.yml +13 -0
  98. package/overlays/direnv/setup.sh +139 -0
  99. package/overlays/docker-in-docker/README.md +534 -0
  100. package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
  101. package/overlays/docker-in-docker/overlay.yml +13 -0
  102. package/overlays/docker-sock/README.md +256 -0
  103. package/overlays/docker-sock/devcontainer.patch.json +9 -0
  104. package/overlays/docker-sock/docker-compose.yml +8 -0
  105. package/overlays/docker-sock/overlay.yml +13 -0
  106. package/overlays/dotnet/README.md +147 -0
  107. package/overlays/dotnet/devcontainer.patch.json +51 -0
  108. package/overlays/dotnet/global-tools.txt +24 -0
  109. package/overlays/dotnet/overlay.yml +13 -0
  110. package/overlays/dotnet/setup.sh +51 -0
  111. package/overlays/dotnet/verify.sh +26 -0
  112. package/overlays/gcloud/README.md +269 -0
  113. package/overlays/gcloud/devcontainer.patch.json +14 -0
  114. package/overlays/gcloud/overlay.yml +14 -0
  115. package/overlays/gcloud/verify.sh +52 -0
  116. package/overlays/git-helpers/README.md +168 -0
  117. package/overlays/git-helpers/devcontainer.patch.json +33 -0
  118. package/overlays/git-helpers/overlay.yml +15 -0
  119. package/overlays/git-helpers/setup.sh +91 -0
  120. package/overlays/go/README.md +293 -0
  121. package/overlays/go/devcontainer.patch.json +43 -0
  122. package/overlays/go/overlay.yml +15 -0
  123. package/overlays/go/setup.sh +33 -0
  124. package/overlays/go/verify.sh +40 -0
  125. package/overlays/grafana/.env.example +9 -0
  126. package/overlays/grafana/README.md +462 -0
  127. package/overlays/grafana/dashboard-provider.yml +11 -0
  128. package/overlays/grafana/dashboards/observability-overview.json +263 -0
  129. package/overlays/grafana/devcontainer.patch.json +12 -0
  130. package/overlays/grafana/docker-compose.yml +27 -0
  131. package/overlays/grafana/grafana-datasources.yml +57 -0
  132. package/overlays/grafana/overlay.yml +21 -0
  133. package/overlays/grafana/verify.sh +34 -0
  134. package/overlays/jaeger/.env.example +7 -0
  135. package/overlays/jaeger/README.md +867 -0
  136. package/overlays/jaeger/devcontainer.patch.json +12 -0
  137. package/overlays/jaeger/docker-compose.yml +17 -0
  138. package/overlays/jaeger/overlay.yml +19 -0
  139. package/overlays/java/README.md +267 -0
  140. package/overlays/java/devcontainer.patch.json +44 -0
  141. package/overlays/java/overlay.yml +16 -0
  142. package/overlays/java/setup.sh +41 -0
  143. package/overlays/java/verify.sh +42 -0
  144. package/overlays/just/README.md +443 -0
  145. package/overlays/just/devcontainer.patch.json +3 -0
  146. package/overlays/just/overlay.yml +13 -0
  147. package/overlays/just/setup.sh +182 -0
  148. package/overlays/kubectl-helm/README.md +660 -0
  149. package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
  150. package/overlays/kubectl-helm/overlay.yml +13 -0
  151. package/overlays/loki/.env.example +5 -0
  152. package/overlays/loki/README.md +1156 -0
  153. package/overlays/loki/devcontainer.patch.json +12 -0
  154. package/overlays/loki/docker-compose.yml +18 -0
  155. package/overlays/loki/loki-config.yaml +45 -0
  156. package/overlays/loki/overlay.yml +17 -0
  157. package/overlays/minio/.env.example +9 -0
  158. package/overlays/minio/README.md +639 -0
  159. package/overlays/minio/devcontainer.patch.json +30 -0
  160. package/overlays/minio/docker-compose.yml +28 -0
  161. package/overlays/minio/overlay.yml +18 -0
  162. package/overlays/minio/setup.sh +61 -0
  163. package/overlays/minio/verify.sh +64 -0
  164. package/overlays/mkdocs/README.md +309 -0
  165. package/overlays/mkdocs/devcontainer.patch.json +24 -0
  166. package/overlays/mkdocs/overlay.yml +15 -0
  167. package/overlays/modern-cli-tools/README.md +556 -0
  168. package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
  169. package/overlays/modern-cli-tools/overlay.yml +13 -0
  170. package/overlays/modern-cli-tools/setup.sh +153 -0
  171. package/overlays/mongodb/.env.example +9 -0
  172. package/overlays/mongodb/README.md +481 -0
  173. package/overlays/mongodb/devcontainer.patch.json +32 -0
  174. package/overlays/mongodb/docker-compose.yml +44 -0
  175. package/overlays/mongodb/overlay.yml +17 -0
  176. package/overlays/mongodb/verify.sh +48 -0
  177. package/overlays/mysql/.env.example +11 -0
  178. package/overlays/mysql/README.md +542 -0
  179. package/overlays/mysql/devcontainer.patch.json +34 -0
  180. package/overlays/mysql/docker-compose.yml +55 -0
  181. package/overlays/mysql/overlay.yml +16 -0
  182. package/overlays/mysql/verify.sh +48 -0
  183. package/overlays/nats/.env.example +5 -0
  184. package/overlays/nats/README.md +762 -0
  185. package/overlays/nats/devcontainer.patch.json +24 -0
  186. package/overlays/nats/docker-compose.yml +31 -0
  187. package/overlays/nats/overlay.yml +18 -0
  188. package/overlays/nats/verify.sh +50 -0
  189. package/overlays/ngrok/README.md +503 -0
  190. package/overlays/ngrok/devcontainer.patch.json +3 -0
  191. package/overlays/ngrok/overlay.yml +14 -0
  192. package/overlays/ngrok/setup.sh +125 -0
  193. package/overlays/nodejs/README.md +192 -0
  194. package/overlays/nodejs/devcontainer.patch.json +49 -0
  195. package/overlays/nodejs/global-packages.txt +16 -0
  196. package/overlays/nodejs/overlay.yml +14 -0
  197. package/overlays/nodejs/setup.sh +46 -0
  198. package/overlays/nodejs/verify.sh +32 -0
  199. package/overlays/otel-collector/.env.example +9 -0
  200. package/overlays/otel-collector/README.md +1257 -0
  201. package/overlays/otel-collector/devcontainer.patch.json +28 -0
  202. package/overlays/otel-collector/docker-compose.yml +22 -0
  203. package/overlays/otel-collector/otel-collector-config.yaml +68 -0
  204. package/overlays/otel-collector/overlay.yml +21 -0
  205. package/overlays/otel-collector/setup.sh +49 -0
  206. package/overlays/otel-demo-nodejs/.env.example +2 -0
  207. package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
  208. package/overlays/otel-demo-nodejs/README.md +409 -0
  209. package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
  210. package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
  211. package/overlays/otel-demo-nodejs/overlay.yml +23 -0
  212. package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
  213. package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
  214. package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
  215. package/overlays/otel-demo-nodejs/verify.sh +31 -0
  216. package/overlays/otel-demo-python/.env.example +2 -0
  217. package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
  218. package/overlays/otel-demo-python/README.md +82 -0
  219. package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
  220. package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
  221. package/overlays/otel-demo-python/docker-compose.yml +19 -0
  222. package/overlays/otel-demo-python/overlay.yml +23 -0
  223. package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
  224. package/overlays/otel-demo-python/verify.sh +31 -0
  225. package/overlays/playwright/README.md +629 -0
  226. package/overlays/playwright/devcontainer.patch.json +9 -0
  227. package/overlays/playwright/overlay.yml +13 -0
  228. package/overlays/postgres/.env.example +6 -0
  229. package/overlays/postgres/README.md +602 -0
  230. package/overlays/postgres/devcontainer.patch.json +21 -0
  231. package/overlays/postgres/docker-compose.yml +22 -0
  232. package/overlays/postgres/overlay.yml +15 -0
  233. package/overlays/postgres/verify.sh +45 -0
  234. package/overlays/powershell/README.md +314 -0
  235. package/overlays/powershell/devcontainer.patch.json +22 -0
  236. package/overlays/powershell/overlay.yml +13 -0
  237. package/overlays/powershell/setup.sh +29 -0
  238. package/overlays/powershell/verify.sh +38 -0
  239. package/overlays/pre-commit/README.md +263 -0
  240. package/overlays/pre-commit/devcontainer.patch.json +9 -0
  241. package/overlays/pre-commit/overlay.yml +16 -0
  242. package/overlays/pre-commit/setup.sh +129 -0
  243. package/overlays/presets/docs-site.yml +118 -0
  244. package/overlays/presets/fullstack.yml +181 -0
  245. package/overlays/presets/microservice.yml +118 -0
  246. package/overlays/presets/web-api.yml +109 -0
  247. package/overlays/prometheus/.env.example +5 -0
  248. package/overlays/prometheus/README.md +1246 -0
  249. package/overlays/prometheus/devcontainer.patch.json +12 -0
  250. package/overlays/prometheus/docker-compose.yml +22 -0
  251. package/overlays/prometheus/overlay.yml +17 -0
  252. package/overlays/prometheus/prometheus.yml +12 -0
  253. package/overlays/prometheus/verify.sh +34 -0
  254. package/overlays/promtail/.env.example +2 -0
  255. package/overlays/promtail/README.md +357 -0
  256. package/overlays/promtail/devcontainer.patch.json +5 -0
  257. package/overlays/promtail/docker-compose.yml +16 -0
  258. package/overlays/promtail/overlay.yml +17 -0
  259. package/overlays/promtail/promtail-config.yaml +60 -0
  260. package/overlays/promtail/verify.sh +31 -0
  261. package/overlays/pulumi/README.md +472 -0
  262. package/overlays/pulumi/devcontainer.patch.json +13 -0
  263. package/overlays/pulumi/overlay.yml +14 -0
  264. package/overlays/pulumi/verify.sh +31 -0
  265. package/overlays/python/README.md +919 -0
  266. package/overlays/python/devcontainer.patch.json +41 -0
  267. package/overlays/python/overlay.yml +12 -0
  268. package/overlays/python/requirements-overlay.txt +13 -0
  269. package/overlays/python/setup.sh +47 -0
  270. package/overlays/python/verify.sh +32 -0
  271. package/overlays/rabbitmq/.env.example +7 -0
  272. package/overlays/rabbitmq/README.md +680 -0
  273. package/overlays/rabbitmq/devcontainer.patch.json +28 -0
  274. package/overlays/rabbitmq/docker-compose.yml +30 -0
  275. package/overlays/rabbitmq/overlay.yml +18 -0
  276. package/overlays/rabbitmq/verify.sh +41 -0
  277. package/overlays/redis/.env.example +4 -0
  278. package/overlays/redis/README.md +776 -0
  279. package/overlays/redis/devcontainer.patch.json +21 -0
  280. package/overlays/redis/docker-compose.yml +21 -0
  281. package/overlays/redis/overlay.yml +15 -0
  282. package/overlays/redis/verify.sh +41 -0
  283. package/overlays/redpanda/.env.example +10 -0
  284. package/overlays/redpanda/README.md +703 -0
  285. package/overlays/redpanda/devcontainer.patch.json +37 -0
  286. package/overlays/redpanda/docker-compose.yml +67 -0
  287. package/overlays/redpanda/overlay.yml +21 -0
  288. package/overlays/redpanda/verify.sh +48 -0
  289. package/overlays/rust/README.md +299 -0
  290. package/overlays/rust/devcontainer.patch.json +39 -0
  291. package/overlays/rust/overlay.yml +15 -0
  292. package/overlays/rust/setup.sh +36 -0
  293. package/overlays/rust/verify.sh +51 -0
  294. package/overlays/sqlite/README.md +584 -0
  295. package/overlays/sqlite/devcontainer.patch.json +14 -0
  296. package/overlays/sqlite/overlay.yml +15 -0
  297. package/overlays/sqlite/setup.sh +27 -0
  298. package/overlays/sqlite/verify.sh +43 -0
  299. package/overlays/sqlserver/.env.example +6 -0
  300. package/overlays/sqlserver/README.md +592 -0
  301. package/overlays/sqlserver/devcontainer.patch.json +22 -0
  302. package/overlays/sqlserver/docker-compose.yml +32 -0
  303. package/overlays/sqlserver/overlay.yml +17 -0
  304. package/overlays/sqlserver/verify.sh +30 -0
  305. package/overlays/tempo/.env.example +5 -0
  306. package/overlays/tempo/README.md +273 -0
  307. package/overlays/tempo/devcontainer.patch.json +12 -0
  308. package/overlays/tempo/docker-compose.yml +20 -0
  309. package/overlays/tempo/overlay.yml +20 -0
  310. package/overlays/tempo/tempo-config.yaml +32 -0
  311. package/overlays/tempo/verify.sh +31 -0
  312. package/overlays/terraform/README.md +389 -0
  313. package/overlays/terraform/devcontainer.patch.json +15 -0
  314. package/overlays/terraform/overlay.yml +14 -0
  315. package/overlays/terraform/verify.sh +63 -0
  316. package/package.json +74 -0
  317. package/templates/README.md +285 -0
  318. package/templates/compose/.devcontainer/devcontainer.json +46 -0
  319. package/templates/compose/.devcontainer/docker-compose.yml +12 -0
  320. package/templates/compose/README.md +20 -0
  321. package/templates/plain/.devcontainer/devcontainer.json +35 -0
  322. package/templates/plain/README.md +21 -0
  323. package/tool/README.md +281 -0
  324. package/tool/schema/base-images.schema.json +43 -0
  325. package/tool/schema/base-templates.schema.json +34 -0
  326. package/tool/schema/config.schema.json +71 -0
  327. package/tool/schema/overlay-manifest.schema.json +86 -0
@@ -0,0 +1,576 @@
1
+ # Usage Examples
2
+
3
+ Common usage patterns for the init tool.
4
+
5
+ ## Interactive Mode
6
+
7
+ ```bash
8
+ npm run init
9
+ ```
10
+
11
+ Follow the prompts to select your stack, database, tools, and output location.
12
+
13
+ ## Non-Interactive Examples
14
+
15
+ ### .NET with PostgreSQL
16
+
17
+ ```bash
18
+ npm run init -- --stack compose --language dotnet --postgres --output ./.devcontainer
19
+ ```
20
+
21
+ Creates:
22
+
23
+ - Docker Compose base template
24
+ - .NET 10 SDK and C# DevKit
25
+ - PostgreSQL 16 service
26
+ - Database client tools
27
+ - Environment variables for connection
28
+
29
+ ### Node.js API with Observability
30
+
31
+ ```bash
32
+ npm run init -- \
33
+ --stack compose \
34
+ --language nodejs \
35
+ --postgres \
36
+ --observability otel-collector,jaeger,prometheus,grafana
37
+ ```
38
+
39
+ Creates:
40
+
41
+ - Docker Compose infrastructure
42
+ - Node.js LTS with TypeScript
43
+ - PostgreSQL database
44
+ - OpenTelemetry Collector pipeline
45
+ - Jaeger for distributed tracing
46
+ - Prometheus for metrics
47
+ - Grafana for visualization
48
+
49
+ ### Full Observability Stack
50
+
51
+ ```bash
52
+ npm run init -- \
53
+ --stack compose \
54
+ --language dotnet \
55
+ --database postgres+redis \
56
+ --observability otel-collector,jaeger,prometheus,grafana,loki \
57
+ --cloud-tools aws-cli,kubectl-helm
58
+ ```
59
+
60
+ Creates:
61
+
62
+ - Docker Compose infrastructure
63
+ - .NET microservice setup
64
+ - PostgreSQL and Redis
65
+ - Complete observability stack (traces, metrics, logs)
66
+ - AWS CLI and Kubernetes tools
67
+
68
+ ### Minimal Documentation Site
69
+
70
+ ```bash
71
+ npm run init -- --stack plain --language mkdocs --output ./my-docs/.devcontainer
72
+ ```
73
+
74
+ Creates:
75
+
76
+ - Simple image-based devcontainer
77
+ - Python with MkDocs
78
+ - Documentation tools
79
+ - Minimal configuration
80
+
81
+ ### Multi-Cloud Python Development
82
+
83
+ ```bash
84
+ npm run init -- \
85
+ --stack compose \
86
+ --language python \
87
+ --postgres \
88
+ --cloud-tools aws-cli,azure-cli,kubectl-helm
89
+ ```
90
+
91
+ Creates:
92
+
93
+ - Docker Compose base
94
+ - Python 3.12 with linting
95
+ - PostgreSQL database
96
+ - AWS, Azure, and Kubernetes CLIs
97
+
98
+ ## Programmatic Usage
99
+
100
+ ```javascript
101
+ import { composeDevContainer } from './tool/questionnaire/composer.js';
102
+
103
+ await composeDevContainer({
104
+ stack: 'compose',
105
+ baseImage: 'bookworm',
106
+ language: ['dotnet'],
107
+ needsDocker: true,
108
+ database: 'postgres',
109
+ playwright: false,
110
+ observability: ['otel-collector', 'jaeger', 'prometheus', 'grafana'],
111
+ cloudTools: ['aws-cli'],
112
+ devTools: [],
113
+ outputPath: './.devcontainer',
114
+ });
115
+ ```
116
+
117
+ ## Output Structure
118
+
119
+ All examples produce:
120
+
121
+ ```
122
+ .devcontainer/
123
+ ├── devcontainer.json # Merged configuration
124
+ ├── docker-compose.yml # Base compose (if compose template)
125
+ ├── .env.example # Combined environment variables
126
+ ├── scripts/
127
+ │ └── post_create.sh # Setup scripts
128
+ ├── docker-compose.postgres.yml # If postgres selected
129
+ ├── docker-compose.redis.yml # If redis selected
130
+ ├── docker-compose.otel-collector.yml # If otel-collector selected
131
+ ├── docker-compose.jaeger.yml # If jaeger selected
132
+ ├── docker-compose.prometheus.yml # If prometheus selected
133
+ ├── docker-compose.grafana.yml # If grafana selected
134
+ ├── docker-compose.loki.yml # If loki selected
135
+ ├── otel-collector-config.yaml # Observability configs
136
+ ├── prometheus.yml
137
+ ├── grafana-datasources.yml
138
+ └── loki-config.yaml
139
+ ```
140
+
141
+ ## Customization After Generation
142
+
143
+ The output is plain JSON - edit directly:
144
+
145
+ ```jsonc
146
+ // .devcontainer/devcontainer.json
147
+ {
148
+ "name": "My Custom Name", // Change this
149
+ "features": {
150
+ // Add/remove features
151
+ "ghcr.io/devcontainers/features/go:1": {},
152
+ },
153
+ "forwardPorts": [3000, 8080], // Adjust ports
154
+ "remoteEnv": {
155
+ "MY_VAR": "value", // Add environment variables
156
+ },
157
+ }
158
+ ```
159
+
160
+ The tool gets you started—you customize from there.
161
+
162
+ ## Help and Documentation
163
+
164
+ ```bash
165
+ # Show all options
166
+ npm run init -- --help
167
+
168
+ # Show version
169
+ npm run init -- --version
170
+ ```
171
+
172
+ ## Common Patterns
173
+
174
+ ### Microservice with Full Observability
175
+
176
+ Production-ready microservice with complete observability:
177
+
178
+ ```bash
179
+ npm run init -- \
180
+ --stack compose \
181
+ --language dotnet \
182
+ --postgres \
183
+ --observability otel-collector,jaeger,prometheus,grafana,loki \
184
+ --cloud-tools kubectl-helm
185
+ ```
186
+
187
+ This creates:
188
+
189
+ - .NET microservice with Docker Compose
190
+ - PostgreSQL database
191
+ - OpenTelemetry pipeline (collector → jaeger/prometheus/loki → grafana)
192
+ - Kubernetes deployment tools
193
+ - Complete local development environment matching production
194
+
195
+ ### Frontend Application with Testing
196
+
197
+ Common for frontend applications:
198
+
199
+ ```bash
200
+ npm run init -- \
201
+ --stack compose \
202
+ --language nodejs \
203
+ --redis \
204
+ --dev-tools playwright
205
+ ```
206
+
207
+ ### Backend API with Metrics Only
208
+
209
+ Lightweight observability for REST APIs:
210
+
211
+ ```bash
212
+ npm run init -- \
213
+ --stack compose \
214
+ --language nodejs \
215
+ --postgres \
216
+ --observability prometheus,grafana
217
+ ```
218
+
219
+ ### Distributed Tracing Setup
220
+
221
+ Focus on distributed tracing without full observability:
222
+
223
+ ```bash
224
+ npm run init -- \
225
+ --stack compose \
226
+ --language dotnet \
227
+ --database postgres+redis \
228
+ --observability otel-collector,jaeger
229
+ ```
230
+
231
+ ### Documentation Sites
232
+
233
+ For documentation projects:
234
+
235
+ ```bash
236
+ npm run init -- --stack plain --language mkdocs
237
+ ```
238
+
239
+ ### Multi-Cloud Python Development
240
+
241
+ For Python projects targeting multiple clouds:
242
+
243
+ ```bash
244
+ npm run init -- \
245
+ --stack compose \
246
+ --language python \
247
+ --postgres \
248
+ --cloud-tools aws-cli,azure-cli,kubectl-helm
249
+ ```
250
+
251
+ ## Observability Stack Combinations
252
+
253
+ ### Minimal (Traces Only)
254
+
255
+ ```bash
256
+ --observability jaeger
257
+ ```
258
+
259
+ Direct tracing without collector.
260
+
261
+ ### Minimal (Metrics Only)
262
+
263
+ ```bash
264
+ --observability prometheus,grafana
265
+ ```
266
+
267
+ Metrics collection and visualization.
268
+
269
+ ### Standard (Traces + Metrics)
270
+
271
+ ```bash
272
+ --observability otel-collector,jaeger,prometheus,grafana
273
+ ```
274
+
275
+ Complete telemetry pipeline for traces and metrics.
276
+
277
+ ### Complete (Traces + Metrics + Logs)
278
+
279
+ ```bash
280
+ --observability otel-collector,jaeger,prometheus,grafana,loki
281
+ ```
282
+
283
+ Full observability stack with centralized logging.
284
+
285
+ ## Service Dependencies
286
+
287
+ The system handles dependencies automatically. For example, if you select:
288
+
289
+ ```bash
290
+ --observability otel-collector,prometheus,grafana
291
+ ```
292
+
293
+ The generated `docker-compose.yml` will include:
294
+
295
+ ```yaml
296
+ services:
297
+ prometheus:
298
+ # starts first
299
+
300
+ otel-collector:
301
+ depends_on:
302
+ - prometheus # waits for prometheus
303
+
304
+ grafana:
305
+ depends_on:
306
+ - prometheus # waits for prometheus
307
+
308
+ devcontainer:
309
+ depends_on:
310
+ - otel-collector # waits for otel-collector
311
+ ```
312
+
313
+ Services start in the correct order automatically!
314
+
315
+ ## Adding Custom Configuration Files
316
+
317
+ Overlays can include additional configuration files that are automatically copied to your output. For example:
318
+
319
+ ### Creating an Overlay with Config Files
320
+
321
+ ```
322
+ overlays/my-service/
323
+ ├── devcontainer.patch.json # DevContainer configuration
324
+ ├── docker-compose.yml # Service definition
325
+ ├── .env.example # Environment variables
326
+ ├── otel-collector.yml # OpenTelemetry configuration
327
+ └── config/
328
+ ├── nginx.conf # Nginx configuration
329
+ └── app-settings.json # Application settings
330
+ ```
331
+
332
+ When you select this overlay, **all files** (except `devcontainer.patch.json` and `.env.example`) are copied to your output:
333
+
334
+ ```
335
+ .devcontainer/
336
+ ├── devcontainer.json
337
+ ├── .env.example # Merged from all selected overlays
338
+ ├── docker-compose.my-service.yml
339
+ ├── otel-collector.yml # Copied from overlay
340
+ └── config/
341
+ ├── nginx.conf # Copied from overlay
342
+ └── app-settings.json # Copied from overlay
343
+ ```
344
+
345
+ ### Environment Variables per Overlay
346
+
347
+ Each overlay provides its own `.env.example` with relevant variables:
348
+
349
+ **postgres/.env.example:**
350
+
351
+ ```bash
352
+ POSTGRES_VERSION=16
353
+ POSTGRES_DB=devdb
354
+ POSTGRES_PASSWORD=postgres
355
+ ```
356
+
357
+ **redis/.env.example:**
358
+
359
+ ```bash
360
+ REDIS_VERSION=7
361
+ REDIS_PORT=6379
362
+ ```
363
+
364
+ **Combined output .env.example:**
365
+
366
+ ```bash
367
+ # Environment Variables
368
+ # Generated by container-superposition init tool
369
+
370
+ # PostgreSQL Configuration
371
+ POSTGRES_VERSION=16
372
+ POSTGRES_DB=devdb
373
+ POSTGRES_PASSWORD=postgres
374
+
375
+ # Redis Configuration
376
+ REDIS_VERSION=7
377
+ REDIS_PORT=6379
378
+ ```
379
+
380
+ Copy `.env.example` to `.env` and customize for your needs.
381
+
382
+ ## Manifest Regeneration Examples
383
+
384
+ Every generation creates a `superposition.json` manifest file that records your configuration. Use it to iterate on your setup, update to latest versions, or experiment safely.
385
+
386
+ ### Basic Workflow: Iterating on Configuration
387
+
388
+ ```bash
389
+ # 1. Initial setup - Start simple
390
+ npm run init -- --stack compose --language nodejs --database postgres
391
+ # Creates .devcontainer/ and superposition.json
392
+
393
+ # 2. Verify it works
394
+ code .
395
+ # Dev Containers: Reopen in Container
396
+
397
+ # 3. Later: Add Redis and observability
398
+ npm run init -- --from-manifest ./superposition.json
399
+ # Questionnaire appears with nodejs and postgres already selected
400
+ # Add: redis, otel-collector, prometheus, grafana
401
+ # Original .devcontainer/ automatically backed up to .devcontainer.backup-{timestamp}/
402
+ ```
403
+
404
+ **What happens:**
405
+
406
+ - Previous selections (nodejs, postgres) pre-selected in questionnaire
407
+ - You modify the selection (add redis, observability tools)
408
+ - Original devcontainer backed up with timestamp
409
+ - New devcontainer generated with updated selections
410
+ - New superposition.json reflects current configuration
411
+
412
+ ### Non-Interactive Regeneration
413
+
414
+ Regenerate exact same setup (useful for updating to latest overlay versions):
415
+
416
+ ```bash
417
+ # Regenerate with exact same selections, skip confirmation, no backup
418
+ npm run init -- --from-manifest ./superposition.json --yes --no-backup
419
+ ```
420
+
421
+ **Use cases:**
422
+
423
+ - **CI/CD**: Regenerate template from manifest in pipeline
424
+ - **Updates**: Get latest overlay versions without manual re-selection
425
+ - **Testing**: Quickly regenerate after overlay changes
426
+
427
+ ### Switching Languages
428
+
429
+ ```bash
430
+ # Started with Node.js
431
+ npm run init -- --stack compose --language nodejs --database postgres
432
+
433
+ # Switch to Python
434
+ npm run init -- --from-manifest ./superposition.json
435
+ # In questionnaire:
436
+ # - Deselect nodejs
437
+ # - Select python
438
+ # - Keep postgres (already selected)
439
+ # Regenerate
440
+ ```
441
+
442
+ ### Adding Observability to Existing Setup
443
+
444
+ ```bash
445
+ # Initial minimal setup
446
+ npm run init -- --stack compose --language dotnet --database postgres,redis
447
+
448
+ # Add full observability stack
449
+ npm run init -- --from-manifest ./superposition.json
450
+ # Add: otel-collector, jaeger, prometheus, grafana, loki
451
+ # All existing selections preserved
452
+ ```
453
+
454
+ ### Team Workflow: Sharing Configurations
455
+
456
+ ```bash
457
+ # Developer 1: Create and commit manifest
458
+ npm run init -- --stack compose --language nodejs --database postgres --observability prometheus,grafana
459
+ git add superposition.json .devcontainer/
460
+ git commit -m "Add devcontainer configuration"
461
+ git push
462
+
463
+ # Developer 2: Clone and regenerate from manifest
464
+ git clone <repo>
465
+ npm install
466
+ npm run init -- --from-manifest ./superposition.json --yes
467
+ # Gets exact same devcontainer setup
468
+ ```
469
+
470
+ ### Custom Backup Location
471
+
472
+ ```bash
473
+ # Backup to custom directory
474
+ npm run init -- --from-manifest ./superposition.json --backup-dir ../backups/
475
+ # Creates backup in ../backups/.devcontainer.backup-{timestamp}/
476
+ ```
477
+
478
+ ### Manifest Fields Preserved
479
+
480
+ The manifest stores and restores:
481
+
482
+ ```json
483
+ {
484
+ "version": "0.1.0",
485
+ "generated": "2026-02-08T10:00:00Z",
486
+ "baseTemplate": "compose",
487
+ "baseImage": "bookworm",
488
+ "overlays": ["nodejs", "postgres", "redis"],
489
+ "portOffset": 100,
490
+ "preset": "web-api",
491
+ "presetChoices": { "language": "nodejs" },
492
+ "containerName": "My API Project",
493
+ "outputPath": "./.devcontainer"
494
+ }
495
+ ```
496
+
497
+ **Preserved on regeneration:**
498
+
499
+ - Base template selection (plain/compose)
500
+ - Base image selection
501
+ - All overlay selections
502
+ - Port offset
503
+ - Preset (if used) and preset choices
504
+ - Container name (from devcontainer.json)
505
+ - Output path
506
+
507
+ ### Edge Cases Handled
508
+
509
+ **Missing overlays:**
510
+
511
+ ```bash
512
+ # If manifest references overlays that no longer exist
513
+ npm run init -- --from-manifest ./superposition.json
514
+ # ⚠️ Warning: Some overlays from manifest no longer exist: old-overlay
515
+ # Continues with remaining valid overlays
516
+ ```
517
+
518
+ **Version mismatch:**
519
+
520
+ ```bash
521
+ # If manifest version differs
522
+ npm run init -- --from-manifest ./old-manifest.json
523
+ # ⚠️ Manifest version 0.0.5 may not be fully compatible with this tool
524
+ # Continues using manifest as-is
525
+ ```
526
+
527
+ ### Backup Management
528
+
529
+ **Default behavior:**
530
+
531
+ ```bash
532
+ npm run init -- --from-manifest ./superposition.json
533
+ # Creates: .devcontainer.backup-2026-02-08-143022/
534
+ # Contains: devcontainer.json, docker-compose.yml, all scripts, features, etc.
535
+ ```
536
+
537
+ **Backup patterns automatically added to project root `.gitignore`:**
538
+
539
+ ```gitignore
540
+ # Container Superposition backups
541
+ .devcontainer.backup-*/
542
+ *.backup-*
543
+ superposition.json.backup-*
544
+ ```
545
+
546
+ **Restore from backup:**
547
+
548
+ ```bash
549
+ # If regeneration didn't work as expected, restore from backup
550
+ rm -rf .devcontainer
551
+ mv .devcontainer.backup-2026-02-08-143022 .devcontainer
552
+ # Or cherry-pick specific files from backup
553
+ cp .devcontainer.backup-2026-02-08-143022/devcontainer.json .devcontainer/
554
+ ```
555
+
556
+ ### Advanced: Multiple Environments
557
+
558
+ ```bash
559
+ # Development environment
560
+ npm run init -- --stack compose --language nodejs --database postgres --output ./dev
561
+ mv dev/superposition.json dev-superposition.json
562
+
563
+ # Staging environment (more observability)
564
+ npm run init -- --from-manifest ./dev-superposition.json --output ./staging
565
+ # Add: otel-collector, jaeger, prometheus, grafana
566
+ mv staging/superposition.json staging-superposition.json
567
+
568
+ # Production environment (full stack)
569
+ npm run init -- --from-manifest ./staging-superposition.json --output ./prod
570
+ # Add: loki, redis for caching
571
+ mv prod/superposition.json prod-superposition.json
572
+
573
+ # Now you have three manifests for different environments
574
+ # Regenerate any environment from its manifest
575
+ npm run init -- --from-manifest ./dev-superposition.json --yes --output ./dev
576
+ ```