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,366 @@
1
+ # Stack Presets Guide
2
+
3
+ Container Superposition provides **stack presets** - pre-configured combinations of overlays for common development scenarios. Presets save time by selecting and configuring multiple overlays with sensible defaults.
4
+
5
+ ## What are Presets?
6
+
7
+ Presets are **meta-overlays** that:
8
+
9
+ - **Auto-select** multiple overlays at once
10
+ - **Configure** integration between services with pre-filled environment variables
11
+ - **Provide** usage documentation specific to the stack
12
+ - **Allow** customization after selection
13
+
14
+ ## Available Presets
15
+
16
+ ### 1. Web API Stack
17
+
18
+ **Best for:** REST/GraphQL API development
19
+
20
+ **Includes:**
21
+
22
+ - Language choice: Node.js, .NET, Python, Go, or Java
23
+ - PostgreSQL database
24
+ - Redis cache
25
+ - Full observability: OpenTelemetry Collector, Prometheus, Grafana, Loki
26
+
27
+ **Pre-configured:**
28
+
29
+ - Database connection strings
30
+ - Redis URL
31
+ - OpenTelemetry endpoints
32
+ - Health check endpoints
33
+
34
+ **Usage:**
35
+
36
+ ```bash
37
+ npm run init
38
+ # Select "Web API Stack" when prompted
39
+ # Choose your language (e.g., Node.js)
40
+ # Customize if needed or use as-is
41
+ ```
42
+
43
+ **What you get:**
44
+
45
+ - `DATABASE_URL` for PostgreSQL
46
+ - `REDIS_URL` for Redis
47
+ - `OTEL_EXPORTER_OTLP_ENDPOINT` for telemetry
48
+ - Grafana dashboard at http://localhost:3000
49
+ - Full monitoring stack ready to use
50
+
51
+ ---
52
+
53
+ ### 2. Microservice Stack
54
+
55
+ **Best for:** Microservices architecture development
56
+
57
+ **Includes:**
58
+
59
+ - Language choice: Node.js, .NET, Python, Go, or Java
60
+ - Message broker choice: RabbitMQ, Redpanda (Kafka), or NATS
61
+ - Distributed tracing: OpenTelemetry Collector, Jaeger
62
+ - Monitoring: Prometheus, Grafana
63
+
64
+ **Pre-configured:**
65
+
66
+ - Message broker connection URLs
67
+ - Distributed tracing endpoints
68
+ - Service-to-service communication
69
+
70
+ **Usage:**
71
+
72
+ ```bash
73
+ npm run init
74
+ # Select "Microservice Stack"
75
+ # Choose language (e.g., Node.js)
76
+ # Choose message broker (e.g., RabbitMQ)
77
+ ```
78
+
79
+ **What you get:**
80
+
81
+ - Messaging infrastructure (RabbitMQ/Redpanda/NATS)
82
+ - Full distributed tracing in Jaeger
83
+ - Metrics and dashboards in Grafana
84
+ - Service mesh ready configuration
85
+
86
+ ---
87
+
88
+ ### 3. Documentation Site
89
+
90
+ **Best for:** Documentation website development with MkDocs
91
+
92
+ **Includes:**
93
+
94
+ - MkDocs with Python
95
+ - Pre-commit hooks for quality checks
96
+ - Modern CLI tools (bat, fd, ripgrep, fzf)
97
+
98
+ **Pre-configured:**
99
+
100
+ - MkDocs development server on port 8000
101
+ - Pre-commit hooks for markdown linting
102
+ - GitHub Pages deployment ready
103
+
104
+ **Usage:**
105
+
106
+ ```bash
107
+ npm run init
108
+ # Select "Documentation Site"
109
+ # No language choice needed
110
+ ```
111
+
112
+ **What you get:**
113
+
114
+ - MkDocs server: `mkdocs serve`
115
+ - Quality checks: `pre-commit install`
116
+ - Deploy: `mkdocs gh-deploy`
117
+ - Modern CLI tools for productivity
118
+
119
+ ---
120
+
121
+ ### 4. Full-Stack Application
122
+
123
+ **Best for:** Complete full-stack web applications
124
+
125
+ **Includes:**
126
+
127
+ - Node.js (for frontend: React/Vue/Angular)
128
+ - Backend language choice: .NET, Python, Go, or Java
129
+ - PostgreSQL database
130
+ - Redis cache
131
+ - MinIO (S3-compatible object storage for file uploads)
132
+ - Full observability: OTEL Collector, Prometheus, Grafana, Loki
133
+
134
+ **Pre-configured:**
135
+
136
+ - Frontend on port 3000
137
+ - Backend on port 8000
138
+ - Database, cache, and storage connection strings
139
+ - Cross-origin configuration
140
+ - Full monitoring
141
+
142
+ **Usage:**
143
+
144
+ ```bash
145
+ npm run init
146
+ # Select "Full-Stack Application"
147
+ # Choose backend language (e.g., .NET)
148
+ ```
149
+
150
+ **What you get:**
151
+
152
+ - Frontend: Node.js dev server
153
+ - Backend: Your chosen language/framework
154
+ - Database: PostgreSQL
155
+ - Cache: Redis
156
+ - Storage: MinIO for file uploads
157
+ - Complete observability stack
158
+
159
+ ---
160
+
161
+ ## Using Presets
162
+
163
+ ### Interactive Mode
164
+
165
+ ```bash
166
+ npm run init
167
+ ```
168
+
169
+ 1. Choose "Start from preset" when prompted
170
+ 2. Select your desired preset
171
+ 3. Make user choices (language, message broker, etc.)
172
+ 4. Optionally customize overlay selection
173
+ 5. Complete questionnaire and generate
174
+
175
+ ### Command-Line Mode
176
+
177
+ Presets are not directly available via CLI yet, but you can achieve the same result:
178
+
179
+ **Web API equivalent:**
180
+
181
+ ```bash
182
+ npm run init -- \
183
+ --stack compose \
184
+ --language nodejs \
185
+ --database postgres,redis \
186
+ --observability otel-collector,prometheus,grafana,loki
187
+ ```
188
+
189
+ **Microservice equivalent:**
190
+
191
+ ```bash
192
+ npm run init -- \
193
+ --stack compose \
194
+ --language nodejs \
195
+ --database rabbitmq \
196
+ --observability otel-collector,jaeger,prometheus,grafana
197
+ ```
198
+
199
+ ## Customizing Presets
200
+
201
+ After selecting a preset, you can:
202
+
203
+ 1. **Add overlays:** Select additional overlays not in the preset
204
+ 2. **Remove overlays:** Deselect preset overlays you don't need
205
+ 3. **Change choices:** Pick different language or message broker
206
+
207
+ Example:
208
+
209
+ - Select "Web API Stack"
210
+ - Choose Node.js as language
211
+ - Select "Customize selection"
212
+ - Add `docker-sock` for Docker access
213
+ - Remove `loki` if you don't need log aggregation
214
+
215
+ ## Glue Configuration
216
+
217
+ Presets include **glue configuration** that:
218
+
219
+ ### Environment Variables
220
+
221
+ Pre-configured in `.env.example`:
222
+
223
+ ```bash
224
+ # Web API preset
225
+ DATABASE_URL=postgresql://postgres:postgres@postgres:5432/myapp
226
+ REDIS_URL=redis://redis:6379
227
+ OTEL_EXPORTER_OTLP_ENDPOINT=http://otel-collector:4317
228
+
229
+ # Full-Stack preset
230
+ FRONTEND_PORT=3000
231
+ BACKEND_PORT=8000
232
+ API_URL=http://localhost:8000
233
+ MINIO_ENDPOINT=minio:9000
234
+ ```
235
+
236
+ ### Usage Documentation
237
+
238
+ Each preset generates `PRESET-README.md` with:
239
+
240
+ - Service overview
241
+ - Connection strings
242
+ - Quick start guide
243
+ - Next steps
244
+
245
+ ### Port Mappings
246
+
247
+ Suggested ports (informational):
248
+
249
+ | Preset | Service | Port |
250
+ | ------------ | --------- | ----- |
251
+ | Web API | API | 8000 |
252
+ | Web API | Grafana | 3000 |
253
+ | Microservice | Service | 8080 |
254
+ | Microservice | Jaeger UI | 16686 |
255
+ | Full-Stack | Frontend | 3000 |
256
+ | Full-Stack | Backend | 8000 |
257
+
258
+ ## Manifest Tracking
259
+
260
+ Presets are tracked in `superposition.json`:
261
+
262
+ ```json
263
+ {
264
+ "version": "0.1.0",
265
+ "baseTemplate": "compose",
266
+ "preset": "web-api",
267
+ "presetChoices": {
268
+ "language": "nodejs"
269
+ },
270
+ "overlays": ["nodejs", "postgres", "redis", "otel-collector", "prometheus", "grafana", "loki"]
271
+ }
272
+ ```
273
+
274
+ This allows you to:
275
+
276
+ - Know which preset was used
277
+ - See which choices were made
278
+ - Reproduce the same configuration
279
+
280
+ ## Creating Custom Presets
281
+
282
+ To create your own preset:
283
+
284
+ 1. Create `overlays/presets/my-preset.yml`:
285
+
286
+ ```yaml
287
+ id: my-preset
288
+ name: My Custom Stack
289
+ description: Description of your stack
290
+ type: meta
291
+ category: preset
292
+ supports: [compose] # or [] for both
293
+ tags: [preset, custom, ...]
294
+
295
+ selects:
296
+ required:
297
+ - overlay-1
298
+ - overlay-2
299
+
300
+ userChoice:
301
+ language:
302
+ id: language
303
+ prompt: Select language
304
+ options: [nodejs, python, go]
305
+ defaultOption: nodejs
306
+
307
+ glueConfig:
308
+ environment:
309
+ MY_VAR: 'value'
310
+
311
+ portMappings:
312
+ service: 8000
313
+
314
+ readme: |
315
+ ## My Custom Stack
316
+
317
+ Usage instructions here...
318
+ ```
319
+
320
+ 2. Register in `overlays/index.yml`:
321
+
322
+ ```yaml
323
+ preset_overlays:
324
+ - id: my-preset
325
+ name: My Custom Stack
326
+ description: Description of your stack
327
+ category: preset
328
+ supports: [compose]
329
+ tags: [preset, custom]
330
+ ```
331
+
332
+ 3. Test:
333
+
334
+ ```bash
335
+ npm run build
336
+ npm run init
337
+ ```
338
+
339
+ ## Best Practices
340
+
341
+ 1. **Start with a preset** if it matches your use case - saves time
342
+ 2. **Customize after selection** to add project-specific needs
343
+ 3. **Review PRESET-README.md** for usage instructions
344
+ 4. **Copy .env.example to .env** and customize values
345
+ 5. **Check superposition.json** to understand what was configured
346
+
347
+ ## FAQ
348
+
349
+ **Q: Can I change the preset after generating?**
350
+ A: No, but you can regenerate with a different preset or manually add/remove overlays using the questionnaire.
351
+
352
+ **Q: Do presets work with plain template?**
353
+ A: Some do! Check the preset's `supports` field. `docs-site` works with both, while most others require `compose`.
354
+
355
+ **Q: Can I combine presets?**
356
+ A: No, you can only select one preset. But you can customize it to add overlays from other presets.
357
+
358
+ **Q: What if I don't want to use a preset?**
359
+ A: Choose "Custom (select overlays manually)" when prompted and build your own configuration.
360
+
361
+ ## Next Steps
362
+
363
+ - Try each preset to see which fits your workflow
364
+ - Read preset-specific READMEs for detailed setup
365
+ - Customize presets to match your team's needs
366
+ - Create custom presets for your organization's stacks