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,265 @@
1
+ # Messaging System Comparison
2
+
3
+ This guide helps you choose the right messaging overlay for your development environment.
4
+
5
+ ## Quick Comparison
6
+
7
+ | Feature | RabbitMQ | Redpanda | NATS |
8
+ | -------------------- | ----------------- | --------------- | ---------------------- |
9
+ | **Protocol** | AMQP | Kafka API | NATS Protocol |
10
+ | **Primary Use Case** | Task queues, RPC | Event streaming | Pub/sub, microservices |
11
+ | **Latency** | Low (ms) | Low (ms) | Very low (μs) |
12
+ | **Throughput** | High | Very high | Very high |
13
+ | **Persistence** | Yes | Yes | Yes (JetStream) |
14
+ | **Complexity** | Moderate | Moderate | Simple |
15
+ | **Resource Usage** | Moderate | Moderate-High | Low |
16
+ | **Management UI** | ✅ Built-in | ✅ Console | ⚠️ HTTP API only |
17
+ | **Best For** | Task distribution | Event logs | Real-time updates |
18
+
19
+ ## When to Use RabbitMQ
20
+
21
+ **Choose RabbitMQ if you need:**
22
+
23
+ - ✅ Task queues with work distribution
24
+ - ✅ Complex routing patterns (exchanges, bindings)
25
+ - ✅ Request/reply (RPC) patterns
26
+ - ✅ Dead letter queues and retry logic
27
+ - ✅ Rich management UI
28
+ - ✅ AMQP protocol compatibility
29
+
30
+ **Use Cases:**
31
+
32
+ - Background job processing
33
+ - Order processing systems
34
+ - Email/notification queuing
35
+ - Microservices with RPC communication
36
+ - Integration with AMQP-based systems
37
+
38
+ **Example:**
39
+
40
+ ```bash
41
+ # Generate with RabbitMQ
42
+ container-superposition --stack compose --database rabbitmq --language nodejs
43
+ ```
44
+
45
+ ## When to Use Redpanda
46
+
47
+ **Choose Redpanda if you need:**
48
+
49
+ - ✅ Event streaming (Kafka-compatible)
50
+ - ✅ High-throughput log aggregation
51
+ - ✅ Event sourcing and CQRS
52
+ - ✅ Stream processing
53
+ - ✅ Kafka API compatibility without Zookeeper
54
+ - ✅ Modern web console UI
55
+
56
+ **Use Cases:**
57
+
58
+ - Application event streaming
59
+ - Log aggregation from multiple services
60
+ - Change data capture (CDC)
61
+ - Real-time analytics pipelines
62
+ - Replacing Apache Kafka for local development
63
+
64
+ **Example:**
65
+
66
+ ```bash
67
+ # Generate with Redpanda
68
+ container-superposition --stack compose --database redpanda --language nodejs
69
+ ```
70
+
71
+ **Why Redpanda over Kafka?**
72
+
73
+ - No Zookeeper required (simpler setup)
74
+ - Lower resource usage for local development
75
+ - Faster startup times
76
+ - 100% Kafka API compatible
77
+ - Modern management console included
78
+
79
+ ## When to Use NATS
80
+
81
+ **Choose NATS if you need:**
82
+
83
+ - ✅ Lightweight pub/sub messaging
84
+ - ✅ Very low latency (microseconds)
85
+ - ✅ Simple subject-based routing
86
+ - ✅ Request/reply patterns
87
+ - ✅ IoT and edge messaging
88
+ - ✅ Minimal resource footprint
89
+
90
+ **Use Cases:**
91
+
92
+ - Microservices communication
93
+ - Real-time updates and notifications
94
+ - Command/control distribution
95
+ - IoT device messaging
96
+ - Service mesh data plane
97
+ - Fast request/reply RPC
98
+
99
+ **Example:**
100
+
101
+ ```bash
102
+ # Generate with NATS
103
+ container-superposition --stack compose --database nats --language nodejs
104
+ ```
105
+
106
+ **Why NATS?**
107
+
108
+ - Simplest to set up and use
109
+ - Lowest resource usage
110
+ - Fastest message delivery
111
+ - Text-based protocol (easy debugging)
112
+ - JetStream adds persistence when needed
113
+
114
+ ## Combining Messaging Systems
115
+
116
+ You can use multiple messaging systems together for different purposes:
117
+
118
+ ```bash
119
+ # RabbitMQ for task queues + NATS for real-time updates
120
+ container-superposition --stack compose \
121
+ --database rabbitmq,nats \
122
+ --language nodejs
123
+
124
+ # Redpanda for event streaming + RabbitMQ for work queues
125
+ container-superposition --stack compose \
126
+ --database redpanda,rabbitmq \
127
+ --language nodejs,python
128
+ ```
129
+
130
+ **Common Patterns:**
131
+
132
+ - **Redpanda + RabbitMQ**: Event streaming for analytics + task queues for jobs
133
+ - **NATS + RabbitMQ**: Real-time notifications + background processing
134
+ - **All three**: Event streaming (Redpanda) + Task queues (RabbitMQ) + Service mesh (NATS)
135
+
136
+ ## Performance Characteristics
137
+
138
+ ### Latency
139
+
140
+ ```txt
141
+ NATS: < 1ms (fastest - optimized for low latency)
142
+ RabbitMQ: 1-5ms (fast - good for most use cases)
143
+ Redpanda: 1-10ms (optimized for throughput over latency)
144
+ ```
145
+
146
+ ### Throughput
147
+
148
+ ```txt
149
+ Redpanda: Highest (millions of messages/sec)
150
+ RabbitMQ: High (hundreds of thousands/sec)
151
+ NATS: High (hundreds of thousands/sec)
152
+ ```
153
+
154
+ ### Memory Usage (Single Instance)
155
+
156
+ ```txt
157
+ NATS: ~50MB (minimal)
158
+ RabbitMQ: ~200MB (moderate)
159
+ Redpanda: ~1GB (higher - includes schema registry, admin API)
160
+ ```
161
+
162
+ ## Protocol Compatibility
163
+
164
+ ### RabbitMQ
165
+
166
+ - **Primary**: AMQP 0-9-1
167
+ - **Also supports**: MQTT, STOMP (with plugins)
168
+ - **Client libraries**: All major languages
169
+ - **Interoperability**: Works with other AMQP systems
170
+
171
+ ### Redpanda
172
+
173
+ - **Primary**: Kafka wire protocol
174
+ - **Also includes**: Schema Registry API, HTTP Proxy
175
+ - **Client libraries**: All Kafka client libraries work
176
+ - **Interoperability**: Drop-in Kafka replacement
177
+
178
+ ### NATS
179
+
180
+ - **Primary**: NATS protocol (text-based)
181
+ - **Also supports**: WebSocket, TLS
182
+ - **Client libraries**: All major languages
183
+ - **Interoperability**: NATS-specific (not compatible with others)
184
+
185
+ ## Decision Tree
186
+
187
+ ```mermaid
188
+ graph TD
189
+ A[Need Kafka compatibility?] -->|YES| B[Redpanda]
190
+ A -->|NO| C[Need complex routing/RPC?]
191
+ C -->|YES| D[RabbitMQ]
192
+ C -->|NO| E[Need lowest latency?]
193
+ E -->|YES| F[NATS]
194
+ E -->|NO| G[Need task queues?]
195
+ G -->|YES| H[RabbitMQ]
196
+ G -->|NO| I[NATS - simplest]
197
+ ```
198
+
199
+ ## Integration Examples
200
+
201
+ ### RabbitMQ + Node.js
202
+
203
+ ```javascript
204
+ const amqp = require('amqplib');
205
+ const connection = await amqp.connect('amqp://rabbitmq:5672');
206
+ const channel = await connection.createChannel();
207
+
208
+ // Publish to queue
209
+ await channel.assertQueue('tasks');
210
+ channel.sendToQueue('tasks', Buffer.from('Hello World'));
211
+
212
+ // Consume from queue
213
+ await channel.consume('tasks', (msg) => {
214
+ console.log('Received:', msg.content.toString());
215
+ channel.ack(msg);
216
+ });
217
+ ```
218
+
219
+ ### Redpanda + Node.js
220
+
221
+ ```javascript
222
+ const { Kafka } = require('kafkajs');
223
+ const kafka = new Kafka({ brokers: ['redpanda:9092'] });
224
+
225
+ // Producer
226
+ const producer = kafka.producer();
227
+ await producer.connect();
228
+ await producer.send({
229
+ topic: 'events',
230
+ messages: [{ value: 'Hello Redpanda' }],
231
+ });
232
+
233
+ // Consumer
234
+ const consumer = kafka.consumer({ groupId: 'my-group' });
235
+ await consumer.connect();
236
+ await consumer.subscribe({ topic: 'events' });
237
+ await consumer.run({
238
+ eachMessage: async ({ message }) => {
239
+ console.log('Received:', message.value.toString());
240
+ },
241
+ });
242
+ ```
243
+
244
+ ### NATS + Node.js
245
+
246
+ ```javascript
247
+ const { connect } = require('nats');
248
+ const nc = await connect({ servers: 'nats://nats:4222' });
249
+
250
+ // Publish
251
+ nc.publish('updates', 'Hello NATS');
252
+
253
+ // Subscribe
254
+ const sub = nc.subscribe('updates');
255
+ for await (const msg of sub) {
256
+ console.log('Received:', msg.string());
257
+ }
258
+ ```
259
+
260
+ ## See Also
261
+
262
+ - [Observability Workflow](observability-workflow.md) - Monitoring messaging systems
263
+ - [RabbitMQ Overlay](../overlays/rabbitmq/README.md)
264
+ - [Redpanda Overlay](../overlays/redpanda/README.md)
265
+ - [NATS Overlay](../overlays/nats/README.md)
@@ -0,0 +1,385 @@
1
+ # Messaging Overlays - Quick Start Examples
2
+
3
+ This guide provides quick-start commands for using the new messaging overlays.
4
+
5
+ ## Basic Usage
6
+
7
+ ### RabbitMQ (Task Queues)
8
+
9
+ ```bash
10
+ # Create a Node.js project with RabbitMQ
11
+ container-superposition --stack compose --language nodejs --database rabbitmq
12
+
13
+ # Create a Python microservice with RabbitMQ
14
+ container-superposition --stack compose --language python --database rabbitmq
15
+
16
+ # Add observability to RabbitMQ setup
17
+ container-superposition --stack compose \
18
+ --language nodejs \
19
+ --database rabbitmq \
20
+ --observability prometheus,grafana
21
+ ```
22
+
23
+ **Access:**
24
+
25
+ - AMQP: `amqp://guest:guest@rabbitmq:5672/`
26
+ - Management UI: `http://localhost:15672` (guest/guest)
27
+
28
+ ### Redpanda (Event Streaming)
29
+
30
+ ```bash
31
+ # Create a Node.js event streaming app
32
+ container-superposition --stack compose --language nodejs --database redpanda
33
+
34
+ # Create a Go data pipeline with Redpanda
35
+ container-superposition --stack compose --language go --database redpanda
36
+
37
+ # Add observability for stream monitoring
38
+ container-superposition --stack compose \
39
+ --language nodejs \
40
+ --database redpanda \
41
+ --observability prometheus,grafana
42
+ ```
43
+
44
+ **Access:**
45
+
46
+ - Kafka API: `redpanda:9092`
47
+ - Console UI: `http://localhost:8080`
48
+ - Schema Registry: `http://redpanda:8081`
49
+
50
+ ### NATS (Pub/Sub Messaging)
51
+
52
+ ```bash
53
+ # Create a microservice with NATS
54
+ container-superposition --stack compose --language nodejs --database nats
55
+
56
+ # Create a Python IoT app with NATS
57
+ container-superposition --stack compose --language python --database nats
58
+
59
+ # Microservices with NATS and database
60
+ container-superposition --stack compose \
61
+ --language nodejs \
62
+ --database nats,postgres
63
+ ```
64
+
65
+ **Access:**
66
+
67
+ - Client: `nats://nats:4222`
68
+ - Monitoring: `http://localhost:8222`
69
+
70
+ ## Multi-Service Examples
71
+
72
+ ### Microservices Architecture
73
+
74
+ ```bash
75
+ # Complete microservices stack
76
+ container-superposition --stack compose \
77
+ --language nodejs \
78
+ --database postgres,rabbitmq,redis \
79
+ --observability otel-collector,jaeger,prometheus,grafana
80
+ ```
81
+
82
+ **Services:**
83
+
84
+ - PostgreSQL: Persistent data storage
85
+ - RabbitMQ: Asynchronous task queues
86
+ - Redis: Session/cache storage
87
+ - OTEL + Jaeger: Distributed tracing
88
+ - Prometheus + Grafana: Metrics and dashboards
89
+
90
+ ### Event-Driven Architecture
91
+
92
+ ```bash
93
+ # Event streaming with analytics
94
+ container-superposition --stack compose \
95
+ --language nodejs,python \
96
+ --database redpanda,postgres \
97
+ --observability prometheus,grafana
98
+ ```
99
+
100
+ **Use Case:**
101
+
102
+ - Redpanda: Event log aggregation
103
+ - PostgreSQL: Analytics database
104
+ - Node.js: Event producers/consumers
105
+ - Python: Data processing pipelines
106
+
107
+ ### Real-Time Messaging
108
+
109
+ ```bash
110
+ # Fast pub/sub with persistence
111
+ container-superposition --stack compose \
112
+ --language go \
113
+ --database nats,postgres \
114
+ --cloud-tools kubectl-helm
115
+ ```
116
+
117
+ **Use Case:**
118
+
119
+ - NATS: Real-time updates
120
+ - PostgreSQL: Event sourcing
121
+ - Go: High-performance services
122
+ - Kubernetes: Deployment platform
123
+
124
+ ### Hybrid Messaging
125
+
126
+ ```bash
127
+ # All three messaging systems
128
+ container-superposition --stack compose \
129
+ --language nodejs \
130
+ --database rabbitmq,nats,redpanda,postgres
131
+ ```
132
+
133
+ **Use Case:**
134
+
135
+ - RabbitMQ: Background jobs
136
+ - NATS: Service-to-service communication
137
+ - Redpanda: Event log aggregation
138
+ - PostgreSQL: Persistent storage
139
+
140
+ ## Port Offset for Multiple Instances
141
+
142
+ ```bash
143
+ # First instance (default ports)
144
+ container-superposition --stack compose \
145
+ --database rabbitmq \
146
+ --output ./project1
147
+
148
+ # Second instance (offset by 100)
149
+ container-superposition --stack compose \
150
+ --database rabbitmq \
151
+ --port-offset 100 \
152
+ --output ./project2
153
+
154
+ # Third instance (offset by 200)
155
+ container-superposition --stack compose \
156
+ --database rabbitmq \
157
+ --port-offset 200 \
158
+ --output ./project3
159
+ ```
160
+
161
+ **Ports:**
162
+
163
+ - Project 1: RabbitMQ on 5672, Management on 15672
164
+ - Project 2: RabbitMQ on 5772, Management on 15772
165
+ - Project 3: RabbitMQ on 5872, Management on 15872
166
+
167
+ ## Language-Specific Examples
168
+
169
+ ### Node.js + RabbitMQ
170
+
171
+ ```bash
172
+ container-superposition --stack compose \
173
+ --language nodejs \
174
+ --database rabbitmq,postgres \
175
+ --dev-tools docker-sock
176
+ ```
177
+
178
+ **Install client:**
179
+
180
+ ```bash
181
+ npm install amqplib
182
+ ```
183
+
184
+ ### Python + Redpanda
185
+
186
+ ```bash
187
+ container-superposition --stack compose \
188
+ --language python \
189
+ --database redpanda,postgres
190
+ ```
191
+
192
+ **Install client:**
193
+
194
+ ```bash
195
+ pip install confluent-kafka
196
+ ```
197
+
198
+ ### Go + NATS
199
+
200
+ ```bash
201
+ container-superposition --stack compose \
202
+ --language go \
203
+ --database nats,redis
204
+ ```
205
+
206
+ **Install client:**
207
+
208
+ ```bash
209
+ go get github.com/nats-io/nats.go
210
+ ```
211
+
212
+ ### .NET + All Three
213
+
214
+ ```bash
215
+ container-superposition --stack compose \
216
+ --language dotnet \
217
+ --database rabbitmq,redpanda,nats,sqlserver
218
+ ```
219
+
220
+ **Install clients:**
221
+
222
+ ```bash
223
+ dotnet add package RabbitMQ.Client
224
+ dotnet add package Confluent.Kafka
225
+ dotnet add package NATS.Client
226
+ ```
227
+
228
+ ## Cloud Deployment Examples
229
+
230
+ ### AWS with RabbitMQ
231
+
232
+ ```bash
233
+ container-superposition --stack compose \
234
+ --language nodejs \
235
+ --database rabbitmq,postgres \
236
+ --cloud-tools aws-cli,terraform
237
+ ```
238
+
239
+ ### Azure with Redpanda
240
+
241
+ ```bash
242
+ container-superposition --stack compose \
243
+ --language dotnet \
244
+ --database redpanda,sqlserver \
245
+ --cloud-tools azure-cli,terraform
246
+ ```
247
+
248
+ ### GCP with NATS
249
+
250
+ ```bash
251
+ container-superposition --stack compose \
252
+ --language go \
253
+ --database nats,postgres \
254
+ --cloud-tools gcloud,kubectl-helm
255
+ ```
256
+
257
+ ### Kubernetes-Ready
258
+
259
+ ```bash
260
+ container-superposition --stack compose \
261
+ --language nodejs \
262
+ --database nats,postgres \
263
+ --cloud-tools kubectl-helm,terraform \
264
+ --observability otel-collector,prometheus
265
+ ```
266
+
267
+ ## Development Workflow Examples
268
+
269
+ ### Local Development
270
+
271
+ ```bash
272
+ # Minimal setup for local dev
273
+ container-superposition --stack compose \
274
+ --language nodejs \
275
+ --database rabbitmq
276
+ ```
277
+
278
+ ### Integration Testing
279
+
280
+ ```bash
281
+ # Full services for testing
282
+ container-superposition --stack compose \
283
+ --language nodejs \
284
+ --database rabbitmq,postgres,redis \
285
+ --dev-tools playwright
286
+ ```
287
+
288
+ ### CI/CD Pipeline
289
+
290
+ ```bash
291
+ # Automated testing environment
292
+ container-superposition --stack compose \
293
+ --language nodejs \
294
+ --database nats,postgres \
295
+ --dev-tools docker-in-docker,pre-commit
296
+ ```
297
+
298
+ ## Interactive Mode
299
+
300
+ For guided selection, run without arguments:
301
+
302
+ ```bash
303
+ container-superposition
304
+ ```
305
+
306
+ The interactive questionnaire will let you select:
307
+
308
+ 1. Base template (compose recommended for messaging)
309
+ 2. Base image (Debian Bookworm recommended)
310
+ 3. Language overlays
311
+ 4. Database/messaging overlays (select multiple)
312
+ 5. Observability tools
313
+ 6. Cloud tools
314
+ 7. Dev tools
315
+ 8. Port offset (if needed)
316
+
317
+ ## Verification
318
+
319
+ After generating your devcontainer:
320
+
321
+ ```bash
322
+ # Open in VS Code
323
+ code your-project/
324
+
325
+ # VS Code will prompt: "Reopen in Container"
326
+ # Click to build and start all services
327
+
328
+ # Verify services are running
329
+ docker-compose ps
330
+
331
+ # Check RabbitMQ
332
+ curl http://localhost:15672
333
+
334
+ # Check Redpanda Console
335
+ curl http://localhost:8080
336
+
337
+ # Check NATS monitoring
338
+ curl http://localhost:8222/varz
339
+ ```
340
+
341
+ ## Next Steps
342
+
343
+ 1. Review generated `.devcontainer/devcontainer.json`
344
+ 2. Customize `.env` file (copy from `.env.example`)
345
+ 3. Review service-specific READMEs:
346
+ - `overlays/rabbitmq/README.md`
347
+ - `overlays/redpanda/README.md`
348
+ - `overlays/nats/README.md`
349
+ 4. Check [messaging-comparison.md](messaging-comparison.md) for choosing between systems
350
+ 5. Start coding!
351
+
352
+ ## Troubleshooting
353
+
354
+ **Port conflicts?**
355
+
356
+ ```bash
357
+ # Use port offset
358
+ container-superposition --port-offset 100 ...
359
+ ```
360
+
361
+ **Service not starting?**
362
+
363
+ ```bash
364
+ # Check Docker logs
365
+ docker-compose logs rabbitmq
366
+ docker-compose logs redpanda
367
+ docker-compose logs nats
368
+ ```
369
+
370
+ **Need to change configuration?**
371
+
372
+ ```bash
373
+ # Edit .devcontainer/.env
374
+ cd .devcontainer
375
+ cp .env.example .env
376
+ # Edit .env with your settings
377
+ # Rebuild container in VS Code
378
+ ```
379
+
380
+ ## Additional Resources
381
+
382
+ - **Full Documentation**: See individual overlay READMEs
383
+ - **Comparison Guide**: [messaging-comparison.md](messaging-comparison.md)
384
+ - **Code Examples**: Each README includes Node.js, Python, Go, .NET examples
385
+ - **Main Documentation**: `README.md` in repository root