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,703 @@
1
+ # Redpanda Overlay
2
+
3
+ Kafka-compatible event streaming platform optimized for local development - lightweight, fast, and no Zookeeper required.
4
+
5
+ ## Features
6
+
7
+ - **Redpanda** - Kafka-compatible streaming platform (lighter and faster than Apache Kafka)
8
+ - **No Zookeeper** - Simpler architecture, easier local development
9
+ - **Redpanda Console** - Modern web UI for managing topics, messages, and consumers
10
+ - **Kafka API** - 100% compatible with Kafka clients and tools (port 9092)
11
+ - **Schema Registry** - Built-in schema management (port 8081)
12
+ - **HTTP Proxy** - REST API for producing and consuming (port 8082)
13
+ - **Admin API** - Management and monitoring (port 9644)
14
+ - **Docker Compose service** - Runs as separate container
15
+ - **Environment configuration** - Customizable via `.env` file
16
+
17
+ ## How It Works
18
+
19
+ This overlay adds Redpanda as a Docker Compose service that provides Kafka-compatible event streaming. Redpanda is designed to be a drop-in replacement for Kafka but optimized for local development with lower resource requirements.
20
+
21
+ **Architecture:**
22
+
23
+ ```mermaid
24
+ graph TD
25
+ A[Development Container<br/>Your application code<br/>Kafka client libraries<br/>Connects to redpanda:9092] -->|Docker network devnet| B[Redpanda Container<br/>Kafka API 9092<br/>Schema Registry 8081<br/>HTTP Proxy 8082<br/>Admin API 9644<br/>Event/message persistence]
26
+ B --> C[Redpanda Console<br/>Web UI 8080<br/>Topic management<br/>Message browsing]
27
+ ```
28
+
29
+ ## Configuration
30
+
31
+ ### Environment Variables
32
+
33
+ The overlay includes a `.env.example` file. Copy it to `.env` and customize:
34
+
35
+ ```bash
36
+ cd .devcontainer
37
+ cp .env.example .env
38
+ ```
39
+
40
+ **Default values (.env.example):**
41
+
42
+ ```bash
43
+ # Redpanda Configuration
44
+ REDPANDA_VERSION=latest
45
+ REDPANDA_KAFKA_PORT=9092
46
+ REDPANDA_SCHEMA_REGISTRY_PORT=8081
47
+ REDPANDA_PROXY_PORT=8082
48
+ REDPANDA_ADMIN_PORT=9644
49
+
50
+ # Redpanda Console Configuration
51
+ REDPANDA_CONSOLE_VERSION=latest
52
+ REDPANDA_CONSOLE_PORT=8080
53
+ ```
54
+
55
+ ### Port Configuration
56
+
57
+ Default ports can be changed via the `--port-offset` option:
58
+
59
+ ```bash
60
+ # Offset all ports by 100
61
+ container-superposition --port-offset 100
62
+
63
+ # Redpanda will be on:
64
+ # - Kafka API: 9192 (instead of 9092)
65
+ # - Console UI: 8180 (instead of 8080)
66
+ ```
67
+
68
+ ## Connection Information
69
+
70
+ ### From Development Container
71
+
72
+ **Kafka API:**
73
+
74
+ ```bash
75
+ # Hostname: redpanda (Docker Compose service name)
76
+ # Port: 9092
77
+ # Protocol: Kafka wire protocol
78
+
79
+ # Bootstrap servers
80
+ redpanda:9092
81
+ ```
82
+
83
+ **Schema Registry:**
84
+
85
+ ```
86
+ http://redpanda:8081
87
+ ```
88
+
89
+ **HTTP Proxy:**
90
+
91
+ ```
92
+ http://redpanda:8082
93
+ ```
94
+
95
+ **Console UI:**
96
+
97
+ ```
98
+ http://redpanda-console:8080
99
+ ```
100
+
101
+ ### From Host Machine
102
+
103
+ **Kafka API:**
104
+
105
+ ```bash
106
+ # Hostname: localhost
107
+ # Port: 9092 (or 9092 + port-offset)
108
+
109
+ # Bootstrap servers
110
+ localhost:9092
111
+ ```
112
+
113
+ **Console UI:**
114
+
115
+ ```
116
+ http://localhost:8080
117
+ ```
118
+
119
+ ## Common Commands
120
+
121
+ ### Using Redpanda Console UI
122
+
123
+ The Redpanda Console provides:
124
+
125
+ - Topic creation and management
126
+ - Message browsing and publishing
127
+ - Consumer group monitoring
128
+ - Schema registry management
129
+ - Cluster health monitoring
130
+
131
+ Access it at: `http://localhost:8080`
132
+
133
+ ### Using rpk CLI (via docker exec)
134
+
135
+ ```bash
136
+ # Cluster info
137
+ docker exec redpanda rpk cluster info
138
+
139
+ # Cluster health
140
+ docker exec redpanda rpk cluster health
141
+
142
+ # List topics
143
+ docker exec redpanda rpk topic list
144
+
145
+ # Create a topic
146
+ docker exec redpanda rpk topic create my-topic --partitions 3 --replicas 1
147
+
148
+ # Describe topic
149
+ docker exec redpanda rpk topic describe my-topic
150
+
151
+ # Produce messages
152
+ docker exec -it redpanda rpk topic produce my-topic
153
+ # Type messages and press Ctrl+D to finish
154
+
155
+ # Consume messages
156
+ docker exec redpanda rpk topic consume my-topic --offset start
157
+
158
+ # Delete topic
159
+ docker exec redpanda rpk topic delete my-topic
160
+ ```
161
+
162
+ ### Managing Consumer Groups
163
+
164
+ ```bash
165
+ # List consumer groups
166
+ docker exec redpanda rpk group list
167
+
168
+ # Describe consumer group
169
+ docker exec redpanda rpk group describe my-group
170
+
171
+ # Delete consumer group
172
+ docker exec redpanda rpk group delete my-group
173
+ ```
174
+
175
+ ### Schema Registry
176
+
177
+ ```bash
178
+ # List schemas
179
+ curl http://localhost:8081/subjects
180
+
181
+ # Get schema versions
182
+ curl http://localhost:8081/subjects/my-topic-value/versions
183
+
184
+ # Register schema
185
+ curl -X POST http://localhost:8081/subjects/my-topic-value/versions \
186
+ -H 'Content-Type: application/vnd.schemaregistry.v1+json' \
187
+ -d '{"schema": "{\"type\":\"record\",\"name\":\"User\",\"fields\":[{\"name\":\"name\",\"type\":\"string\"}]}"}'
188
+ ```
189
+
190
+ ## Application Integration
191
+
192
+ ### Node.js Example
193
+
194
+ Install KafkaJS (Kafka client):
195
+
196
+ ```bash
197
+ npm install kafkajs
198
+ ```
199
+
200
+ **Producer (producer.js):**
201
+
202
+ ```javascript
203
+ const { Kafka } = require('kafkajs');
204
+
205
+ const kafka = new Kafka({
206
+ clientId: 'my-app',
207
+ brokers: ['redpanda:9092'],
208
+ });
209
+
210
+ const producer = kafka.producer();
211
+
212
+ async function run() {
213
+ await producer.connect();
214
+
215
+ await producer.send({
216
+ topic: 'my-topic',
217
+ messages: [
218
+ { key: 'key1', value: 'Hello Redpanda!' },
219
+ { key: 'key2', value: 'Event streaming is awesome' },
220
+ ],
221
+ });
222
+
223
+ console.log('Messages sent successfully');
224
+ await producer.disconnect();
225
+ }
226
+
227
+ run().catch(console.error);
228
+ ```
229
+
230
+ **Consumer (consumer.js):**
231
+
232
+ ```javascript
233
+ const { Kafka } = require('kafkajs');
234
+
235
+ const kafka = new Kafka({
236
+ clientId: 'my-app',
237
+ brokers: ['redpanda:9092'],
238
+ });
239
+
240
+ const consumer = kafka.consumer({ groupId: 'my-group' });
241
+
242
+ async function run() {
243
+ await consumer.connect();
244
+ await consumer.subscribe({ topic: 'my-topic', fromBeginning: true });
245
+
246
+ await consumer.run({
247
+ eachMessage: async ({ topic, partition, message }) => {
248
+ console.log({
249
+ topic,
250
+ partition,
251
+ offset: message.offset,
252
+ key: message.key?.toString(),
253
+ value: message.value?.toString(),
254
+ });
255
+ },
256
+ });
257
+ }
258
+
259
+ run().catch(console.error);
260
+ ```
261
+
262
+ ### Python Example
263
+
264
+ Install confluent-kafka (Kafka client):
265
+
266
+ ```bash
267
+ pip install confluent-kafka
268
+ ```
269
+
270
+ **Producer (producer.py):**
271
+
272
+ ```python
273
+ from confluent_kafka import Producer
274
+
275
+ conf = {
276
+ 'bootstrap.servers': 'redpanda:9092',
277
+ 'client.id': 'my-app'
278
+ }
279
+
280
+ producer = Producer(conf)
281
+
282
+ def delivery_report(err, msg):
283
+ if err is not None:
284
+ print(f'Message delivery failed: {err}')
285
+ else:
286
+ print(f'Message delivered to {msg.topic()} [{msg.partition()}]')
287
+
288
+ # Produce messages
289
+ producer.produce('my-topic', key='key1', value='Hello Redpanda!', callback=delivery_report)
290
+ producer.produce('my-topic', key='key2', value='Event streaming is awesome', callback=delivery_report)
291
+
292
+ # Wait for messages to be delivered
293
+ producer.flush()
294
+ ```
295
+
296
+ **Consumer (consumer.py):**
297
+
298
+ ```python
299
+ from confluent_kafka import Consumer
300
+
301
+ conf = {
302
+ 'bootstrap.servers': 'redpanda:9092',
303
+ 'group.id': 'my-group',
304
+ 'auto.offset.reset': 'earliest'
305
+ }
306
+
307
+ consumer = Consumer(conf)
308
+ consumer.subscribe(['my-topic'])
309
+
310
+ try:
311
+ while True:
312
+ msg = consumer.poll(1.0)
313
+
314
+ if msg is None:
315
+ continue
316
+ if msg.error():
317
+ print(f'Consumer error: {msg.error()}')
318
+ continue
319
+
320
+ print(f'Received message: {msg.value().decode("utf-8")}')
321
+
322
+ except KeyboardInterrupt:
323
+ pass
324
+ finally:
325
+ consumer.close()
326
+ ```
327
+
328
+ ### Go Example
329
+
330
+ Install sarama (Kafka client):
331
+
332
+ ```bash
333
+ go get github.com/IBM/sarama
334
+ ```
335
+
336
+ **Producer (producer.go):**
337
+
338
+ ```go
339
+ package main
340
+
341
+ import (
342
+ "fmt"
343
+ "log"
344
+
345
+ "github.com/IBM/sarama"
346
+ )
347
+
348
+ func main() {
349
+ config := sarama.NewConfig()
350
+ config.Producer.Return.Successes = true
351
+
352
+ producer, err := sarama.NewSyncProducer([]string{"redpanda:9092"}, config)
353
+ if err != nil {
354
+ log.Fatal(err)
355
+ }
356
+ defer producer.Close()
357
+
358
+ message := &sarama.ProducerMessage{
359
+ Topic: "my-topic",
360
+ Key: sarama.StringEncoder("key1"),
361
+ Value: sarama.StringEncoder("Hello Redpanda!"),
362
+ }
363
+
364
+ partition, offset, err := producer.SendMessage(message)
365
+ if err != nil {
366
+ log.Fatal(err)
367
+ }
368
+
369
+ fmt.Printf("Message sent to partition %d at offset %d\n", partition, offset)
370
+ }
371
+ ```
372
+
373
+ **Consumer (consumer.go):**
374
+
375
+ ```go
376
+ package main
377
+
378
+ import (
379
+ "context"
380
+ "fmt"
381
+ "log"
382
+
383
+ "github.com/IBM/sarama"
384
+ )
385
+
386
+ func main() {
387
+ config := sarama.NewConfig()
388
+ config.Consumer.Return.Errors = true
389
+
390
+ consumer, err := sarama.NewConsumerGroup([]string{"redpanda:9092"}, "my-group", config)
391
+ if err != nil {
392
+ log.Fatal(err)
393
+ }
394
+ defer consumer.Close()
395
+
396
+ handler := ConsumerGroupHandler{}
397
+
398
+ ctx := context.Background()
399
+ for {
400
+ if err := consumer.Consume(ctx, []string{"my-topic"}, &handler); err != nil {
401
+ log.Fatal(err)
402
+ }
403
+ }
404
+ }
405
+
406
+ type ConsumerGroupHandler struct{}
407
+
408
+ func (h ConsumerGroupHandler) Setup(_ sarama.ConsumerGroupSession) error { return nil }
409
+ func (h ConsumerGroupHandler) Cleanup(_ sarama.ConsumerGroupSession) error { return nil }
410
+
411
+ func (h ConsumerGroupHandler) ConsumeClaim(session sarama.ConsumerGroupSession, claim sarama.ConsumerGroupClaim) error {
412
+ for message := range claim.Messages() {
413
+ fmt.Printf("Message: topic=%s partition=%d offset=%d key=%s value=%s\n",
414
+ message.Topic, message.Partition, message.Offset,
415
+ string(message.Key), string(message.Value))
416
+ session.MarkMessage(message, "")
417
+ }
418
+ return nil
419
+ }
420
+ ```
421
+
422
+ ### .NET Example
423
+
424
+ Install Confluent.Kafka:
425
+
426
+ ```bash
427
+ dotnet add package Confluent.Kafka
428
+ ```
429
+
430
+ **Producer (Producer.cs):**
431
+
432
+ ```csharp
433
+ using Confluent.Kafka;
434
+
435
+ var config = new ProducerConfig
436
+ {
437
+ BootstrapServers = "redpanda:9092",
438
+ ClientId = "my-app"
439
+ };
440
+
441
+ using var producer = new ProducerBuilder<string, string>(config).Build();
442
+
443
+ var message = new Message<string, string>
444
+ {
445
+ Key = "key1",
446
+ Value = "Hello Redpanda!"
447
+ };
448
+
449
+ var result = await producer.ProduceAsync("my-topic", message);
450
+ Console.WriteLine($"Message delivered to {result.TopicPartitionOffset}");
451
+ ```
452
+
453
+ **Consumer (Consumer.cs):**
454
+
455
+ ```csharp
456
+ using Confluent.Kafka;
457
+
458
+ var config = new ConsumerConfig
459
+ {
460
+ BootstrapServers = "redpanda:9092",
461
+ GroupId = "my-group",
462
+ AutoOffsetReset = AutoOffsetReset.Earliest
463
+ };
464
+
465
+ using var consumer = new ConsumerBuilder<string, string>(config).Build();
466
+ consumer.Subscribe("my-topic");
467
+
468
+ var cts = new CancellationTokenSource();
469
+ Console.CancelKeyPress += (_, e) => {
470
+ e.Cancel = true;
471
+ cts.Cancel();
472
+ };
473
+
474
+ try
475
+ {
476
+ while (true)
477
+ {
478
+ var result = consumer.Consume(cts.Token);
479
+ Console.WriteLine($"Received: {result.Message.Value}");
480
+ }
481
+ }
482
+ catch (OperationCanceledException)
483
+ {
484
+ consumer.Close();
485
+ }
486
+ ```
487
+
488
+ ## Use Cases
489
+
490
+ - **Event Streaming** - Real-time event processing and stream processing
491
+ - **Log Aggregation** - Centralized logging from multiple services
492
+ - **Data Pipelines** - Move data between systems with exactly-once semantics
493
+ - **Metrics Collection** - High-throughput metrics streaming
494
+ - **Change Data Capture** - Stream database changes to other systems
495
+ - **Event Sourcing** - Store and replay application events
496
+ - **Message Queuing** - Kafka-compatible messaging (alternative to RabbitMQ)
497
+ - **Real-Time Analytics** - Process streaming data in real-time
498
+
499
+ **Integrates well with:**
500
+
501
+ - Language overlays (Node.js, Python, Go, .NET, Java) with Kafka clients
502
+ - Observability stack (OTEL Collector, Prometheus) for metrics and monitoring
503
+ - Microservice architectures requiring event streaming
504
+
505
+ ## Redpanda vs Kafka
506
+
507
+ | Feature | Redpanda | Apache Kafka |
508
+ | --------------------- | -------------------------- | ----------------------------- |
509
+ | **Zookeeper** | ❌ Not required | ✅ Required (adds complexity) |
510
+ | **Resource Usage** | ✅ Lower (1-2 GB RAM) | ⚠️ Higher (4+ GB RAM) |
511
+ | **Startup Time** | ✅ Fast (~5 seconds) | ⚠️ Slower (~30 seconds) |
512
+ | **API Compatibility** | ✅ 100% Kafka compatible | ✅ Native |
513
+ | **Management UI** | ✅ Modern Redpanda Console | ⚠️ Requires separate tools |
514
+ | **Schema Registry** | ✅ Built-in | ⚠️ Separate service |
515
+ | **Production Ready** | ✅ Yes | ✅ Yes |
516
+ | **Local Development** | ✅ Optimized | ⚠️ Resource heavy |
517
+
518
+ **Recommendation:** Use Redpanda for local development, testing, and smaller deployments. It's faster, lighter, and easier to operate than Kafka while maintaining full compatibility.
519
+
520
+ ## Messaging Patterns
521
+
522
+ ### Event Streaming
523
+
524
+ ```
525
+ Producer1 → Topic (partitioned) → Consumer Group 1
526
+ Producer2 → → Consumer Group 2
527
+ Producer3 → → Consumer Group 3
528
+ ```
529
+
530
+ Multiple consumers process events independently with ordering guarantees per partition.
531
+
532
+ ### Event Sourcing
533
+
534
+ ```
535
+ Commands → Event Store Topic → Event Handlers
536
+ → Projections
537
+ → Snapshots
538
+ ```
539
+
540
+ Store all state changes as events for replay and audit trail.
541
+
542
+ ### Change Data Capture
543
+
544
+ ```
545
+ Database → CDC Connector → Kafka Topic → Downstream Systems
546
+ ```
547
+
548
+ Stream database changes in real-time.
549
+
550
+ ### Stream Processing
551
+
552
+ ```
553
+ Input Topic → Stream Processor → Output Topic
554
+ (filter, map,
555
+ aggregate,
556
+ join)
557
+ ```
558
+
559
+ Transform and enrich events in real-time.
560
+
561
+ ## Troubleshooting
562
+
563
+ ### Service Not Starting
564
+
565
+ **Check logs:**
566
+
567
+ ```bash
568
+ docker logs redpanda
569
+ docker logs redpanda-console
570
+ ```
571
+
572
+ **Common issues:**
573
+
574
+ - Port conflicts (9092, 8080, or other ports in use)
575
+ - Insufficient memory (Redpanda needs at least 1 GB)
576
+ - Volume permission issues
577
+
578
+ ### Cannot Connect to Redpanda
579
+
580
+ **Verify service is running:**
581
+
582
+ ```bash
583
+ docker ps | grep redpanda
584
+ ```
585
+
586
+ **Check health:**
587
+
588
+ ```bash
589
+ docker exec redpanda rpk cluster health
590
+ ```
591
+
592
+ **Test connectivity:**
593
+
594
+ ```bash
595
+ # From dev container
596
+ curl http://redpanda:9644/v1/cluster/health_overview
597
+ ```
598
+
599
+ ### Console UI Not Loading
600
+
601
+ **Check console logs:**
602
+
603
+ ```bash
604
+ docker logs redpanda-console
605
+ ```
606
+
607
+ **Verify Redpanda is healthy:**
608
+ The console depends on Redpanda being fully started.
609
+
610
+ **Check port forwarding:**
611
+ Ensure port 8080 is forwarded in devcontainer configuration.
612
+
613
+ ### Messages Not Being Consumed
614
+
615
+ **Check consumer group status:**
616
+
617
+ ```bash
618
+ docker exec redpanda rpk group describe my-group
619
+ ```
620
+
621
+ **Verify topic exists:**
622
+
623
+ ```bash
624
+ docker exec redpanda rpk topic list
625
+ ```
626
+
627
+ **Check topic configuration:**
628
+
629
+ ```bash
630
+ docker exec redpanda rpk topic describe my-topic
631
+ ```
632
+
633
+ ### Performance Issues
634
+
635
+ **Monitor cluster health:**
636
+
637
+ ```bash
638
+ docker exec redpanda rpk cluster health
639
+ ```
640
+
641
+ **Increase memory allocation:**
642
+ Edit `docker-compose.yml` and increase `--memory` flag.
643
+
644
+ **Check partition distribution:**
645
+
646
+ ```bash
647
+ docker exec redpanda rpk topic describe my-topic
648
+ ```
649
+
650
+ ## Security Considerations
651
+
652
+ ⚠️ **Development Configuration:**
653
+
654
+ - No authentication enabled by default
655
+ - Suitable for local development only
656
+ - Do not expose ports publicly
657
+
658
+ **Production Recommendations:**
659
+
660
+ - Enable SASL authentication
661
+ - Use TLS for encryption
662
+ - Configure ACLs for authorization
663
+ - Enable audit logging
664
+ - Regularly update Redpanda version
665
+ - Monitor security advisories
666
+
667
+ **Enabling Authentication (production):**
668
+ Redpanda supports SASL/SCRAM authentication. See [Redpanda Security Documentation](https://docs.redpanda.com/docs/manage/security/) for configuration details.
669
+
670
+ ## Related Overlays
671
+
672
+ **Alternative Messaging Systems:**
673
+
674
+ - `rabbitmq` - AMQP message broker (better for task queues and RPC)
675
+ - `nats` - Lightweight pub/sub (faster but simpler than Kafka)
676
+
677
+ **Complementary Overlays:**
678
+
679
+ - Language overlays - Application development with Kafka clients
680
+ - `otel-collector` - Distributed tracing and metrics
681
+ - `prometheus` - Metrics collection from Redpanda
682
+ - `grafana` - Visualization of streaming metrics
683
+
684
+ ## Additional Resources
685
+
686
+ - [Official Redpanda Documentation](https://docs.redpanda.com/)
687
+ - [Redpanda vs Kafka Comparison](https://redpanda.com/blog/redpanda-vs-apache-kafka)
688
+ - [Redpanda Console Documentation](https://docs.redpanda.com/docs/manage/console/)
689
+ - [rpk CLI Reference](https://docs.redpanda.com/docs/reference/rpk/)
690
+ - [Kafka Compatibility](https://docs.redpanda.com/docs/reference/kafka-api/)
691
+
692
+ ## Notes
693
+
694
+ - Redpanda is 100% compatible with Kafka clients and tools
695
+ - No Zookeeper required - simpler architecture
696
+ - Optimized for low latency and high throughput
697
+ - Built-in Schema Registry compatible with Confluent Schema Registry
698
+ - Supports Kafka transactions and exactly-once semantics
699
+ - Default retention is 7 days (configurable per topic)
700
+ - Single-node mode suitable for development
701
+ - Console UI provides modern, intuitive interface
702
+ - Written in C++ for performance (vs Java for Kafka)
703
+ - Supports compacted topics for key-value stores