@mytechtoday/augment-extensions 0.5.0 → 1.2.0

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 (523) hide show
  1. package/AGENTS.md +265 -232
  2. package/README.md +956 -771
  3. package/augment-extensions/coding-standards/bash/README.md +196 -196
  4. package/augment-extensions/coding-standards/bash/module.json +163 -163
  5. package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -336
  6. package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -289
  7. package/augment-extensions/coding-standards/css/README.md +40 -40
  8. package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -550
  9. package/augment-extensions/coding-standards/css/module.json +44 -44
  10. package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -448
  11. package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -492
  12. package/augment-extensions/coding-standards/html/README.md +40 -40
  13. package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -267
  14. package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -505
  15. package/augment-extensions/coding-standards/html/module.json +44 -44
  16. package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -349
  17. package/augment-extensions/coding-standards/html-css-js/README.md +194 -194
  18. package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -487
  19. package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -550
  20. package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -667
  21. package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -267
  22. package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -612
  23. package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -505
  24. package/augment-extensions/coding-standards/html-css-js/module.json +48 -48
  25. package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -515
  26. package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -448
  27. package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -492
  28. package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -439
  29. package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -349
  30. package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -486
  31. package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -463
  32. package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -543
  33. package/augment-extensions/coding-standards/js/README.md +46 -46
  34. package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -487
  35. package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -667
  36. package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -612
  37. package/augment-extensions/coding-standards/js/module.json +49 -49
  38. package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -515
  39. package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -439
  40. package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -486
  41. package/augment-extensions/coding-standards/js/rules/performance.md +463 -463
  42. package/augment-extensions/coding-standards/js/rules/tooling.md +543 -543
  43. package/augment-extensions/coding-standards/php/README.md +248 -248
  44. package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -204
  45. package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -206
  46. package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -234
  47. package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -211
  48. package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -215
  49. package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -189
  50. package/augment-extensions/coding-standards/php/module.json +166 -166
  51. package/augment-extensions/coding-standards/php/rules/api-development.md +480 -480
  52. package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -332
  53. package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -472
  54. package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -561
  55. package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -402
  56. package/augment-extensions/coding-standards/php/rules/documentation.md +425 -425
  57. package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -627
  58. package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -336
  59. package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -677
  60. package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -279
  61. package/augment-extensions/coding-standards/php/rules/performance.md +392 -392
  62. package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -186
  63. package/augment-extensions/coding-standards/php/rules/security.md +358 -358
  64. package/augment-extensions/coding-standards/php/rules/testing.md +403 -403
  65. package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -331
  66. package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -426
  67. package/augment-extensions/coding-standards/powershell/README.md +154 -154
  68. package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -272
  69. package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -173
  70. package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -243
  71. package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -297
  72. package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -224
  73. package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -340
  74. package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -255
  75. package/augment-extensions/coding-standards/powershell/module.json +165 -165
  76. package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -439
  77. package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -240
  78. package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -384
  79. package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -383
  80. package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -482
  81. package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -296
  82. package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -314
  83. package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -466
  84. package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -244
  85. package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -266
  86. package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -209
  87. package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -314
  88. package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -268
  89. package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -197
  90. package/augment-extensions/coding-standards/python/README.md +48 -48
  91. package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -373
  92. package/augment-extensions/coding-standards/python/module.json +30 -30
  93. package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -884
  94. package/augment-extensions/coding-standards/python/rules/best-practices.md +232 -232
  95. package/augment-extensions/coding-standards/python/rules/code-organization.md +220 -220
  96. package/augment-extensions/coding-standards/python/rules/documentation.md +831 -831
  97. package/augment-extensions/coding-standards/python/rules/error-handling.md +1008 -1008
  98. package/augment-extensions/coding-standards/python/rules/naming-conventions.md +172 -172
  99. package/augment-extensions/coding-standards/python/rules/testing.md +409 -409
  100. package/augment-extensions/coding-standards/python/rules/tooling.md +446 -446
  101. package/augment-extensions/coding-standards/python/rules/type-hints.md +253 -253
  102. package/augment-extensions/coding-standards/react/README.md +45 -45
  103. package/augment-extensions/coding-standards/react/module.json +27 -27
  104. package/augment-extensions/coding-standards/react/rules/component-patterns.md +214 -214
  105. package/augment-extensions/coding-standards/react/rules/hooks-best-practices.md +235 -235
  106. package/augment-extensions/coding-standards/react/rules/performance.md +300 -300
  107. package/augment-extensions/coding-standards/react/rules/state-management.md +265 -265
  108. package/augment-extensions/coding-standards/react/rules/typescript-react.md +271 -271
  109. package/augment-extensions/coding-standards/typescript/README.md +45 -45
  110. package/augment-extensions/coding-standards/typescript/module.json +27 -27
  111. package/augment-extensions/coding-standards/typescript/rules/naming-conventions.md +225 -225
  112. package/augment-extensions/collections/html-css-js/README.md +82 -82
  113. package/augment-extensions/collections/html-css-js/collection.json +41 -41
  114. package/augment-extensions/domain-rules/api-design/README.md +41 -41
  115. package/augment-extensions/domain-rules/api-design/module.json +27 -27
  116. package/augment-extensions/domain-rules/api-design/rules/authentication.md +263 -263
  117. package/augment-extensions/domain-rules/api-design/rules/documentation.md +395 -395
  118. package/augment-extensions/domain-rules/api-design/rules/error-handling.md +290 -290
  119. package/augment-extensions/domain-rules/api-design/rules/graphql-api.md +313 -313
  120. package/augment-extensions/domain-rules/api-design/rules/rest-api.md +214 -214
  121. package/augment-extensions/domain-rules/api-design/rules/versioning.md +268 -268
  122. package/augment-extensions/domain-rules/database/README.md +161 -161
  123. package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -793
  124. package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -1132
  125. package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -868
  126. package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -805
  127. package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -621
  128. package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -965
  129. package/augment-extensions/domain-rules/database/module.json +28 -28
  130. package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -624
  131. package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -588
  132. package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -856
  133. package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -778
  134. package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -963
  135. package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -1076
  136. package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -697
  137. package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -671
  138. package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -607
  139. package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -907
  140. package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -783
  141. package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -980
  142. package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -485
  143. package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -521
  144. package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -858
  145. package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -934
  146. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -23
  147. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -26
  148. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -23
  149. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -26
  150. package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -23
  151. package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -26
  152. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -23
  153. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -26
  154. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -23
  155. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -26
  156. package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -27
  157. package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -26
  158. package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -23
  159. package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -26
  160. package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -23
  161. package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -26
  162. package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -23
  163. package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -26
  164. package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -23
  165. package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -26
  166. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -23
  167. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -26
  168. package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -23
  169. package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -26
  170. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -23
  171. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -26
  172. package/augment-extensions/domain-rules/mcp/README.md +150 -150
  173. package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -522
  174. package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -520
  175. package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -570
  176. package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -427
  177. package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -435
  178. package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -502
  179. package/augment-extensions/domain-rules/mcp/module.json +49 -49
  180. package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -595
  181. package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -345
  182. package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -687
  183. package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -636
  184. package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -484
  185. package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -360
  186. package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -393
  187. package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -194
  188. package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -625
  189. package/augment-extensions/domain-rules/security/README.md +41 -41
  190. package/augment-extensions/domain-rules/security/module.json +28 -28
  191. package/augment-extensions/domain-rules/security/rules/authentication-security.md +361 -361
  192. package/augment-extensions/domain-rules/security/rules/encryption.md +208 -208
  193. package/augment-extensions/domain-rules/security/rules/input-validation.md +294 -294
  194. package/augment-extensions/domain-rules/security/rules/owasp-top-10.md +339 -339
  195. package/augment-extensions/domain-rules/security/rules/secure-coding.md +293 -293
  196. package/augment-extensions/domain-rules/security/rules/web-security.md +268 -268
  197. package/augment-extensions/domain-rules/seo-sales-marketing/ANNOUNCEMENT.md +143 -0
  198. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/README.md +140 -136
  199. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/SCHEMA-VALIDATION-REPORT.md +216 -216
  200. package/augment-extensions/domain-rules/seo-sales-marketing/TEST-VALIDATION.md +129 -0
  201. package/augment-extensions/domain-rules/seo-sales-marketing/USAGE-GUIDES.md +254 -0
  202. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/brand-kit-example.yaml +292 -292
  203. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/campaign-brief-example.yaml +389 -389
  204. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/content-calendar-example.yaml +643 -643
  205. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/email-newsletter-example.md +376 -376
  206. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/landing-page-example.md +934 -934
  207. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/ppc-ad-copy-example.md +301 -301
  208. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/seo-blog-post-example.md +347 -347
  209. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/social-media-campaign-example.md +606 -606
  210. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/module.json +50 -50
  211. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/affiliate-influencer-marketing.md +593 -593
  212. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/asset-management.md +418 -418
  213. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/brand-consistency.md +210 -210
  214. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/content-marketing.md +337 -337
  215. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/conversion-optimization.md +455 -455
  216. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/direct-sales.md +499 -499
  217. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/email-marketing.md +439 -439
  218. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/legal-compliance.md +227 -227
  219. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/ppc-advertising.md +569 -569
  220. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/seo-optimization.md +470 -470
  221. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/social-media-marketing.md +414 -414
  222. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/universal-marketing.md +177 -177
  223. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/asset-inventory.schema.json +247 -247
  224. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/brand-kit.schema.json +326 -326
  225. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/campaign-brief.schema.json +342 -342
  226. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/color-palette.schema.json +223 -223
  227. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/content-template.schema.json +383 -383
  228. package/augment-extensions/domain-rules/wordpress/README.md +163 -163
  229. package/augment-extensions/domain-rules/wordpress/module.json +32 -32
  230. package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -617
  231. package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -270
  232. package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -423
  233. package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -493
  234. package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -568
  235. package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -510
  236. package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -251
  237. package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -501
  238. package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -564
  239. package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -388
  240. package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -441
  241. package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -139
  242. package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -1599
  243. package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -1727
  244. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -428
  245. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -422
  246. package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -1623
  247. package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -1343
  248. package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -734
  249. package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -1350
  250. package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -503
  251. package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -971
  252. package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -53
  253. package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -770
  254. package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -874
  255. package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -629
  256. package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -559
  257. package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -709
  258. package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -736
  259. package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -1057
  260. package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -463
  261. package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -478
  262. package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -818
  263. package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -416
  264. package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -667
  265. package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -878
  266. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -693
  267. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -352
  268. package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -818
  269. package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -624
  270. package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -866
  271. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -1165
  272. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -414
  273. package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -751
  274. package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -949
  275. package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -458
  276. package/augment-extensions/examples/design-patterns/README.md +37 -37
  277. package/augment-extensions/examples/design-patterns/examples/behavioral-patterns.md +370 -370
  278. package/augment-extensions/examples/design-patterns/examples/creational-patterns.md +250 -250
  279. package/augment-extensions/examples/design-patterns/examples/structural-patterns.md +264 -264
  280. package/augment-extensions/examples/design-patterns/module.json +27 -27
  281. package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -101
  282. package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -428
  283. package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -40
  284. package/augment-extensions/examples/rest-api-plugin/README.md +98 -98
  285. package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -1299
  286. package/augment-extensions/examples/rest-api-plugin/module.json +40 -40
  287. package/augment-extensions/examples/woocommerce-extension/README.md +98 -98
  288. package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -763
  289. package/augment-extensions/examples/woocommerce-extension/module.json +40 -40
  290. package/augment-extensions/workflows/beads/README.md +135 -135
  291. package/augment-extensions/workflows/beads/examples/complete-workflow-example.md +278 -278
  292. package/augment-extensions/workflows/beads/module.json +55 -55
  293. package/augment-extensions/workflows/beads/rules/best-practices.md +398 -398
  294. package/augment-extensions/workflows/beads/rules/file-format.md +327 -327
  295. package/augment-extensions/workflows/beads/rules/manual-setup.md +315 -315
  296. package/augment-extensions/workflows/beads/rules/workflow.md +326 -326
  297. package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -145
  298. package/augment-extensions/workflows/beads-integration/README.md +143 -143
  299. package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -32
  300. package/augment-extensions/workflows/beads-integration/config/schema.json +140 -140
  301. package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -293
  302. package/augment-extensions/workflows/beads-integration/module.json +75 -75
  303. package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -219
  304. package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -256
  305. package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -607
  306. package/augment-extensions/workflows/database/README.md +195 -195
  307. package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -295
  308. package/augment-extensions/workflows/database/examples/migration-example.md +498 -498
  309. package/augment-extensions/workflows/database/examples/optimization-example.md +496 -496
  310. package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -444
  311. package/augment-extensions/workflows/database/module.json +42 -42
  312. package/augment-extensions/workflows/database/rules/data-migration.md +249 -249
  313. package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -339
  314. package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -352
  315. package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -435
  316. package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -535
  317. package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -305
  318. package/augment-extensions/workflows/database/rules/workflow.md +458 -458
  319. package/augment-extensions/workflows/wordpress-plugin/README.md +232 -232
  320. package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -839
  321. package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -854
  322. package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -540
  323. package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -1083
  324. package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -669
  325. package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -597
  326. package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -925
  327. package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -752
  328. package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -773
  329. package/augment-extensions/workflows/wordpress-plugin/module.json +49 -49
  330. package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -942
  331. package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -702
  332. package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -728
  333. package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -775
  334. package/augment-extensions/writing-standards/screenplay/README.md +339 -300
  335. package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -121
  336. package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -153
  337. package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -243
  338. package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -213
  339. package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -164
  340. package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -95
  341. package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -116
  342. package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -151
  343. package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -67
  344. package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -142
  345. package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -184
  346. package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -204
  347. package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -181
  348. package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -2
  349. package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -70
  350. package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -2
  351. package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -399
  352. package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -407
  353. package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -293
  354. package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -293
  355. package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -401
  356. package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -293
  357. package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -409
  358. package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -293
  359. package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -293
  360. package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -268
  361. package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -294
  362. package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -293
  363. package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -294
  364. package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -293
  365. package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -289
  366. package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -293
  367. package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -294
  368. package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -293
  369. package/augment-extensions/writing-standards/screenplay/module.json +124 -124
  370. package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -339
  371. package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -329
  372. package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -169
  373. package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -437
  374. package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -263
  375. package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -261
  376. package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -315
  377. package/augment-extensions/writing-standards/screenplay/rules/file-organization.md +213 -0
  378. package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -413
  379. package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -372
  380. package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -374
  381. package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -443
  382. package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -207
  383. package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -444
  384. package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -331
  385. package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -334
  386. package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -299
  387. package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -263
  388. package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -412
  389. package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -370
  390. package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -374
  391. package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -339
  392. package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -277
  393. package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -393
  394. package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -332
  395. package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -247
  396. package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -200
  397. package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -233
  398. package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -245
  399. package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -221
  400. package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -159
  401. package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -2
  402. package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -1449
  403. package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -64
  404. package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -2
  405. package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -520
  406. package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -499
  407. package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -497
  408. package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -492
  409. package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -509
  410. package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -490
  411. package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -499
  412. package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -501
  413. package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -499
  414. package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -498
  415. package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -499
  416. package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -508
  417. package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -500
  418. package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -158
  419. package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -2
  420. package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -643
  421. package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -311
  422. package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -562
  423. package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -538
  424. package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -432
  425. package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -637
  426. package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -66
  427. package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -2
  428. package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -458
  429. package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -490
  430. package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -458
  431. package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -459
  432. package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -491
  433. package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -491
  434. package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -490
  435. package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -464
  436. package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -461
  437. package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -489
  438. package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -494
  439. package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -483
  440. package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -489
  441. package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -496
  442. package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -463
  443. package/augment-extensions/writing-standards/screenplay/utils/__tests__/file-organization.test.ts +169 -0
  444. package/augment-extensions/writing-standards/screenplay/utils/file-organization.ts +165 -0
  445. package/cli/MODULES.md +302 -302
  446. package/cli/dist/cli.js +113 -22
  447. package/cli/dist/cli.js.map +1 -1
  448. package/cli/dist/commands/gui.d.ts.map +1 -1
  449. package/cli/dist/commands/gui.js +54 -6
  450. package/cli/dist/commands/gui.js.map +1 -1
  451. package/cli/dist/commands/init.d.ts.map +1 -1
  452. package/cli/dist/commands/init.js +76 -23
  453. package/cli/dist/commands/init.js.map +1 -1
  454. package/cli/dist/commands/self-remove.d.ts.map +1 -1
  455. package/cli/dist/commands/self-remove.js +48 -74
  456. package/cli/dist/commands/self-remove.js.map +1 -1
  457. package/cli/dist/commands/show.d.ts +15 -0
  458. package/cli/dist/commands/show.d.ts.map +1 -1
  459. package/cli/dist/commands/show.js +576 -23
  460. package/cli/dist/commands/show.js.map +1 -1
  461. package/cli/dist/commands/showCompleted.d.ts +21 -0
  462. package/cli/dist/commands/showCompleted.d.ts.map +1 -0
  463. package/cli/dist/commands/showCompleted.js +225 -0
  464. package/cli/dist/commands/showCompleted.js.map +1 -0
  465. package/cli/dist/commands/skill.js +88 -88
  466. package/cli/dist/commands/update.d.ts +2 -0
  467. package/cli/dist/commands/update.d.ts.map +1 -1
  468. package/cli/dist/commands/update.js +67 -1
  469. package/cli/dist/commands/update.js.map +1 -1
  470. package/cli/dist/utils/beadsCompletedChecker.d.ts +72 -0
  471. package/cli/dist/utils/beadsCompletedChecker.d.ts.map +1 -0
  472. package/cli/dist/utils/beadsCompletedChecker.js +198 -0
  473. package/cli/dist/utils/beadsCompletedChecker.js.map +1 -0
  474. package/cli/dist/utils/catalog-sync.js +13 -13
  475. package/cli/dist/utils/config-system.d.ts +111 -0
  476. package/cli/dist/utils/config-system.d.ts.map +1 -0
  477. package/cli/dist/utils/config-system.js +239 -0
  478. package/cli/dist/utils/config-system.js.map +1 -0
  479. package/cli/dist/utils/extractCommandHelp.d.ts +51 -0
  480. package/cli/dist/utils/extractCommandHelp.d.ts.map +1 -0
  481. package/cli/dist/utils/extractCommandHelp.js +250 -0
  482. package/cli/dist/utils/extractCommandHelp.js.map +1 -0
  483. package/cli/dist/utils/hook-system.d.ts +84 -0
  484. package/cli/dist/utils/hook-system.d.ts.map +1 -0
  485. package/cli/dist/utils/hook-system.js +151 -0
  486. package/cli/dist/utils/hook-system.js.map +1 -0
  487. package/cli/dist/utils/inspection-cache.d.ts +56 -0
  488. package/cli/dist/utils/inspection-cache.d.ts.map +1 -0
  489. package/cli/dist/utils/inspection-cache.js +166 -0
  490. package/cli/dist/utils/inspection-cache.js.map +1 -0
  491. package/cli/dist/utils/inspection-handlers.d.ts +75 -0
  492. package/cli/dist/utils/inspection-handlers.d.ts.map +1 -0
  493. package/cli/dist/utils/inspection-handlers.js +171 -0
  494. package/cli/dist/utils/inspection-handlers.js.map +1 -0
  495. package/cli/dist/utils/install-rules.js +55 -55
  496. package/cli/dist/utils/mcp-integration.js +44 -44
  497. package/cli/dist/utils/module-system.d.ts +1 -0
  498. package/cli/dist/utils/module-system.d.ts.map +1 -1
  499. package/cli/dist/utils/module-system.js +8 -3
  500. package/cli/dist/utils/module-system.js.map +1 -1
  501. package/cli/dist/utils/plugin-system.d.ts +133 -0
  502. package/cli/dist/utils/plugin-system.d.ts.map +1 -0
  503. package/cli/dist/utils/plugin-system.js +210 -0
  504. package/cli/dist/utils/plugin-system.js.map +1 -0
  505. package/cli/dist/utils/progress.d.ts +67 -0
  506. package/cli/dist/utils/progress.d.ts.map +1 -0
  507. package/cli/dist/utils/progress.js +146 -0
  508. package/cli/dist/utils/progress.js.map +1 -0
  509. package/cli/dist/utils/rule-install-hooks.js +8 -8
  510. package/cli/dist/utils/stream-reader.d.ts +34 -0
  511. package/cli/dist/utils/stream-reader.d.ts.map +1 -0
  512. package/cli/dist/utils/stream-reader.js +147 -0
  513. package/cli/dist/utils/stream-reader.js.map +1 -0
  514. package/cli/dist/utils/vscode-editor.d.ts +45 -0
  515. package/cli/dist/utils/vscode-editor.d.ts.map +1 -0
  516. package/cli/dist/utils/vscode-editor.js +171 -0
  517. package/cli/dist/utils/vscode-editor.js.map +1 -0
  518. package/cli/dist/utils/vscode-links.d.ts +49 -0
  519. package/cli/dist/utils/vscode-links.d.ts.map +1 -0
  520. package/cli/dist/utils/vscode-links.js +167 -0
  521. package/cli/dist/utils/vscode-links.js.map +1 -0
  522. package/modules.md +667 -630
  523. package/package.json +85 -85
