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,584 @@
1
+ # SQLite Overlay
2
+
3
+ SQLite embedded database with enhanced CLI tools and VS Code extensions for file-based database development.
4
+
5
+ ## Features
6
+
7
+ - **sqlite3 CLI** - Command-line interface for SQLite databases
8
+ - **litecli** - Modern CLI with syntax highlighting and autocompletion (requires Python)
9
+ - **File-based** - No server required, database stored in local files
10
+ - **VS Code Extensions:**
11
+ - SQLite Viewer (qwtel.sqlite-viewer) - View and edit SQLite databases
12
+ - SQLite (alexcvzz.vscode-sqlite) - Query and manage databases
13
+ - **Lightweight** - Minimal resource usage, instant startup
14
+ - **No service** - Works with both plain and compose templates
15
+
16
+ ## How It Works
17
+
18
+ Unlike server-based databases, SQLite stores the entire database in a single file on disk. This overlay installs the SQLite CLI tools and VS Code extensions for working with SQLite databases.
19
+
20
+ **Architecture:**
21
+
22
+ ```mermaid
23
+ graph LR
24
+ A[Development Container<br/>Your application code<br/>sqlite3 CLI<br/>litecli enhanced CLI<br/>SQLite databases .db<br/>No server needed]
25
+ ```
26
+
27
+ **No Docker Compose service** - SQLite is embedded directly in your application and development environment.
28
+
29
+ ## Configuration
30
+
31
+ No configuration needed! SQLite databases are just files on disk.
32
+
33
+ **Typical database locations:**
34
+
35
+ ```bash
36
+ # In project root
37
+ /workspace/database.db
38
+
39
+ # In data directory
40
+ /workspace/data/app.db
41
+
42
+ # In home directory
43
+ ~/myapp.db
44
+ ```
45
+
46
+ ## Common Commands
47
+
48
+ ### Using sqlite3 CLI
49
+
50
+ ```bash
51
+ # Create/open database
52
+ sqlite3 myapp.db
53
+
54
+ # Create database and run commands
55
+ sqlite3 myapp.db "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT);"
56
+
57
+ # Run SQL file
58
+ sqlite3 myapp.db < schema.sql
59
+
60
+ # Dump database
61
+ sqlite3 myapp.db .dump > backup.sql
62
+
63
+ # Export to CSV
64
+ sqlite3 -header -csv myapp.db "SELECT * FROM users;" > users.csv
65
+
66
+ # Interactive mode
67
+ sqlite3 myapp.db
68
+ ```
69
+
70
+ ### SQLite Interactive Commands
71
+
72
+ ```sql
73
+ -- Inside sqlite3 interactive session
74
+
75
+ .help -- Show all commands
76
+ .tables -- List tables
77
+ .schema users -- Show table schema
78
+ .mode column -- Pretty-print results
79
+ .headers on -- Show column headers
80
+ .width 20 40 -- Set column widths
81
+
82
+ -- Query data
83
+ SELECT * FROM users;
84
+
85
+ -- Insert data
86
+ INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
87
+
88
+ -- Exit
89
+ .quit
90
+ ```
91
+
92
+ ### Using litecli (Enhanced CLI)
93
+
94
+ ```bash
95
+ # Create/open database (if Python overlay installed)
96
+ litecli myapp.db
97
+
98
+ # Features:
99
+ # - Syntax highlighting
100
+ # - Auto-completion (type table names, column names)
101
+ # - Query history (up/down arrows)
102
+ # - Multi-line editing
103
+ # - Better output formatting
104
+ ```
105
+
106
+ ### Database Operations
107
+
108
+ ```bash
109
+ # Create table
110
+ sqlite3 myapp.db "
111
+ CREATE TABLE users (
112
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
113
+ name TEXT NOT NULL,
114
+ email TEXT UNIQUE,
115
+ created_at DATETIME DEFAULT CURRENT_TIMESTAMP
116
+ );"
117
+
118
+ # Insert data
119
+ sqlite3 myapp.db "INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');"
120
+
121
+ # Query data
122
+ sqlite3 myapp.db "SELECT * FROM users;"
123
+
124
+ # Update data
125
+ sqlite3 myapp.db "UPDATE users SET email = 'newemail@example.com' WHERE name = 'Alice';"
126
+
127
+ # Delete data
128
+ sqlite3 myapp.db "DELETE FROM users WHERE id = 1;"
129
+
130
+ # Vacuum (reclaim space)
131
+ sqlite3 myapp.db "VACUUM;"
132
+
133
+ # Backup database
134
+ sqlite3 myapp.db ".backup myapp_backup.db"
135
+
136
+ # Restore from backup
137
+ sqlite3 myapp.db ".restore myapp_backup.db"
138
+ ```
139
+
140
+ ### Using VS Code Extensions
141
+
142
+ **SQLite Viewer Extension:**
143
+
144
+ 1. Right-click on `.db` file in VS Code Explorer
145
+ 2. Select "Open with SQLite Viewer"
146
+ 3. Browse tables, view data, edit rows
147
+
148
+ **SQLite Extension:**
149
+
150
+ 1. Open Command Palette (Ctrl+Shift+P / Cmd+Shift+P)
151
+ 2. Select "SQLite: Open Database"
152
+ 3. Choose your `.db` file
153
+ 4. Use "SQLite: New Query" to run SQL
154
+
155
+ ## Application Integration
156
+
157
+ ### Node.js
158
+
159
+ ```bash
160
+ # Install better-sqlite3 (synchronous, faster)
161
+ npm install better-sqlite3
162
+
163
+ # Or use sqlite3 (asynchronous)
164
+ npm install sqlite3
165
+ ```
166
+
167
+ ```javascript
168
+ // Using better-sqlite3
169
+ const Database = require('better-sqlite3');
170
+
171
+ const db = new Database('myapp.db');
172
+
173
+ // Create table
174
+ db.exec(`
175
+ CREATE TABLE IF NOT EXISTS users (
176
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
177
+ name TEXT,
178
+ email TEXT UNIQUE
179
+ )
180
+ `);
181
+
182
+ // Insert
183
+ const insert = db.prepare('INSERT INTO users (name, email) VALUES (?, ?)');
184
+ insert.run('Alice', 'alice@example.com');
185
+
186
+ // Query
187
+ const users = db.prepare('SELECT * FROM users').all();
188
+ console.log(users);
189
+
190
+ db.close();
191
+ ```
192
+
193
+ ### Python
194
+
195
+ ```bash
196
+ # sqlite3 module is built-in, no installation needed
197
+ ```
198
+
199
+ ```python
200
+ import sqlite3
201
+
202
+ # Connect (creates file if doesn't exist)
203
+ conn = sqlite3.connect('myapp.db')
204
+ cursor = conn.cursor()
205
+
206
+ # Create table
207
+ cursor.execute('''
208
+ CREATE TABLE IF NOT EXISTS users (
209
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
210
+ name TEXT,
211
+ email TEXT UNIQUE
212
+ )
213
+ ''')
214
+
215
+ # Insert
216
+ cursor.execute('INSERT INTO users (name, email) VALUES (?, ?)',
217
+ ('Alice', 'alice@example.com'))
218
+ conn.commit()
219
+
220
+ # Query
221
+ cursor.execute('SELECT * FROM users')
222
+ for row in cursor.fetchall():
223
+ print(row)
224
+
225
+ # Close
226
+ conn.close()
227
+ ```
228
+
229
+ ### .NET
230
+
231
+ ```bash
232
+ # Install SQLite package
233
+ dotnet add package Microsoft.Data.Sqlite
234
+ ```
235
+
236
+ ```csharp
237
+ using Microsoft.Data.Sqlite;
238
+
239
+ using var connection = new SqliteConnection("Data Source=myapp.db");
240
+ await connection.OpenAsync();
241
+
242
+ // Create table
243
+ var createCmd = connection.CreateCommand();
244
+ createCmd.CommandText = @"
245
+ CREATE TABLE IF NOT EXISTS users (
246
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
247
+ name TEXT,
248
+ email TEXT UNIQUE
249
+ )
250
+ ";
251
+ await createCmd.ExecuteNonQueryAsync();
252
+
253
+ // Insert
254
+ var insertCmd = connection.CreateCommand();
255
+ insertCmd.CommandText = "INSERT INTO users (name, email) VALUES ($name, $email)";
256
+ insertCmd.Parameters.AddWithValue("$name", "Alice");
257
+ insertCmd.Parameters.AddWithValue("$email", "alice@example.com");
258
+ await insertCmd.ExecuteNonQueryAsync();
259
+
260
+ // Query
261
+ var selectCmd = connection.CreateCommand();
262
+ selectCmd.CommandText = "SELECT * FROM users";
263
+ using var reader = await selectCmd.ExecuteReaderAsync();
264
+ while (await reader.ReadAsync())
265
+ {
266
+ Console.WriteLine($"{reader["name"]}: {reader["email"]}");
267
+ }
268
+ ```
269
+
270
+ ### Go
271
+
272
+ ```bash
273
+ # Install SQLite driver
274
+ go get github.com/mattn/go-sqlite3
275
+ ```
276
+
277
+ ```go
278
+ package main
279
+
280
+ import (
281
+ "database/sql"
282
+ _ "github.com/mattn/go-sqlite3"
283
+ )
284
+
285
+ func main() {
286
+ db, _ := sql.Open("sqlite3", "myapp.db")
287
+ defer db.Close()
288
+
289
+ // Create table
290
+ db.Exec(`
291
+ CREATE TABLE IF NOT EXISTS users (
292
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
293
+ name TEXT,
294
+ email TEXT UNIQUE
295
+ )
296
+ `)
297
+
298
+ // Insert
299
+ db.Exec("INSERT INTO users (name, email) VALUES (?, ?)",
300
+ "Alice", "alice@example.com")
301
+
302
+ // Query
303
+ rows, _ := db.Query("SELECT * FROM users")
304
+ defer rows.Close()
305
+
306
+ for rows.Next() {
307
+ var id int
308
+ var name, email string
309
+ rows.Scan(&id, &name, &email)
310
+ println(id, name, email)
311
+ }
312
+ }
313
+ ```
314
+
315
+ ### Rust
316
+
317
+ ```bash
318
+ # Add to Cargo.toml
319
+ # rusqlite = "0.30"
320
+ ```
321
+
322
+ ```rust
323
+ use rusqlite::{Connection, Result};
324
+
325
+ fn main() -> Result<()> {
326
+ let conn = Connection::open("myapp.db")?;
327
+
328
+ // Create table
329
+ conn.execute(
330
+ "CREATE TABLE IF NOT EXISTS users (
331
+ id INTEGER PRIMARY KEY,
332
+ name TEXT,
333
+ email TEXT UNIQUE
334
+ )",
335
+ [],
336
+ )?;
337
+
338
+ // Insert
339
+ conn.execute(
340
+ "INSERT INTO users (name, email) VALUES (?1, ?2)",
341
+ &["Alice", "alice@example.com"],
342
+ )?;
343
+
344
+ // Query
345
+ let mut stmt = conn.prepare("SELECT * FROM users")?;
346
+ let users = stmt.query_map([], |row| {
347
+ Ok((
348
+ row.get::<_, i32>(0)?,
349
+ row.get::<_, String>(1)?,
350
+ row.get::<_, String>(2)?,
351
+ ))
352
+ })?;
353
+
354
+ for user in users {
355
+ println!("{:?}", user?);
356
+ }
357
+
358
+ Ok(())
359
+ }
360
+ ```
361
+
362
+ ## Use Cases
363
+
364
+ - **Embedded databases** - Mobile apps, desktop apps, single-user applications
365
+ - **Testing** - Fast, in-memory or file-based test databases
366
+ - **Prototyping** - Quick database without server setup
367
+ - **Small applications** - Low-traffic websites, personal projects
368
+ - **Local caching** - Store data locally without network overhead
369
+ - **Data analysis** - Query CSV/JSON data imported into SQLite
370
+ - **Learning SQL** - Simple, no-configuration database for education
371
+
372
+ **Integrates well with:**
373
+
374
+ - Node.js, Python, .NET, Go, Rust (all have excellent SQLite support)
375
+ - Any application needing embedded database
376
+ - File-based projects (no network required)
377
+
378
+ ## Troubleshooting
379
+
380
+ ### Issue: Database is locked
381
+
382
+ **Symptoms:**
383
+
384
+ - "database is locked" error
385
+ - Timeout when writing
386
+
387
+ **Solution:**
388
+
389
+ ```bash
390
+ # Only one writer allowed at a time
391
+ # Close all open connections before writing
392
+
393
+ # In Python:
394
+ conn.close()
395
+
396
+ # Check for .db-wal and .db-shm files (Write-Ahead Logging)
397
+ ls -la *.db*
398
+
399
+ # Force checkpoint (close WAL)
400
+ sqlite3 myapp.db "PRAGMA wal_checkpoint(FULL);"
401
+ ```
402
+
403
+ ### Issue: litecli not found
404
+
405
+ **Symptoms:**
406
+
407
+ - `litecli: command not found`
408
+
409
+ **Solution:**
410
+
411
+ ```bash
412
+ # litecli requires Python
413
+ # Install Python overlay for litecli support
414
+
415
+ # Or install manually:
416
+ pip install --user litecli
417
+ export PATH="$HOME/.local/bin:$PATH"
418
+ ```
419
+
420
+ ### Issue: Database file not found
421
+
422
+ **Symptoms:**
423
+
424
+ - "unable to open database file"
425
+
426
+ **Solution:**
427
+
428
+ ```bash
429
+ # Check file path is correct
430
+ ls -la myapp.db
431
+
432
+ # Use absolute path
433
+ sqlite3 /workspace/myapp.db
434
+
435
+ # Or ensure you're in the correct directory
436
+ cd /workspace
437
+ sqlite3 myapp.db
438
+ ```
439
+
440
+ ### Issue: Corrupted database
441
+
442
+ **Symptoms:**
443
+
444
+ - "database disk image is malformed"
445
+
446
+ **Solution:**
447
+
448
+ ```bash
449
+ # Try to dump and recreate
450
+ sqlite3 myapp.db .dump > backup.sql
451
+ mv myapp.db myapp.db.corrupted
452
+ sqlite3 myapp_new.db < backup.sql
453
+
454
+ # Run integrity check
455
+ sqlite3 myapp.db "PRAGMA integrity_check;"
456
+
457
+ # If salvageable, export and reimport
458
+ ```
459
+
460
+ ### Issue: Performance issues
461
+
462
+ **Symptoms:**
463
+
464
+ - Slow inserts/updates
465
+ - Database growing large
466
+
467
+ **Solution:**
468
+
469
+ ```bash
470
+ # Use transactions for bulk inserts
471
+ sqlite3 myapp.db "
472
+ BEGIN TRANSACTION;
473
+ INSERT INTO users ...;
474
+ INSERT INTO users ...;
475
+ COMMIT;
476
+ "
477
+
478
+ # Enable WAL mode (better concurrency)
479
+ sqlite3 myapp.db "PRAGMA journal_mode=WAL;"
480
+
481
+ # Analyze query performance
482
+ sqlite3 myapp.db "EXPLAIN QUERY PLAN SELECT * FROM users WHERE email = 'test@example.com';"
483
+
484
+ # Create indexes
485
+ sqlite3 myapp.db "CREATE INDEX idx_users_email ON users(email);"
486
+
487
+ # Vacuum to reclaim space
488
+ sqlite3 myapp.db "VACUUM;"
489
+ ```
490
+
491
+ ## Performance Tips
492
+
493
+ 1. **Use transactions** for bulk operations:
494
+
495
+ ```sql
496
+ BEGIN TRANSACTION;
497
+ -- Multiple INSERT/UPDATE statements
498
+ COMMIT;
499
+ ```
500
+
501
+ 2. **Enable WAL mode** for better concurrency:
502
+
503
+ ```sql
504
+ PRAGMA journal_mode=WAL;
505
+ ```
506
+
507
+ 3. **Create indexes** on frequently queried columns:
508
+
509
+ ```sql
510
+ CREATE INDEX idx_users_email ON users(email);
511
+ ```
512
+
513
+ 4. **Use prepared statements** in application code (prevents SQL injection, faster)
514
+
515
+ 5. **Vacuum regularly** to reclaim space:
516
+ ```sql
517
+ VACUUM;
518
+ ```
519
+
520
+ ## Security Considerations
521
+
522
+ ⚠️ **File-based security:**
523
+
524
+ - SQLite databases are single files - protect file permissions
525
+ - No built-in user authentication/authorization
526
+ - Applications must implement access control
527
+
528
+ **Best practices:**
529
+
530
+ 1. **File permissions:**
531
+
532
+ ```bash
533
+ # Restrict database file access
534
+ chmod 600 myapp.db
535
+ ```
536
+
537
+ 2. **Use parameterized queries** to prevent SQL injection:
538
+
539
+ ```python
540
+ # Good
541
+ cursor.execute('SELECT * FROM users WHERE email = ?', (email,))
542
+
543
+ # Bad (SQL injection vulnerable)
544
+ cursor.execute(f'SELECT * FROM users WHERE email = "{email}"')
545
+ ```
546
+
547
+ 3. **Encrypt sensitive data:**
548
+
549
+ ```bash
550
+ # Use SQLCipher for encrypted databases
551
+ # Or encrypt database file at OS level
552
+ ```
553
+
554
+ 4. **Backup regularly:**
555
+ ```bash
556
+ # Automated backups
557
+ sqlite3 myapp.db ".backup /backups/myapp_$(date +%Y%m%d).db"
558
+ ```
559
+
560
+ ## Related Overlays
561
+
562
+ - **nodejs** - Node.js with better-sqlite3 support
563
+ - **python** - Python with built-in sqlite3 module (enables litecli)
564
+ - **dotnet** - .NET with Microsoft.Data.Sqlite
565
+ - No service dependencies - works standalone
566
+
567
+ ## Additional Resources
568
+
569
+ - [Official SQLite Documentation](https://www.sqlite.org/docs.html)
570
+ - [SQLite Tutorial](https://www.sqlitetutorial.net/)
571
+ - [litecli GitHub](https://github.com/dbcli/litecli)
572
+ - [SQLite Viewer Extension](https://marketplace.visualstudio.com/items?itemName=qwtel.sqlite-viewer)
573
+ - [When to Use SQLite](https://www.sqlite.org/whentouse.html)
574
+
575
+ ## Notes
576
+
577
+ - SQLite is **not** a client-server database - it's embedded in your application
578
+ - Perfect for **development, testing, and small-to-medium applications**
579
+ - Database is a **single file** - easy to copy, backup, version control
580
+ - **No network overhead** - faster than client-server databases for local use
581
+ - **ACID compliant** - full transaction support
582
+ - **Cross-platform** - database files work across Windows, macOS, Linux
583
+ - **Widely supported** - drivers available for virtually every language
584
+ - litecli requires Python - install Python overlay for enhanced CLI experience
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainer.base.schema.json",
3
+ "features": {
4
+ "./features/cross-distro-packages": {
5
+ "apt": "sqlite3",
6
+ "apk": "sqlite"
7
+ }
8
+ },
9
+ "customizations": {
10
+ "vscode": {
11
+ "extensions": ["qwtel.sqlite-viewer", "alexcvzz.vscode-sqlite"]
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,15 @@
1
+ id: sqlite
2
+ name: SQLite
3
+ description: SQLite with litecli and VS Code extensions
4
+ category: database
5
+ supports: []
6
+ requires: []
7
+ suggests:
8
+ - python
9
+ conflicts: []
10
+ tags:
11
+ - database
12
+ - sql
13
+ - sqlite
14
+ - embedded
15
+ ports: []
@@ -0,0 +1,27 @@
1
+ #!/bin/bash
2
+ # SQLite setup script - installs litecli for better CLI experience
3
+
4
+ set -e
5
+
6
+ echo "🔧 Setting up SQLite tools..."
7
+
8
+ # Install litecli via pip if Python is available
9
+ if command -v pip &> /dev/null || command -v pip3 &> /dev/null; then
10
+ echo "📦 Installing litecli..."
11
+ if command -v pip3 &> /dev/null; then
12
+ pip3 install --user litecli || echo "⚠️ litecli installation failed, continuing..."
13
+ else
14
+ pip install --user litecli || echo "⚠️ litecli installation failed, continuing..."
15
+ fi
16
+
17
+ # Add to PATH if not already there
18
+ if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
19
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
20
+ export PATH="$HOME/.local/bin:$PATH"
21
+ fi
22
+ else
23
+ echo "⚠️ Python/pip not found, skipping litecli installation"
24
+ echo " Install Python overlay for enhanced SQLite CLI (litecli)"
25
+ fi
26
+
27
+ echo "✅ SQLite setup complete"
@@ -0,0 +1,43 @@
1
+ #!/bin/bash
2
+ # Verification script for SQLite overlay
3
+ # Confirms SQLite and tools are installed
4
+
5
+ set -e
6
+
7
+ echo "🔍 Verifying SQLite overlay..."
8
+ echo ""
9
+
10
+ # Check sqlite3 is installed
11
+ echo "1️⃣ Checking sqlite3..."
12
+ if command -v sqlite3 &> /dev/null; then
13
+ sqlite3 --version
14
+ echo " ✅ sqlite3 found"
15
+ else
16
+ echo " ❌ sqlite3 not found"
17
+ exit 1
18
+ fi
19
+
20
+ # Check litecli (optional)
21
+ echo ""
22
+ echo "2️⃣ Checking litecli (optional enhanced CLI)..."
23
+ if command -v litecli &> /dev/null; then
24
+ litecli --version
25
+ echo " ✅ litecli found"
26
+ else
27
+ echo " ⚠️ litecli not found (optional - install Python overlay for litecli)"
28
+ fi
29
+
30
+ # Test SQLite functionality
31
+ echo ""
32
+ echo "3️⃣ Testing SQLite functionality..."
33
+ TEST_DB="/tmp/test_sqlite.db"
34
+ if sqlite3 "$TEST_DB" "CREATE TABLE test (id INTEGER PRIMARY KEY, value TEXT); INSERT INTO test (value) VALUES ('hello'); SELECT * FROM test;" &> /dev/null; then
35
+ echo " ✅ SQLite is functional"
36
+ rm -f "$TEST_DB"
37
+ else
38
+ echo " ❌ SQLite functionality test failed"
39
+ exit 1
40
+ fi
41
+
42
+ echo ""
43
+ echo "✅ SQLite overlay verification complete"
@@ -0,0 +1,6 @@
1
+ # SQL Server Configuration
2
+ # Password must be at least 8 characters with uppercase, lowercase, digit, and special character
3
+ MSSQL_VERSION=2022-latest
4
+ MSSQL_SA_PASSWORD=YourStrong@Passw0rd
5
+ MSSQL_PID=Developer
6
+ MSSQL_PORT=1433