@@ -1,485 +1,485 @@
1
- # Universal Database Best Practices
2
-
3
- ## Overview
4
-
5
- This document covers universal best practices that apply to all database types: relational (SQL), NoSQL (document, key-value, graph), vector databases, and flat file databases.
6
-
7
- ---
8
-
9
- ## Data Security
10
-
11
- ### Encryption at Rest
12
-
13
- **Encrypt sensitive data stored in databases:**
14
-
15
- ```sql
16
- -- PostgreSQL: Enable transparent data encryption (TDE)
17
- -- Use pgcrypto extension for column-level encryption
18
- CREATE EXTENSION IF NOT EXISTS pgcrypto;
19
-
20
- -- Encrypt sensitive columns
21
- CREATE TABLE users (
22
- id SERIAL PRIMARY KEY,
23
- email VARCHAR(255) NOT NULL,
24
- ssn BYTEA, -- Encrypted field
25
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
26
- );
27
-
28
- -- Insert encrypted data
29
- INSERT INTO users (email, ssn)
30
- VALUES ('user@example.com', pgp_sym_encrypt('123-45-6789', 'encryption-key'));
31
-
32
- -- Query encrypted data
33
- SELECT email, pgp_sym_decrypt(ssn, 'encryption-key') AS ssn
34
- FROM users;
35
- ```
36
-
37
- **Best Practices:**
38
- - ✅ Use database-native encryption features (TDE, column-level encryption)
39
- - ✅ Encrypt entire database volumes using OS/cloud provider encryption
40
- - ✅ Store encryption keys in secure key management systems (AWS KMS, Azure Key Vault, HashiCorp Vault)
41
- - ✅ Rotate encryption keys regularly
42
- - ❌ Never store encryption keys in application code or version control
43
-
44
- ### Encryption in Transit
45
-
46
- **Always use encrypted connections:**
47
-
48
- ```javascript
49
- // Node.js with PostgreSQL
50
- const { Pool } = require('pg');
51
-
52
- const pool = new Pool({
53
- host: 'db.example.com',
54
- database: 'mydb',
55
- user: 'dbuser',
56
- password: process.env.DB_PASSWORD,
57
- ssl: {
58
- rejectUnauthorized: true,
59
- ca: fs.readFileSync('/path/to/ca-cert.pem').toString(),
60
- }
61
- });
62
- ```
63
-
64
- **Best Practices:**
65
- - ✅ Require SSL/TLS for all database connections
66
- - ✅ Use certificate-based authentication when possible
67
- - ✅ Verify server certificates (reject unauthorized connections)
68
- - ✅ Use TLS 1.2 or higher
69
- - ❌ Never allow unencrypted connections in production
70
-
71
- ### Access Controls
72
-
73
- **Implement least privilege access:**
74
-
75
- ```sql
76
- -- PostgreSQL: Create role with minimal permissions
77
- CREATE ROLE app_reader;
78
- GRANT CONNECT ON DATABASE mydb TO app_reader;
79
- GRANT USAGE ON SCHEMA public TO app_reader;
80
- GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_reader;
81
-
82
- -- Create role for application writes
83
- CREATE ROLE app_writer;
84
- GRANT CONNECT ON DATABASE mydb TO app_writer;
85
- GRANT USAGE ON SCHEMA public TO app_writer;
86
- GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO app_writer;
87
-
88
- -- Create user with specific role
89
- CREATE USER app_user WITH PASSWORD 'secure-password';
90
- GRANT app_writer TO app_user;
91
- ```
92
-
93
- **Best Practices:**
94
- - ✅ Use role-based access control (RBAC)
95
- - ✅ Grant minimum necessary permissions
96
- - ✅ Separate read-only and read-write access
97
- - ✅ Use different credentials for different application components
98
- - ✅ Regularly audit and review permissions
99
- - ❌ Never use superuser/admin accounts for applications
100
- - ❌ Never share database credentials between environments
101
-
102
- ---
103
-
104
- ## Authentication & Authorization
105
-
106
- ### Secure Authentication
107
-
108
- **Best Practices:**
109
- - ✅ Use strong, unique passwords (minimum 16 characters)
110
- - ✅ Store passwords in secure secret management systems
111
- - ✅ Use certificate-based authentication for service accounts
112
- - ✅ Enable multi-factor authentication (MFA) for admin access
113
- - ✅ Implement account lockout after failed login attempts
114
- - ❌ Never hardcode credentials in application code
115
- - ❌ Never commit credentials to version control
116
-
117
- ### Connection String Security
118
-
119
- ```javascript
120
- // ❌ BAD: Hardcoded credentials
121
- const connectionString = 'postgresql://admin:password123@db.example.com:5432/mydb';
122
-
123
- // ✅ GOOD: Use environment variables
124
- const connectionString = process.env.DATABASE_URL;
125
-
126
- // ✅ BETTER: Use secret management
127
- const AWS = require('aws-sdk');
128
- const secretsManager = new AWS.SecretsManager();
129
-
130
- async function getDatabaseCredentials() {
131
- const secret = await secretsManager.getSecretValue({
132
- SecretId: 'prod/database/credentials'
133
- }).promise();
134
-
135
- return JSON.parse(secret.SecretString);
136
- }
137
- ```
138
-
139
- ---
140
-
141
- ## Data Privacy & Compliance
142
-
143
- ### GDPR Compliance
144
-
145
- **Right to be forgotten:**
146
-
147
- ```sql
148
- -- Implement soft delete for audit trail
149
- ALTER TABLE users ADD COLUMN deleted_at TIMESTAMP;
150
- ALTER TABLE users ADD COLUMN deletion_reason TEXT;
151
-
152
- -- Delete user data (GDPR request)
153
- UPDATE users
154
- SET
155
- email = 'deleted@example.com',
156
- name = 'DELETED',
157
- deleted_at = CURRENT_TIMESTAMP,
158
- deletion_reason = 'GDPR request'
159
- WHERE id = 12345;
160
-
161
- -- Permanently delete after retention period
162
- DELETE FROM users
163
- WHERE deleted_at < CURRENT_TIMESTAMP - INTERVAL '30 days';
164
- ```
165
-
166
- ### HIPAA Compliance
167
-
168
- **Audit logging for protected health information (PHI):**
169
-
170
- ```sql
171
- -- Create audit log table
172
- CREATE TABLE audit_log (
173
- id SERIAL PRIMARY KEY,
174
- table_name VARCHAR(255) NOT NULL,
175
- record_id BIGINT NOT NULL,
176
- action VARCHAR(50) NOT NULL, -- INSERT, UPDATE, DELETE, SELECT
177
- user_id BIGINT NOT NULL,
178
- user_ip INET,
179
- changed_fields JSONB,
180
- timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
181
- );
182
-
183
- -- Trigger for audit logging
184
- CREATE OR REPLACE FUNCTION audit_trigger_func()
185
- RETURNS TRIGGER AS $$
186
- BEGIN
187
- INSERT INTO audit_log (table_name, record_id, action, user_id, changed_fields)
188
- VALUES (
189
- TG_TABLE_NAME,
190
- NEW.id,
191
- TG_OP,
192
- current_setting('app.user_id')::BIGINT,
193
- to_jsonb(NEW)
194
- );
195
- RETURN NEW;
196
- END;
197
- $$ LANGUAGE plpgsql;
198
-
199
- -- Apply trigger to sensitive tables
200
- CREATE TRIGGER audit_patients
201
- AFTER INSERT OR UPDATE OR DELETE ON patients
202
- FOR EACH ROW EXECUTE FUNCTION audit_trigger_func();
203
- ```
204
-
205
- ### CCPA Compliance
206
-
207
- **Data portability and disclosure:**
208
-
209
- ```sql
210
- -- Export user data (CCPA request)
211
- SELECT
212
- u.id,
213
- u.email,
214
- u.name,
215
- u.created_at,
216
- json_agg(o.*) AS orders,
217
- json_agg(p.*) AS preferences
218
- FROM users u
219
- LEFT JOIN orders o ON o.user_id = u.id
220
- LEFT JOIN user_preferences p ON p.user_id = u.id
221
- WHERE u.id = 12345
222
- GROUP BY u.id;
223
- ```
224
-
225
- **Best Practices:**
226
- - ✅ Implement data export functionality
227
- - ✅ Maintain audit logs for all data access
228
- - ✅ Document data retention policies
229
- - ✅ Implement data anonymization for analytics
230
- - ✅ Provide clear consent mechanisms
231
-
232
- ---
233
-
234
- ## Backup & Disaster Recovery
235
-
236
- ### Backup Strategy
237
-
238
- **3-2-1 Backup Rule:**
239
- - **3** copies of data
240
- - **2** different storage media
241
- - **1** off-site backup
242
-
243
- ```bash
244
- #!/bin/bash
245
- # PostgreSQL backup script
246
-
247
- # Full backup
248
- pg_dump -h localhost -U postgres -F c -b -v -f "/backups/mydb_$(date +%Y%m%d_%H%M%S).backup" mydb
249
-
250
- # Incremental backup using WAL archiving
251
- # In postgresql.conf:
252
- # wal_level = replica
253
- # archive_mode = on
254
- # archive_command = 'cp %p /archive/%f'
255
-
256
- # Point-in-time recovery (PITR)
257
- pg_basebackup -h localhost -D /backups/base -U replication -v -P --wal-method=stream
258
- ```
259
-
260
- **Best Practices:**
261
- - ✅ Automate backups (daily full, hourly incremental)
262
- - ✅ Test restore procedures regularly (monthly)
263
- - ✅ Store backups in multiple geographic locations
264
- - ✅ Encrypt backups at rest and in transit
265
- - ✅ Monitor backup success/failure
266
- - ✅ Document recovery time objective (RTO) and recovery point objective (RPO)
267
- - ❌ Never rely on a single backup location
268
-
269
- ### Disaster Recovery Plan
270
-
271
- **Key Components:**
272
- 1. **Backup verification**: Regularly test backup integrity
273
- 2. **Failover procedures**: Document and test failover to standby
274
- 3. **Recovery procedures**: Step-by-step recovery instructions
275
- 4. **Communication plan**: Who to notify during incidents
276
- 5. **Post-incident review**: Learn from failures
277
-
278
- ---
279
-
280
- ## Monitoring & Observability
281
-
282
- ### Key Metrics to Monitor
283
-
284
- **Performance Metrics:**
285
- - Query execution time (p50, p95, p99)
286
- - Connection pool utilization
287
- - Cache hit ratio
288
- - Disk I/O (IOPS, throughput)
289
- - CPU and memory usage
290
- - Replication lag (for replicas)
291
-
292
- **Health Metrics:**
293
- - Database uptime
294
- - Failed connection attempts
295
- - Deadlocks and lock waits
296
- - Transaction rollback rate
297
- - Error rate
298
-
299
- ### Monitoring Implementation
300
-
301
- ```javascript
302
- // Node.js with Prometheus metrics
303
- const client = require('prom-client');
304
-
305
- // Query duration histogram
306
- const queryDuration = new client.Histogram({
307
- name: 'db_query_duration_seconds',
308
- help: 'Database query duration in seconds',
309
- labelNames: ['query_type', 'table'],
310
- buckets: [0.001, 0.01, 0.1, 1, 5, 10]
311
- });
312
-
313
- // Connection pool gauge
314
- const poolConnections = new client.Gauge({
315
- name: 'db_pool_connections',
316
- help: 'Number of database connections',
317
- labelNames: ['state'] // active, idle, waiting
318
- });
319
-
320
- // Instrument queries
321
- async function executeQuery(query, params) {
322
- const end = queryDuration.startTimer({ query_type: 'SELECT', table: 'users' });
323
- try {
324
- const result = await pool.query(query, params);
325
- return result;
326
- } finally {
327
- end();
328
- }
329
- }
330
- ```
331
-
332
- **Best Practices:**
333
- - ✅ Set up alerts for critical metrics (high CPU, slow queries, connection exhaustion)
334
- - ✅ Use centralized logging (ELK stack, Splunk, CloudWatch)
335
- - ✅ Monitor query performance trends over time
336
- - ✅ Track slow query logs
337
- - ✅ Implement health check endpoints
338
-
339
- ---
340
-
341
- ## Performance Profiling
342
-
343
- ### Query Analysis
344
-
345
- ```sql
346
- -- PostgreSQL: Enable query logging
347
- -- In postgresql.conf:
348
- -- log_min_duration_statement = 1000 -- Log queries > 1 second
349
- -- log_statement = 'all'
350
-
351
- -- Analyze query execution plan
352
- EXPLAIN ANALYZE
353
- SELECT u.name, COUNT(o.id) AS order_count
354
- FROM users u
355
- LEFT JOIN orders o ON o.user_id = u.id
356
- WHERE u.created_at > '2024-01-01'
357
- GROUP BY u.id, u.name
358
- ORDER BY order_count DESC
359
- LIMIT 10;
360
-
361
- -- Find slow queries
362
- SELECT
363
- query,
364
- calls,
365
- total_time,
366
- mean_time,
367
- max_time
368
- FROM pg_stat_statements
369
- ORDER BY mean_time DESC
370
- LIMIT 20;
371
- ```
372
-
373
- **Best Practices:**
374
- - ✅ Use EXPLAIN ANALYZE to understand query execution
375
- - ✅ Identify and optimize N+1 queries
376
- - ✅ Monitor query execution time trends
377
- - ✅ Set up slow query alerts
378
- - ✅ Regularly review and optimize top queries
379
-
380
- ---
381
-
382
- ## Version Control for Schemas
383
-
384
- ### Migration-Based Schema Management
385
-
386
- **Best Practices:**
387
- - ✅ Use migration tools (Flyway, Liquibase, Alembic, Prisma Migrate)
388
- - ✅ Version all schema changes
389
- - ✅ Make migrations reversible (up/down migrations)
390
- - ✅ Test migrations in staging before production
391
- - ✅ Include migrations in version control
392
- - ❌ Never manually modify production schemas
393
-
394
- ### Example Migration Structure
395
-
396
- ```
397
- migrations/
398
- ├── 001_create_users_table.sql
399
- ├── 002_add_email_index.sql
400
- ├── 003_create_orders_table.sql
401
- └── 004_add_user_preferences.sql
402
- ```
403
-
404
- ```sql
405
- -- migrations/001_create_users_table.sql
406
- -- Up migration
407
- CREATE TABLE users (
408
- id SERIAL PRIMARY KEY,
409
- email VARCHAR(255) UNIQUE NOT NULL,
410
- name VARCHAR(255) NOT NULL,
411
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
412
- );
413
-
414
- -- Down migration (in separate file or section)
415
- DROP TABLE users;
416
- ```
417
-
418
- ---
419
-
420
- ## CI/CD Integration
421
-
422
- ### Automated Testing
423
-
424
- ```yaml
425
- # .github/workflows/database-tests.yml
426
- name: Database Tests
427
-
428
- on: [push, pull_request]
429
-
430
- jobs:
431
- test:
432
- runs-on: ubuntu-latest
433
-
434
- services:
435
- postgres:
436
- image: postgres:15
437
- env:
438
- POSTGRES_PASSWORD: postgres
439
- options: >-
440
- --health-cmd pg_isready
441
- --health-interval 10s
442
- --health-timeout 5s
443
- --health-retries 5
444
-
445
- steps:
446
- - uses: actions/checkout@v3
447
-
448
- - name: Run migrations
449
- run: npm run migrate
450
-
451
- - name: Run tests
452
- run: npm test
453
-
454
- - name: Run integration tests
455
- run: npm run test:integration
456
- ```
457
-
458
- **Best Practices:**
459
- - ✅ Run migrations in CI/CD pipeline
460
- - ✅ Test migrations on fresh database
461
- - ✅ Test rollback procedures
462
- - ✅ Run integration tests against real database
463
- - ✅ Validate schema changes don't break existing queries
464
-
465
- ---
466
-
467
- ## Summary
468
-
469
- **Key Takeaways:**
470
-
471
- 1. **Security First**: Encrypt data at rest and in transit, implement least privilege access
472
- 2. **Compliance**: Understand and implement GDPR, HIPAA, CCPA requirements
473
- 3. **Backup & Recovery**: Automate backups, test restores regularly, maintain disaster recovery plan
474
- 4. **Monitoring**: Track performance and health metrics, set up alerts
475
- 5. **Version Control**: Use migration-based schema management, never manual changes
476
- 6. **CI/CD**: Automate testing, validate migrations, run integration tests
477
-
478
- **Common Pitfalls:**
479
- - ❌ Storing credentials in code or version control
480
- - ❌ Not testing backup restore procedures
481
- - ❌ Ignoring slow query warnings
482
- - ❌ Manual schema changes in production
483
- - ❌ Not monitoring database health metrics
484
- - ❌ Insufficient access controls
485
-
1
+ # Universal Database Best Practices
2
+
3
+ ## Overview
4
+
5
+ This document covers universal best practices that apply to all database types: relational (SQL), NoSQL (document, key-value, graph), vector databases, and flat file databases.
6
+
7
+ ---
8
+
9
+ ## Data Security
10
+
11
+ ### Encryption at Rest
12
+
13
+ **Encrypt sensitive data stored in databases:**
14
+
15
+ ```sql
16
+ -- PostgreSQL: Enable transparent data encryption (TDE)
17
+ -- Use pgcrypto extension for column-level encryption
18
+ CREATE EXTENSION IF NOT EXISTS pgcrypto;
19
+
20
+ -- Encrypt sensitive columns
21
+ CREATE TABLE users (
22
+ id SERIAL PRIMARY KEY,
23
+ email VARCHAR(255) NOT NULL,
24
+ ssn BYTEA, -- Encrypted field
25
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
26
+ );
27
+
28
+ -- Insert encrypted data
29
+ INSERT INTO users (email, ssn)
30
+ VALUES ('user@example.com', pgp_sym_encrypt('123-45-6789', 'encryption-key'));
31
+
32
+ -- Query encrypted data
33
+ SELECT email, pgp_sym_decrypt(ssn, 'encryption-key') AS ssn
34
+ FROM users;
35
+ ```
36
+
37
+ **Best Practices:**
38
+ - ✅ Use database-native encryption features (TDE, column-level encryption)
39
+ - ✅ Encrypt entire database volumes using OS/cloud provider encryption
40
+ - ✅ Store encryption keys in secure key management systems (AWS KMS, Azure Key Vault, HashiCorp Vault)
41
+ - ✅ Rotate encryption keys regularly
42
+ - ❌ Never store encryption keys in application code or version control
43
+
44
+ ### Encryption in Transit
45
+
46
+ **Always use encrypted connections:**
47
+
48
+ ```javascript
49
+ // Node.js with PostgreSQL
50
+ const { Pool } = require('pg');
51
+
52
+ const pool = new Pool({
53
+ host: 'db.example.com',
54
+ database: 'mydb',
55
+ user: 'dbuser',
56
+ password: process.env.DB_PASSWORD,
57
+ ssl: {
58
+ rejectUnauthorized: true,
59
+ ca: fs.readFileSync('/path/to/ca-cert.pem').toString(),
60
+ }
61
+ });
62
+ ```
63
+
64
+ **Best Practices:**
65
+ - ✅ Require SSL/TLS for all database connections
66
+ - ✅ Use certificate-based authentication when possible
67
+ - ✅ Verify server certificates (reject unauthorized connections)
68
+ - ✅ Use TLS 1.2 or higher
69
+ - ❌ Never allow unencrypted connections in production
70
+
71
+ ### Access Controls
72
+
73
+ **Implement least privilege access:**
74
+
75
+ ```sql
76
+ -- PostgreSQL: Create role with minimal permissions
77
+ CREATE ROLE app_reader;
78
+ GRANT CONNECT ON DATABASE mydb TO app_reader;
79
+ GRANT USAGE ON SCHEMA public TO app_reader;
80
+ GRANT SELECT ON ALL TABLES IN SCHEMA public TO app_reader;
81
+
82
+ -- Create role for application writes
83
+ CREATE ROLE app_writer;
84
+ GRANT CONNECT ON DATABASE mydb TO app_writer;
85
+ GRANT USAGE ON SCHEMA public TO app_writer;
86
+ GRANT SELECT, INSERT, UPDATE ON ALL TABLES IN SCHEMA public TO app_writer;
87
+
88
+ -- Create user with specific role
89
+ CREATE USER app_user WITH PASSWORD 'secure-password';
90
+ GRANT app_writer TO app_user;
91
+ ```
92
+
93
+ **Best Practices:**
94
+ - ✅ Use role-based access control (RBAC)
95
+ - ✅ Grant minimum necessary permissions
96
+ - ✅ Separate read-only and read-write access
97
+ - ✅ Use different credentials for different application components
98
+ - ✅ Regularly audit and review permissions
99
+ - ❌ Never use superuser/admin accounts for applications
100
+ - ❌ Never share database credentials between environments
101
+
102
+ ---
103
+
104
+ ## Authentication & Authorization
105
+
106
+ ### Secure Authentication
107
+
108
+ **Best Practices:**
109
+ - ✅ Use strong, unique passwords (minimum 16 characters)
110
+ - ✅ Store passwords in secure secret management systems
111
+ - ✅ Use certificate-based authentication for service accounts
112
+ - ✅ Enable multi-factor authentication (MFA) for admin access
113
+ - ✅ Implement account lockout after failed login attempts
114
+ - ❌ Never hardcode credentials in application code
115
+ - ❌ Never commit credentials to version control
116
+
117
+ ### Connection String Security
118
+
119
+ ```javascript
120
+ // ❌ BAD: Hardcoded credentials
121
+ const connectionString = 'postgresql://admin:password123@db.example.com:5432/mydb';
122
+
123
+ // ✅ GOOD: Use environment variables
124
+ const connectionString = process.env.DATABASE_URL;
125
+
126
+ // ✅ BETTER: Use secret management
127
+ const AWS = require('aws-sdk');
128
+ const secretsManager = new AWS.SecretsManager();
129
+
130
+ async function getDatabaseCredentials() {
131
+ const secret = await secretsManager.getSecretValue({
132
+ SecretId: 'prod/database/credentials'
133
+ }).promise();
134
+
135
+ return JSON.parse(secret.SecretString);
136
+ }
137
+ ```
138
+
139
+ ---
140
+
141
+ ## Data Privacy & Compliance
142
+
143
+ ### GDPR Compliance
144
+
145
+ **Right to be forgotten:**
146
+
147
+ ```sql
148
+ -- Implement soft delete for audit trail
149
+ ALTER TABLE users ADD COLUMN deleted_at TIMESTAMP;
150
+ ALTER TABLE users ADD COLUMN deletion_reason TEXT;
151
+
152
+ -- Delete user data (GDPR request)
153
+ UPDATE users
154
+ SET
155
+ email = 'deleted@example.com',
156
+ name = 'DELETED',
157
+ deleted_at = CURRENT_TIMESTAMP,
158
+ deletion_reason = 'GDPR request'
159
+ WHERE id = 12345;
160
+
161
+ -- Permanently delete after retention period
162
+ DELETE FROM users
163
+ WHERE deleted_at < CURRENT_TIMESTAMP - INTERVAL '30 days';
164
+ ```
165
+
166
+ ### HIPAA Compliance
167
+
168
+ **Audit logging for protected health information (PHI):**
169
+
170
+ ```sql
171
+ -- Create audit log table
172
+ CREATE TABLE audit_log (
173
+ id SERIAL PRIMARY KEY,
174
+ table_name VARCHAR(255) NOT NULL,
175
+ record_id BIGINT NOT NULL,
176
+ action VARCHAR(50) NOT NULL, -- INSERT, UPDATE, DELETE, SELECT
177
+ user_id BIGINT NOT NULL,
178
+ user_ip INET,
179
+ changed_fields JSONB,
180
+ timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
181
+ );
182
+
183
+ -- Trigger for audit logging
184
+ CREATE OR REPLACE FUNCTION audit_trigger_func()
185
+ RETURNS TRIGGER AS $$
186
+ BEGIN
187
+ INSERT INTO audit_log (table_name, record_id, action, user_id, changed_fields)
188
+ VALUES (
189
+ TG_TABLE_NAME,
190
+ NEW.id,
191
+ TG_OP,
192
+ current_setting('app.user_id')::BIGINT,
193
+ to_jsonb(NEW)
194
+ );
195
+ RETURN NEW;
196
+ END;
197
+ $$ LANGUAGE plpgsql;
198
+
199
+ -- Apply trigger to sensitive tables
200
+ CREATE TRIGGER audit_patients
201
+ AFTER INSERT OR UPDATE OR DELETE ON patients
202
+ FOR EACH ROW EXECUTE FUNCTION audit_trigger_func();
203
+ ```
204
+
205
+ ### CCPA Compliance
206
+
207
+ **Data portability and disclosure:**
208
+
209
+ ```sql
210
+ -- Export user data (CCPA request)
211
+ SELECT
212
+ u.id,
213
+ u.email,
214
+ u.name,
215
+ u.created_at,
216
+ json_agg(o.*) AS orders,
217
+ json_agg(p.*) AS preferences
218
+ FROM users u
219
+ LEFT JOIN orders o ON o.user_id = u.id
220
+ LEFT JOIN user_preferences p ON p.user_id = u.id
221
+ WHERE u.id = 12345
222
+ GROUP BY u.id;
223
+ ```
224
+
225
+ **Best Practices:**
226
+ - ✅ Implement data export functionality
227
+ - ✅ Maintain audit logs for all data access
228
+ - ✅ Document data retention policies
229
+ - ✅ Implement data anonymization for analytics
230
+ - ✅ Provide clear consent mechanisms
231
+
232
+ ---
233
+
234
+ ## Backup & Disaster Recovery
235
+
236
+ ### Backup Strategy
237
+
238
+ **3-2-1 Backup Rule:**
239
+ - **3** copies of data
240
+ - **2** different storage media
241
+ - **1** off-site backup
242
+
243
+ ```bash
244
+ #!/bin/bash
245
+ # PostgreSQL backup script
246
+
247
+ # Full backup
248
+ pg_dump -h localhost -U postgres -F c -b -v -f "/backups/mydb_$(date +%Y%m%d_%H%M%S).backup" mydb
249
+
250
+ # Incremental backup using WAL archiving
251
+ # In postgresql.conf:
252
+ # wal_level = replica
253
+ # archive_mode = on
254
+ # archive_command = 'cp %p /archive/%f'
255
+
256
+ # Point-in-time recovery (PITR)
257
+ pg_basebackup -h localhost -D /backups/base -U replication -v -P --wal-method=stream
258
+ ```
259
+
260
+ **Best Practices:**
261
+ - ✅ Automate backups (daily full, hourly incremental)
262
+ - ✅ Test restore procedures regularly (monthly)
263
+ - ✅ Store backups in multiple geographic locations
264
+ - ✅ Encrypt backups at rest and in transit
265
+ - ✅ Monitor backup success/failure
266
+ - ✅ Document recovery time objective (RTO) and recovery point objective (RPO)
267
+ - ❌ Never rely on a single backup location
268
+
269
+ ### Disaster Recovery Plan
270
+
271
+ **Key Components:**
272
+ 1. **Backup verification**: Regularly test backup integrity
273
+ 2. **Failover procedures**: Document and test failover to standby
274
+ 3. **Recovery procedures**: Step-by-step recovery instructions
275
+ 4. **Communication plan**: Who to notify during incidents
276
+ 5. **Post-incident review**: Learn from failures
277
+
278
+ ---
279
+
280
+ ## Monitoring & Observability
281
+
282
+ ### Key Metrics to Monitor
283
+
284
+ **Performance Metrics:**
285
+ - Query execution time (p50, p95, p99)
286
+ - Connection pool utilization
287
+ - Cache hit ratio
288
+ - Disk I/O (IOPS, throughput)
289
+ - CPU and memory usage
290
+ - Replication lag (for replicas)
291
+
292
+ **Health Metrics:**
293
+ - Database uptime
294
+ - Failed connection attempts
295
+ - Deadlocks and lock waits
296
+ - Transaction rollback rate
297
+ - Error rate
298
+
299
+ ### Monitoring Implementation
300
+
301
+ ```javascript
302
+ // Node.js with Prometheus metrics
303
+ const client = require('prom-client');
304
+
305
+ // Query duration histogram
306
+ const queryDuration = new client.Histogram({
307
+ name: 'db_query_duration_seconds',
308
+ help: 'Database query duration in seconds',
309
+ labelNames: ['query_type', 'table'],
310
+ buckets: [0.001, 0.01, 0.1, 1, 5, 10]
311
+ });
312
+
313
+ // Connection pool gauge
314
+ const poolConnections = new client.Gauge({
315
+ name: 'db_pool_connections',
316
+ help: 'Number of database connections',
317
+ labelNames: ['state'] // active, idle, waiting
318
+ });
319
+
320
+ // Instrument queries
321
+ async function executeQuery(query, params) {
322
+ const end = queryDuration.startTimer({ query_type: 'SELECT', table: 'users' });
323
+ try {
324
+ const result = await pool.query(query, params);
325
+ return result;
326
+ } finally {
327
+ end();
328
+ }
329
+ }
330
+ ```
331
+
332
+ **Best Practices:**
333
+ - ✅ Set up alerts for critical metrics (high CPU, slow queries, connection exhaustion)
334
+ - ✅ Use centralized logging (ELK stack, Splunk, CloudWatch)
335
+ - ✅ Monitor query performance trends over time
336
+ - ✅ Track slow query logs
337
+ - ✅ Implement health check endpoints
338
+
339
+ ---
340
+
341
+ ## Performance Profiling
342
+
343
+ ### Query Analysis
344
+
345
+ ```sql
346
+ -- PostgreSQL: Enable query logging
347
+ -- In postgresql.conf:
348
+ -- log_min_duration_statement = 1000 -- Log queries > 1 second
349
+ -- log_statement = 'all'
350
+
351
+ -- Analyze query execution plan
352
+ EXPLAIN ANALYZE
353
+ SELECT u.name, COUNT(o.id) AS order_count
354
+ FROM users u
355
+ LEFT JOIN orders o ON o.user_id = u.id
356
+ WHERE u.created_at > '2024-01-01'
357
+ GROUP BY u.id, u.name
358
+ ORDER BY order_count DESC
359
+ LIMIT 10;
360
+
361
+ -- Find slow queries
362
+ SELECT
363
+ query,
364
+ calls,
365
+ total_time,
366
+ mean_time,
367
+ max_time
368
+ FROM pg_stat_statements
369
+ ORDER BY mean_time DESC
370
+ LIMIT 20;
371
+ ```
372
+
373
+ **Best Practices:**
374
+ - ✅ Use EXPLAIN ANALYZE to understand query execution
375
+ - ✅ Identify and optimize N+1 queries
376
+ - ✅ Monitor query execution time trends
377
+ - ✅ Set up slow query alerts
378
+ - ✅ Regularly review and optimize top queries
379
+
380
+ ---
381
+
382
+ ## Version Control for Schemas
383
+
384
+ ### Migration-Based Schema Management
385
+
386
+ **Best Practices:**
387
+ - ✅ Use migration tools (Flyway, Liquibase, Alembic, Prisma Migrate)
388
+ - ✅ Version all schema changes
389
+ - ✅ Make migrations reversible (up/down migrations)
390
+ - ✅ Test migrations in staging before production
391
+ - ✅ Include migrations in version control
392
+ - ❌ Never manually modify production schemas
393
+
394
+ ### Example Migration Structure
395
+
396
+ ```
397
+ migrations/
398
+ ├── 001_create_users_table.sql
399
+ ├── 002_add_email_index.sql
400
+ ├── 003_create_orders_table.sql
401
+ └── 004_add_user_preferences.sql
402
+ ```
403
+
404
+ ```sql
405
+ -- migrations/001_create_users_table.sql
406
+ -- Up migration
407
+ CREATE TABLE users (
408
+ id SERIAL PRIMARY KEY,
409
+ email VARCHAR(255) UNIQUE NOT NULL,
410
+ name VARCHAR(255) NOT NULL,
411
+ created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
412
+ );
413
+
414
+ -- Down migration (in separate file or section)
415
+ DROP TABLE users;
416
+ ```
417
+
418
+ ---
419
+
420
+ ## CI/CD Integration
421
+
422
+ ### Automated Testing
423
+
424
+ ```yaml
425
+ # .github/workflows/database-tests.yml
426
+ name: Database Tests
427
+
428
+ on: [push, pull_request]
429
+
430
+ jobs:
431
+ test:
432
+ runs-on: ubuntu-latest
433
+
434
+ services:
435
+ postgres:
436
+ image: postgres:15
437
+ env:
438
+ POSTGRES_PASSWORD: postgres
439
+ options: >-
440
+ --health-cmd pg_isready
441
+ --health-interval 10s
442
+ --health-timeout 5s
443
+ --health-retries 5
444
+
445
+ steps:
446
+ - uses: actions/checkout@v3
447
+
448
+ - name: Run migrations
449
+ run: npm run migrate
450
+
451
+ - name: Run tests
452
+ run: npm test
453
+
454
+ - name: Run integration tests
455
+ run: npm run test:integration
456
+ ```
457
+
458
+ **Best Practices:**
459
+ - ✅ Run migrations in CI/CD pipeline
460
+ - ✅ Test migrations on fresh database
461
+ - ✅ Test rollback procedures
462
+ - ✅ Run integration tests against real database
463
+ - ✅ Validate schema changes don't break existing queries
464
+
465
+ ---
466
+
467
+ ## Summary
468
+
469
+ **Key Takeaways:**
470
+
471
+ 1. **Security First**: Encrypt data at rest and in transit, implement least privilege access
472
+ 2. **Compliance**: Understand and implement GDPR, HIPAA, CCPA requirements
473
+ 3. **Backup & Recovery**: Automate backups, test restores regularly, maintain disaster recovery plan
474
+ 4. **Monitoring**: Track performance and health metrics, set up alerts
475
+ 5. **Version Control**: Use migration-based schema management, never manual changes
476
+ 6. **CI/CD**: Automate testing, validate migrations, run integration tests
477
+
478
+ **Common Pitfalls:**
479
+ - ❌ Storing credentials in code or version control
480
+ - ❌ Not testing backup restore procedures
481
+ - ❌ Ignoring slow query warnings
482
+ - ❌ Manual schema changes in production
483
+ - ❌ Not monitoring database health metrics
484
+ - ❌ Insufficient access controls
485
+