@mytechtoday/augment-extensions 0.2.0 → 0.5.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.
- package/README.md +614 -39
- package/augment-extensions/coding-standards/bash/README.md +196 -0
- package/augment-extensions/coding-standards/bash/module.json +163 -0
- package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -0
- package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -0
- package/augment-extensions/coding-standards/css/README.md +40 -0
- package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/css/module.json +44 -0
- package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html/README.md +40 -0
- package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html/module.json +44 -0
- package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/README.md +194 -0
- package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -0
- package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -0
- package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -0
- package/augment-extensions/coding-standards/html-css-js/module.json +48 -0
- package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -0
- package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -0
- package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -0
- package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/js/README.md +46 -0
- package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -0
- package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -0
- package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -0
- package/augment-extensions/coding-standards/js/module.json +49 -0
- package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -0
- package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -0
- package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -0
- package/augment-extensions/coding-standards/js/rules/performance.md +463 -0
- package/augment-extensions/coding-standards/js/rules/tooling.md +543 -0
- package/augment-extensions/coding-standards/php/README.md +248 -0
- package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -0
- package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -0
- package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -0
- package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -0
- package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -0
- package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -0
- package/augment-extensions/coding-standards/php/module.json +166 -0
- package/augment-extensions/coding-standards/php/rules/api-development.md +480 -0
- package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -0
- package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -0
- package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -0
- package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -0
- package/augment-extensions/coding-standards/php/rules/documentation.md +425 -0
- package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -0
- package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -0
- package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -0
- package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -0
- package/augment-extensions/coding-standards/php/rules/performance.md +392 -0
- package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -0
- package/augment-extensions/coding-standards/php/rules/security.md +358 -0
- package/augment-extensions/coding-standards/php/rules/testing.md +403 -0
- package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -0
- package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -0
- package/augment-extensions/coding-standards/powershell/README.md +154 -0
- package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -0
- package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -0
- package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -0
- package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -0
- package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -0
- package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -0
- package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -0
- package/augment-extensions/coding-standards/powershell/module.json +165 -0
- package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -0
- package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -0
- package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -0
- package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -0
- package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -0
- package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -0
- package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -0
- package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -0
- package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -0
- package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -0
- package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -0
- package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -0
- package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -0
- package/augment-extensions/coding-standards/python/README.md +12 -8
- package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -0
- package/augment-extensions/coding-standards/python/module.json +8 -4
- package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -0
- package/augment-extensions/coding-standards/python/rules/documentation.md +831 -0
- package/augment-extensions/coding-standards/python/rules/error-handling.md +855 -68
- package/augment-extensions/coding-standards/python/rules/testing.md +409 -0
- package/augment-extensions/coding-standards/python/rules/tooling.md +446 -0
- package/augment-extensions/coding-standards/python/rules/type-hints.md +115 -50
- package/augment-extensions/collections/html-css-js/README.md +82 -0
- package/augment-extensions/collections/html-css-js/collection.json +41 -0
- package/augment-extensions/domain-rules/database/README.md +161 -0
- package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -0
- package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -0
- package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -0
- package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -0
- package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -0
- package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -0
- package/augment-extensions/domain-rules/database/module.json +28 -0
- package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -0
- package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -0
- package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -0
- package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -0
- package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -0
- package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -0
- package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -0
- package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -0
- package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -0
- package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -0
- package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -0
- package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -0
- package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -0
- package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -0
- package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -0
- package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -0
- package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -0
- package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/README.md +136 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/SCHEMA-VALIDATION-REPORT.md +216 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/brand-kit-example.yaml +292 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/campaign-brief-example.yaml +389 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/content-calendar-example.yaml +643 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/email-newsletter-example.md +376 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/landing-page-example.md +934 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/ppc-ad-copy-example.md +301 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/seo-blog-post-example.md +347 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/examples/social-media-campaign-example.md +606 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/module.json +50 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/affiliate-influencer-marketing.md +593 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/asset-management.md +418 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/brand-consistency.md +210 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/content-marketing.md +337 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/conversion-optimization.md +455 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/direct-sales.md +499 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/email-marketing.md +439 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/legal-compliance.md +227 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/ppc-advertising.md +569 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/seo-optimization.md +470 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/social-media-marketing.md +414 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/rules/universal-marketing.md +177 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/asset-inventory.schema.json +247 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/brand-kit.schema.json +326 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/campaign-brief.schema.json +342 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/color-palette.schema.json +223 -0
- package/augment-extensions/domain-rules/marketing-standards/seo-sales-marketing/schemas/content-template.schema.json +383 -0
- package/augment-extensions/domain-rules/mcp/README.md +150 -0
- package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -0
- package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -0
- package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -0
- package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -0
- package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -0
- package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -0
- package/augment-extensions/domain-rules/mcp/module.json +49 -0
- package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -0
- package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -0
- package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -0
- package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -0
- package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -0
- package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -0
- package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -0
- package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -0
- package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -0
- package/augment-extensions/workflows/beads/module.json +4 -3
- package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -0
- package/augment-extensions/workflows/beads-integration/README.md +143 -0
- package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -0
- package/augment-extensions/workflows/beads-integration/config/schema.json +140 -0
- package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -0
- package/augment-extensions/workflows/beads-integration/module.json +75 -0
- package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -0
- package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -0
- package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -0
- package/augment-extensions/workflows/database/README.md +195 -0
- package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -0
- package/augment-extensions/workflows/database/examples/migration-example.md +498 -0
- package/augment-extensions/workflows/database/examples/optimization-example.md +496 -0
- package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -0
- package/augment-extensions/workflows/database/module.json +42 -0
- package/augment-extensions/workflows/database/rules/data-migration.md +249 -0
- package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -0
- package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -0
- package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -0
- package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -0
- package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -0
- package/augment-extensions/workflows/database/rules/workflow.md +458 -0
- package/augment-extensions/workflows/openspec/module.json +4 -3
- package/augment-extensions/writing-standards/screenplay/README.md +300 -0
- package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -0
- package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -0
- package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -0
- package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -0
- package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -0
- package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -0
- package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -0
- package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -0
- package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -0
- package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -0
- package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -0
- package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -0
- package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -0
- package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -0
- package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -0
- package/augment-extensions/writing-standards/screenplay/module.json +124 -0
- package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -0
- package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -0
- package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -0
- package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -0
- package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -0
- package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -0
- package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -0
- package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -0
- package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -0
- package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -0
- package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -0
- package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -0
- package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -0
- package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -0
- package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -0
- package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -0
- package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -0
- package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -0
- package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -0
- package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -0
- package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -0
- package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -0
- package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -0
- package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -0
- package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -0
- package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -0
- package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -0
- package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -0
- package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -0
- package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -0
- package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -0
- package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -0
- package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -0
- package/cli/MODULES.md +302 -0
- package/cli/dist/cli.js +168 -10
- package/cli/dist/cli.js.map +1 -1
- package/cli/dist/commands/catalog.d.ts +13 -0
- package/cli/dist/commands/catalog.d.ts.map +1 -0
- package/cli/dist/commands/catalog.js +104 -0
- package/cli/dist/commands/catalog.js.map +1 -0
- package/cli/dist/commands/gui.d.ts +6 -0
- package/cli/dist/commands/gui.d.ts.map +1 -0
- package/cli/dist/commands/gui.js +211 -0
- package/cli/dist/commands/gui.js.map +1 -0
- package/cli/dist/commands/init.d.ts.map +1 -1
- package/cli/dist/commands/init.js +12 -0
- package/cli/dist/commands/init.js.map +1 -1
- package/cli/dist/commands/install-rules.d.ts +14 -0
- package/cli/dist/commands/install-rules.d.ts.map +1 -0
- package/cli/dist/commands/install-rules.js +127 -0
- package/cli/dist/commands/install-rules.js.map +1 -0
- package/cli/dist/commands/link.d.ts.map +1 -1
- package/cli/dist/commands/link.js +9 -11
- package/cli/dist/commands/link.js.map +1 -1
- package/cli/dist/commands/list.d.ts.map +1 -1
- package/cli/dist/commands/list.js +11 -28
- package/cli/dist/commands/list.js.map +1 -1
- package/cli/dist/commands/mcp.d.ts +48 -0
- package/cli/dist/commands/mcp.d.ts.map +1 -0
- package/cli/dist/commands/mcp.js +229 -0
- package/cli/dist/commands/mcp.js.map +1 -0
- package/cli/dist/commands/self-remove.d.ts +7 -0
- package/cli/dist/commands/self-remove.d.ts.map +1 -0
- package/cli/dist/commands/self-remove.js +179 -0
- package/cli/dist/commands/self-remove.js.map +1 -0
- package/cli/dist/commands/show.d.ts +19 -0
- package/cli/dist/commands/show.d.ts.map +1 -1
- package/cli/dist/commands/show.js +478 -63
- package/cli/dist/commands/show.js.map +1 -1
- package/cli/dist/commands/skill.d.ts +67 -0
- package/cli/dist/commands/skill.d.ts.map +1 -0
- package/cli/dist/commands/skill.js +513 -0
- package/cli/dist/commands/skill.js.map +1 -0
- package/cli/dist/commands/unlink.d.ts +6 -0
- package/cli/dist/commands/unlink.d.ts.map +1 -0
- package/cli/dist/commands/unlink.js +115 -0
- package/cli/dist/commands/unlink.js.map +1 -0
- package/cli/dist/commands/validate.d.ts +6 -0
- package/cli/dist/commands/validate.d.ts.map +1 -0
- package/cli/dist/commands/validate.js +159 -0
- package/cli/dist/commands/validate.js.map +1 -0
- package/cli/dist/types/gui.d.ts +62 -0
- package/cli/dist/types/gui.d.ts.map +1 -0
- package/cli/dist/types/gui.js +30 -0
- package/cli/dist/types/gui.js.map +1 -0
- package/cli/dist/utils/catalog-sync.d.ts +22 -0
- package/cli/dist/utils/catalog-sync.d.ts.map +1 -0
- package/cli/dist/utils/catalog-sync.js +157 -0
- package/cli/dist/utils/catalog-sync.js.map +1 -0
- package/cli/dist/utils/character-count.d.ts +56 -0
- package/cli/dist/utils/character-count.d.ts.map +1 -0
- package/cli/dist/utils/character-count.js +190 -0
- package/cli/dist/utils/character-count.js.map +1 -0
- package/cli/dist/utils/documentation-validator.d.ts +18 -0
- package/cli/dist/utils/documentation-validator.d.ts.map +1 -0
- package/cli/dist/utils/documentation-validator.js +233 -0
- package/cli/dist/utils/documentation-validator.js.map +1 -0
- package/cli/dist/utils/gui-helpers.d.ts +23 -0
- package/cli/dist/utils/gui-helpers.d.ts.map +1 -0
- package/cli/dist/utils/gui-helpers.js +159 -0
- package/cli/dist/utils/gui-helpers.js.map +1 -0
- package/cli/dist/utils/install-rules.d.ts +32 -0
- package/cli/dist/utils/install-rules.d.ts.map +1 -0
- package/cli/dist/utils/install-rules.js +375 -0
- package/cli/dist/utils/install-rules.js.map +1 -0
- package/cli/dist/utils/mcp-integration.d.ts +70 -0
- package/cli/dist/utils/mcp-integration.d.ts.map +1 -0
- package/cli/dist/utils/mcp-integration.js +292 -0
- package/cli/dist/utils/mcp-integration.js.map +1 -0
- package/cli/dist/utils/module-system.d.ts +232 -0
- package/cli/dist/utils/module-system.d.ts.map +1 -0
- package/cli/dist/utils/module-system.js +900 -0
- package/cli/dist/utils/module-system.js.map +1 -0
- package/cli/dist/utils/modules-catalog.d.ts +33 -0
- package/cli/dist/utils/modules-catalog.d.ts.map +1 -0
- package/cli/dist/utils/modules-catalog.js +163 -0
- package/cli/dist/utils/modules-catalog.js.map +1 -0
- package/cli/dist/utils/rule-install-hooks.d.ts +19 -0
- package/cli/dist/utils/rule-install-hooks.d.ts.map +1 -0
- package/cli/dist/utils/rule-install-hooks.js +224 -0
- package/cli/dist/utils/rule-install-hooks.js.map +1 -0
- package/cli/dist/utils/skill-system.d.ts +95 -0
- package/cli/dist/utils/skill-system.d.ts.map +1 -0
- package/cli/dist/utils/skill-system.js +313 -0
- package/cli/dist/utils/skill-system.js.map +1 -0
- package/modules.md +559 -105
- package/package.json +17 -6
|
@@ -0,0 +1,621 @@
|
|
|
1
|
+
# Relational Schema Example: E-Commerce Database
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This example demonstrates a comprehensive e-commerce database schema with proper normalization, foreign keys, indexes, and constraints.
|
|
6
|
+
|
|
7
|
+
**Features:**
|
|
8
|
+
- User management
|
|
9
|
+
- Product catalog
|
|
10
|
+
- Shopping cart
|
|
11
|
+
- Order processing
|
|
12
|
+
- Inventory tracking
|
|
13
|
+
- Reviews and ratings
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Entity-Relationship Diagram
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
users (1) ──────< (N) orders
|
|
21
|
+
│ │
|
|
22
|
+
│ │
|
|
23
|
+
│ └──< (N) order_items >──┐
|
|
24
|
+
│ │
|
|
25
|
+
│ │
|
|
26
|
+
└──< (N) cart_items >──┐ │
|
|
27
|
+
│ │ │
|
|
28
|
+
│ ▼ ▼
|
|
29
|
+
│ products (1) ──────< (N) product_images
|
|
30
|
+
│ │
|
|
31
|
+
│ └──< (N) reviews
|
|
32
|
+
│
|
|
33
|
+
└──< (N) addresses
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Schema Definition
|
|
39
|
+
|
|
40
|
+
### Users Table
|
|
41
|
+
|
|
42
|
+
```sql
|
|
43
|
+
CREATE TABLE users (
|
|
44
|
+
id SERIAL PRIMARY KEY,
|
|
45
|
+
email VARCHAR(255) NOT NULL UNIQUE,
|
|
46
|
+
password_hash VARCHAR(255) NOT NULL,
|
|
47
|
+
first_name VARCHAR(100) NOT NULL,
|
|
48
|
+
last_name VARCHAR(100) NOT NULL,
|
|
49
|
+
phone VARCHAR(20),
|
|
50
|
+
status VARCHAR(20) NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'inactive', 'suspended')),
|
|
51
|
+
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
52
|
+
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
-- Indexes
|
|
56
|
+
CREATE INDEX idx_users_email ON users(email);
|
|
57
|
+
CREATE INDEX idx_users_status ON users(status);
|
|
58
|
+
CREATE INDEX idx_users_created_at ON users(created_at);
|
|
59
|
+
|
|
60
|
+
-- Comments
|
|
61
|
+
COMMENT ON TABLE users IS 'User accounts for the e-commerce platform';
|
|
62
|
+
COMMENT ON COLUMN users.status IS 'User account status: active, inactive, or suspended';
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### Addresses Table
|
|
66
|
+
|
|
67
|
+
```sql
|
|
68
|
+
CREATE TABLE addresses (
|
|
69
|
+
id SERIAL PRIMARY KEY,
|
|
70
|
+
user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
71
|
+
address_type VARCHAR(20) NOT NULL CHECK (address_type IN ('billing', 'shipping')),
|
|
72
|
+
street_line1 VARCHAR(255) NOT NULL,
|
|
73
|
+
street_line2 VARCHAR(255),
|
|
74
|
+
city VARCHAR(100) NOT NULL,
|
|
75
|
+
state VARCHAR(100) NOT NULL,
|
|
76
|
+
postal_code VARCHAR(20) NOT NULL,
|
|
77
|
+
country VARCHAR(100) NOT NULL DEFAULT 'USA',
|
|
78
|
+
is_default BOOLEAN NOT NULL DEFAULT false,
|
|
79
|
+
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
80
|
+
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
81
|
+
);
|
|
82
|
+
|
|
83
|
+
-- Indexes
|
|
84
|
+
CREATE INDEX idx_addresses_user_id ON addresses(user_id);
|
|
85
|
+
CREATE INDEX idx_addresses_type ON addresses(address_type);
|
|
86
|
+
|
|
87
|
+
-- Unique constraint: Only one default address per type per user
|
|
88
|
+
CREATE UNIQUE INDEX idx_addresses_default ON addresses(user_id, address_type, is_default)
|
|
89
|
+
WHERE is_default = true;
|
|
90
|
+
|
|
91
|
+
-- Comments
|
|
92
|
+
COMMENT ON TABLE addresses IS 'User billing and shipping addresses';
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Products Table
|
|
96
|
+
|
|
97
|
+
```sql
|
|
98
|
+
CREATE TABLE products (
|
|
99
|
+
id SERIAL PRIMARY KEY,
|
|
100
|
+
sku VARCHAR(50) NOT NULL UNIQUE,
|
|
101
|
+
name VARCHAR(255) NOT NULL,
|
|
102
|
+
description TEXT,
|
|
103
|
+
price DECIMAL(10, 2) NOT NULL CHECK (price >= 0),
|
|
104
|
+
cost DECIMAL(10, 2) CHECK (cost >= 0),
|
|
105
|
+
stock_quantity INT NOT NULL DEFAULT 0 CHECK (stock_quantity >= 0),
|
|
106
|
+
low_stock_threshold INT NOT NULL DEFAULT 10,
|
|
107
|
+
status VARCHAR(20) NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'inactive', 'discontinued')),
|
|
108
|
+
category VARCHAR(100),
|
|
109
|
+
brand VARCHAR(100),
|
|
110
|
+
weight_kg DECIMAL(8, 2),
|
|
111
|
+
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
112
|
+
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
113
|
+
);
|
|
114
|
+
|
|
115
|
+
-- Indexes
|
|
116
|
+
CREATE INDEX idx_products_sku ON products(sku);
|
|
117
|
+
CREATE INDEX idx_products_status ON products(status);
|
|
118
|
+
CREATE INDEX idx_products_category ON products(category);
|
|
119
|
+
CREATE INDEX idx_products_brand ON products(brand);
|
|
120
|
+
CREATE INDEX idx_products_price ON products(price);
|
|
121
|
+
|
|
122
|
+
-- Full-text search index (PostgreSQL)
|
|
123
|
+
CREATE INDEX idx_products_search ON products USING GIN(to_tsvector('english', name || ' ' || COALESCE(description, '')));
|
|
124
|
+
|
|
125
|
+
-- Comments
|
|
126
|
+
COMMENT ON TABLE products IS 'Product catalog';
|
|
127
|
+
COMMENT ON COLUMN products.sku IS 'Stock Keeping Unit - unique product identifier';
|
|
128
|
+
COMMENT ON COLUMN products.low_stock_threshold IS 'Alert when stock falls below this level';
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
### Product Images Table
|
|
132
|
+
|
|
133
|
+
```sql
|
|
134
|
+
CREATE TABLE product_images (
|
|
135
|
+
id SERIAL PRIMARY KEY,
|
|
136
|
+
product_id INT NOT NULL REFERENCES products(id) ON DELETE CASCADE,
|
|
137
|
+
url VARCHAR(500) NOT NULL,
|
|
138
|
+
alt_text VARCHAR(255),
|
|
139
|
+
display_order INT NOT NULL DEFAULT 0,
|
|
140
|
+
is_primary BOOLEAN NOT NULL DEFAULT false,
|
|
141
|
+
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
-- Indexes
|
|
145
|
+
CREATE INDEX idx_product_images_product_id ON product_images(product_id);
|
|
146
|
+
|
|
147
|
+
-- Unique constraint: Only one primary image per product
|
|
148
|
+
CREATE UNIQUE INDEX idx_product_images_primary ON product_images(product_id, is_primary)
|
|
149
|
+
WHERE is_primary = true;
|
|
150
|
+
|
|
151
|
+
-- Comments
|
|
152
|
+
COMMENT ON TABLE product_images IS 'Product images and photos';
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Cart Items Table
|
|
156
|
+
|
|
157
|
+
```sql
|
|
158
|
+
CREATE TABLE cart_items (
|
|
159
|
+
id SERIAL PRIMARY KEY,
|
|
160
|
+
user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
161
|
+
product_id INT NOT NULL REFERENCES products(id) ON DELETE CASCADE,
|
|
162
|
+
quantity INT NOT NULL CHECK (quantity > 0),
|
|
163
|
+
added_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
164
|
+
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
165
|
+
|
|
166
|
+
-- Unique constraint: One row per user-product combination
|
|
167
|
+
UNIQUE(user_id, product_id)
|
|
168
|
+
);
|
|
169
|
+
|
|
170
|
+
-- Indexes
|
|
171
|
+
CREATE INDEX idx_cart_items_user_id ON cart_items(user_id);
|
|
172
|
+
CREATE INDEX idx_cart_items_product_id ON cart_items(product_id);
|
|
173
|
+
|
|
174
|
+
-- Comments
|
|
175
|
+
COMMENT ON TABLE cart_items IS 'Shopping cart items for users';
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Orders Table
|
|
179
|
+
|
|
180
|
+
```sql
|
|
181
|
+
CREATE TABLE orders (
|
|
182
|
+
id SERIAL PRIMARY KEY,
|
|
183
|
+
user_id INT NOT NULL REFERENCES users(id),
|
|
184
|
+
order_number VARCHAR(50) NOT NULL UNIQUE,
|
|
185
|
+
status VARCHAR(20) NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'processing', 'shipped', 'delivered', 'cancelled')),
|
|
186
|
+
subtotal DECIMAL(10, 2) NOT NULL CHECK (subtotal >= 0),
|
|
187
|
+
tax DECIMAL(10, 2) NOT NULL DEFAULT 0 CHECK (tax >= 0),
|
|
188
|
+
shipping_cost DECIMAL(10, 2) NOT NULL DEFAULT 0 CHECK (shipping_cost >= 0),
|
|
189
|
+
total DECIMAL(10, 2) NOT NULL CHECK (total >= 0),
|
|
190
|
+
shipping_address_id INT REFERENCES addresses(id),
|
|
191
|
+
billing_address_id INT REFERENCES addresses(id),
|
|
192
|
+
payment_method VARCHAR(50),
|
|
193
|
+
payment_status VARCHAR(20) NOT NULL DEFAULT 'pending' CHECK (payment_status IN ('pending', 'paid', 'failed', 'refunded')),
|
|
194
|
+
notes TEXT,
|
|
195
|
+
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
196
|
+
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
197
|
+
shipped_at TIMESTAMP,
|
|
198
|
+
delivered_at TIMESTAMP
|
|
199
|
+
);
|
|
200
|
+
|
|
201
|
+
-- Indexes
|
|
202
|
+
CREATE INDEX idx_orders_user_id ON orders(user_id);
|
|
203
|
+
CREATE INDEX idx_orders_order_number ON orders(order_number);
|
|
204
|
+
CREATE INDEX idx_orders_status ON orders(status);
|
|
205
|
+
CREATE INDEX idx_orders_payment_status ON orders(payment_status);
|
|
206
|
+
CREATE INDEX idx_orders_created_at ON orders(created_at DESC);
|
|
207
|
+
|
|
208
|
+
-- Composite index for common queries
|
|
209
|
+
CREATE INDEX idx_orders_user_status ON orders(user_id, status);
|
|
210
|
+
|
|
211
|
+
-- Comments
|
|
212
|
+
COMMENT ON TABLE orders IS 'Customer orders';
|
|
213
|
+
COMMENT ON COLUMN orders.order_number IS 'Human-readable order number (e.g., ORD-2024-00001)';
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Order Items Table
|
|
217
|
+
|
|
218
|
+
```sql
|
|
219
|
+
CREATE TABLE order_items (
|
|
220
|
+
id SERIAL PRIMARY KEY,
|
|
221
|
+
order_id INT NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
|
|
222
|
+
product_id INT NOT NULL REFERENCES products(id),
|
|
223
|
+
quantity INT NOT NULL CHECK (quantity > 0),
|
|
224
|
+
unit_price DECIMAL(10, 2) NOT NULL CHECK (unit_price >= 0),
|
|
225
|
+
total_price DECIMAL(10, 2) NOT NULL CHECK (total_price >= 0),
|
|
226
|
+
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
227
|
+
);
|
|
228
|
+
|
|
229
|
+
-- Indexes
|
|
230
|
+
CREATE INDEX idx_order_items_order_id ON order_items(order_id);
|
|
231
|
+
CREATE INDEX idx_order_items_product_id ON order_items(product_id);
|
|
232
|
+
|
|
233
|
+
-- Comments
|
|
234
|
+
COMMENT ON TABLE order_items IS 'Line items for orders';
|
|
235
|
+
COMMENT ON COLUMN order_items.unit_price IS 'Price at time of order (may differ from current product price)';
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Reviews Table
|
|
239
|
+
|
|
240
|
+
```sql
|
|
241
|
+
CREATE TABLE reviews (
|
|
242
|
+
id SERIAL PRIMARY KEY,
|
|
243
|
+
product_id INT NOT NULL REFERENCES products(id) ON DELETE CASCADE,
|
|
244
|
+
user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
245
|
+
rating INT NOT NULL CHECK (rating >= 1 AND rating <= 5),
|
|
246
|
+
title VARCHAR(255),
|
|
247
|
+
comment TEXT,
|
|
248
|
+
verified_purchase BOOLEAN NOT NULL DEFAULT false,
|
|
249
|
+
helpful_count INT NOT NULL DEFAULT 0,
|
|
250
|
+
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
251
|
+
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
252
|
+
|
|
253
|
+
-- Unique constraint: One review per user per product
|
|
254
|
+
UNIQUE(product_id, user_id)
|
|
255
|
+
);
|
|
256
|
+
|
|
257
|
+
-- Indexes
|
|
258
|
+
CREATE INDEX idx_reviews_product_id ON reviews(product_id);
|
|
259
|
+
CREATE INDEX idx_reviews_user_id ON reviews(user_id);
|
|
260
|
+
CREATE INDEX idx_reviews_rating ON reviews(rating);
|
|
261
|
+
CREATE INDEX idx_reviews_created_at ON reviews(created_at DESC);
|
|
262
|
+
|
|
263
|
+
-- Comments
|
|
264
|
+
COMMENT ON TABLE reviews IS 'Product reviews and ratings';
|
|
265
|
+
COMMENT ON COLUMN reviews.verified_purchase IS 'True if user purchased this product';
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Sample Queries
|
|
271
|
+
|
|
272
|
+
### Query 1: Get User with Addresses
|
|
273
|
+
|
|
274
|
+
```sql
|
|
275
|
+
SELECT
|
|
276
|
+
u.id,
|
|
277
|
+
u.email,
|
|
278
|
+
u.first_name,
|
|
279
|
+
u.last_name,
|
|
280
|
+
json_agg(
|
|
281
|
+
json_build_object(
|
|
282
|
+
'id', a.id,
|
|
283
|
+
'type', a.address_type,
|
|
284
|
+
'street', a.street_line1,
|
|
285
|
+
'city', a.city,
|
|
286
|
+
'state', a.state,
|
|
287
|
+
'postal_code', a.postal_code,
|
|
288
|
+
'is_default', a.is_default
|
|
289
|
+
)
|
|
290
|
+
) AS addresses
|
|
291
|
+
FROM users u
|
|
292
|
+
LEFT JOIN addresses a ON a.user_id = u.id
|
|
293
|
+
WHERE u.id = 1
|
|
294
|
+
GROUP BY u.id;
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
**Explanation:**
|
|
298
|
+
- Uses `LEFT JOIN` to include users even if they have no addresses
|
|
299
|
+
- Uses `json_agg` to aggregate addresses into JSON array
|
|
300
|
+
- Groups by user ID to get one row per user
|
|
301
|
+
|
|
302
|
+
### Query 2: Get Product with Images and Average Rating
|
|
303
|
+
|
|
304
|
+
```sql
|
|
305
|
+
SELECT
|
|
306
|
+
p.id,
|
|
307
|
+
p.sku,
|
|
308
|
+
p.name,
|
|
309
|
+
p.description,
|
|
310
|
+
p.price,
|
|
311
|
+
p.stock_quantity,
|
|
312
|
+
COALESCE(AVG(r.rating), 0) AS avg_rating,
|
|
313
|
+
COUNT(r.id) AS review_count,
|
|
314
|
+
json_agg(
|
|
315
|
+
json_build_object(
|
|
316
|
+
'url', pi.url,
|
|
317
|
+
'alt_text', pi.alt_text,
|
|
318
|
+
'is_primary', pi.is_primary
|
|
319
|
+
) ORDER BY pi.display_order
|
|
320
|
+
) FILTER (WHERE pi.id IS NOT NULL) AS images
|
|
321
|
+
FROM products p
|
|
322
|
+
LEFT JOIN product_images pi ON pi.product_id = p.id
|
|
323
|
+
LEFT JOIN reviews r ON r.product_id = p.id
|
|
324
|
+
WHERE p.id = 1
|
|
325
|
+
GROUP BY p.id;
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**Explanation:**
|
|
329
|
+
- Joins product with images and reviews
|
|
330
|
+
- Calculates average rating and review count
|
|
331
|
+
- Aggregates images into JSON array ordered by display_order
|
|
332
|
+
- Uses `FILTER` to exclude NULL images
|
|
333
|
+
|
|
334
|
+
### Query 3: Get User's Shopping Cart with Product Details
|
|
335
|
+
|
|
336
|
+
```sql
|
|
337
|
+
SELECT
|
|
338
|
+
ci.id AS cart_item_id,
|
|
339
|
+
ci.quantity,
|
|
340
|
+
p.id AS product_id,
|
|
341
|
+
p.sku,
|
|
342
|
+
p.name,
|
|
343
|
+
p.price,
|
|
344
|
+
p.stock_quantity,
|
|
345
|
+
(ci.quantity * p.price) AS line_total,
|
|
346
|
+
CASE
|
|
347
|
+
WHEN p.stock_quantity >= ci.quantity THEN true
|
|
348
|
+
ELSE false
|
|
349
|
+
END AS in_stock
|
|
350
|
+
FROM cart_items ci
|
|
351
|
+
JOIN products p ON p.id = ci.product_id
|
|
352
|
+
WHERE ci.user_id = 1
|
|
353
|
+
ORDER BY ci.added_at DESC;
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
**Explanation:**
|
|
357
|
+
- Joins cart items with products
|
|
358
|
+
- Calculates line total (quantity × price)
|
|
359
|
+
- Checks if product is in stock
|
|
360
|
+
- Orders by most recently added
|
|
361
|
+
|
|
362
|
+
### Query 4: Get Order with Items and Product Details
|
|
363
|
+
|
|
364
|
+
```sql
|
|
365
|
+
SELECT
|
|
366
|
+
o.id AS order_id,
|
|
367
|
+
o.order_number,
|
|
368
|
+
o.status,
|
|
369
|
+
o.total,
|
|
370
|
+
o.created_at,
|
|
371
|
+
json_agg(
|
|
372
|
+
json_build_object(
|
|
373
|
+
'product_id', p.id,
|
|
374
|
+
'product_name', p.name,
|
|
375
|
+
'sku', p.sku,
|
|
376
|
+
'quantity', oi.quantity,
|
|
377
|
+
'unit_price', oi.unit_price,
|
|
378
|
+
'total_price', oi.total_price
|
|
379
|
+
)
|
|
380
|
+
) AS items
|
|
381
|
+
FROM orders o
|
|
382
|
+
JOIN order_items oi ON oi.order_id = o.id
|
|
383
|
+
JOIN products p ON p.id = oi.product_id
|
|
384
|
+
WHERE o.id = 1
|
|
385
|
+
GROUP BY o.id;
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
**Explanation:**
|
|
389
|
+
- Joins order with order items and products
|
|
390
|
+
- Aggregates items into JSON array
|
|
391
|
+
- Groups by order ID to get one row per order
|
|
392
|
+
|
|
393
|
+
### Query 5: Get Products with Low Stock
|
|
394
|
+
|
|
395
|
+
```sql
|
|
396
|
+
SELECT
|
|
397
|
+
id,
|
|
398
|
+
sku,
|
|
399
|
+
name,
|
|
400
|
+
stock_quantity,
|
|
401
|
+
low_stock_threshold,
|
|
402
|
+
(low_stock_threshold - stock_quantity) AS units_below_threshold
|
|
403
|
+
FROM products
|
|
404
|
+
WHERE stock_quantity < low_stock_threshold
|
|
405
|
+
AND status = 'active'
|
|
406
|
+
ORDER BY stock_quantity ASC;
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
**Explanation:**
|
|
410
|
+
- Filters products below low stock threshold
|
|
411
|
+
- Only includes active products
|
|
412
|
+
- Calculates how many units below threshold
|
|
413
|
+
- Orders by lowest stock first
|
|
414
|
+
|
|
415
|
+
### Query 6: Get Top-Rated Products
|
|
416
|
+
|
|
417
|
+
```sql
|
|
418
|
+
SELECT
|
|
419
|
+
p.id,
|
|
420
|
+
p.sku,
|
|
421
|
+
p.name,
|
|
422
|
+
p.price,
|
|
423
|
+
AVG(r.rating) AS avg_rating,
|
|
424
|
+
COUNT(r.id) AS review_count
|
|
425
|
+
FROM products p
|
|
426
|
+
JOIN reviews r ON r.product_id = p.id
|
|
427
|
+
WHERE p.status = 'active'
|
|
428
|
+
GROUP BY p.id
|
|
429
|
+
HAVING COUNT(r.id) >= 5 -- At least 5 reviews
|
|
430
|
+
ORDER BY avg_rating DESC, review_count DESC
|
|
431
|
+
LIMIT 10;
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
**Explanation:**
|
|
435
|
+
- Joins products with reviews
|
|
436
|
+
- Calculates average rating and review count
|
|
437
|
+
- Filters to products with at least 5 reviews
|
|
438
|
+
- Orders by highest rating first
|
|
439
|
+
- Limits to top 10 products
|
|
440
|
+
|
|
441
|
+
### Query 7: Get User's Order History
|
|
442
|
+
|
|
443
|
+
```sql
|
|
444
|
+
SELECT
|
|
445
|
+
o.id,
|
|
446
|
+
o.order_number,
|
|
447
|
+
o.status,
|
|
448
|
+
o.total,
|
|
449
|
+
o.created_at,
|
|
450
|
+
COUNT(oi.id) AS item_count
|
|
451
|
+
FROM orders o
|
|
452
|
+
LEFT JOIN order_items oi ON oi.order_id = o.id
|
|
453
|
+
WHERE o.user_id = 1
|
|
454
|
+
GROUP BY o.id
|
|
455
|
+
ORDER BY o.created_at DESC;
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
**Explanation:**
|
|
459
|
+
- Gets all orders for a user
|
|
460
|
+
- Counts number of items in each order
|
|
461
|
+
- Orders by most recent first
|
|
462
|
+
|
|
463
|
+
### Query 8: Search Products by Name or Description
|
|
464
|
+
|
|
465
|
+
```sql
|
|
466
|
+
-- Full-text search (PostgreSQL)
|
|
467
|
+
SELECT
|
|
468
|
+
id,
|
|
469
|
+
sku,
|
|
470
|
+
name,
|
|
471
|
+
price,
|
|
472
|
+
ts_rank(to_tsvector('english', name || ' ' || COALESCE(description, '')), query) AS rank
|
|
473
|
+
FROM products,
|
|
474
|
+
to_tsquery('english', 'laptop & gaming') AS query
|
|
475
|
+
WHERE to_tsvector('english', name || ' ' || COALESCE(description, '')) @@ query
|
|
476
|
+
AND status = 'active'
|
|
477
|
+
ORDER BY rank DESC;
|
|
478
|
+
|
|
479
|
+
-- Simple LIKE search (works on all databases)
|
|
480
|
+
SELECT
|
|
481
|
+
id,
|
|
482
|
+
sku,
|
|
483
|
+
name,
|
|
484
|
+
price
|
|
485
|
+
FROM products
|
|
486
|
+
WHERE (name ILIKE '%laptop%' OR description ILIKE '%laptop%')
|
|
487
|
+
AND status = 'active'
|
|
488
|
+
ORDER BY name;
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
**Explanation:**
|
|
492
|
+
- PostgreSQL version uses full-text search with ranking
|
|
493
|
+
- LIKE version works on all databases but slower
|
|
494
|
+
- Both filter to active products only
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
## Sample Data Insertion
|
|
499
|
+
|
|
500
|
+
### Insert Users
|
|
501
|
+
|
|
502
|
+
```sql
|
|
503
|
+
INSERT INTO users (email, password_hash, first_name, last_name, phone) VALUES
|
|
504
|
+
('john.doe@example.com', '$2b$10$...', 'John', 'Doe', '555-0101'),
|
|
505
|
+
('jane.smith@example.com', '$2b$10$...', 'Jane', 'Smith', '555-0102'),
|
|
506
|
+
('bob.johnson@example.com', '$2b$10$...', 'Bob', 'Johnson', '555-0103');
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
### Insert Addresses
|
|
510
|
+
|
|
511
|
+
```sql
|
|
512
|
+
INSERT INTO addresses (user_id, address_type, street_line1, city, state, postal_code, is_default) VALUES
|
|
513
|
+
(1, 'shipping', '123 Main St', 'New York', 'NY', '10001', true),
|
|
514
|
+
(1, 'billing', '123 Main St', 'New York', 'NY', '10001', true),
|
|
515
|
+
(2, 'shipping', '456 Oak Ave', 'Los Angeles', 'CA', '90001', true);
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
### Insert Products
|
|
519
|
+
|
|
520
|
+
```sql
|
|
521
|
+
INSERT INTO products (sku, name, description, price, cost, stock_quantity, category, brand) VALUES
|
|
522
|
+
('LAP-001', 'Gaming Laptop Pro', 'High-performance gaming laptop with RTX 4080', 1999.99, 1500.00, 25, 'Laptops', 'TechBrand'),
|
|
523
|
+
('MOU-001', 'Wireless Gaming Mouse', 'Ergonomic wireless mouse with RGB lighting', 79.99, 40.00, 150, 'Accessories', 'PeripheralCo'),
|
|
524
|
+
('KEY-001', 'Mechanical Keyboard', 'RGB mechanical keyboard with Cherry MX switches', 149.99, 80.00, 75, 'Accessories', 'PeripheralCo');
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
### Insert Product Images
|
|
528
|
+
|
|
529
|
+
```sql
|
|
530
|
+
INSERT INTO product_images (product_id, url, alt_text, display_order, is_primary) VALUES
|
|
531
|
+
(1, 'https://example.com/images/laptop-1.jpg', 'Gaming Laptop Pro - Front View', 0, true),
|
|
532
|
+
(1, 'https://example.com/images/laptop-2.jpg', 'Gaming Laptop Pro - Side View', 1, false),
|
|
533
|
+
(2, 'https://example.com/images/mouse-1.jpg', 'Wireless Gaming Mouse', 0, true);
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
### Insert Cart Items
|
|
537
|
+
|
|
538
|
+
```sql
|
|
539
|
+
INSERT INTO cart_items (user_id, product_id, quantity) VALUES
|
|
540
|
+
(1, 1, 1),
|
|
541
|
+
(1, 2, 2),
|
|
542
|
+
(2, 3, 1);
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
### Insert Orders and Order Items
|
|
546
|
+
|
|
547
|
+
```sql
|
|
548
|
+
-- Insert order
|
|
549
|
+
INSERT INTO orders (user_id, order_number, status, subtotal, tax, shipping_cost, total, shipping_address_id, billing_address_id, payment_method, payment_status)
|
|
550
|
+
VALUES (1, 'ORD-2024-00001', 'processing', 2159.97, 172.80, 15.00, 2347.77, 1, 2, 'credit_card', 'paid');
|
|
551
|
+
|
|
552
|
+
-- Insert order items
|
|
553
|
+
INSERT INTO order_items (order_id, product_id, quantity, unit_price, total_price) VALUES
|
|
554
|
+
(1, 1, 1, 1999.99, 1999.99),
|
|
555
|
+
(1, 2, 2, 79.99, 159.98);
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
### Insert Reviews
|
|
559
|
+
|
|
560
|
+
```sql
|
|
561
|
+
INSERT INTO reviews (product_id, user_id, rating, title, comment, verified_purchase) VALUES
|
|
562
|
+
(1, 2, 5, 'Amazing laptop!', 'Best gaming laptop I have ever owned. Runs all games smoothly.', true),
|
|
563
|
+
(2, 1, 4, 'Great mouse', 'Very comfortable and responsive. Battery life could be better.', true);
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
---
|
|
567
|
+
|
|
568
|
+
## Schema Design Principles Demonstrated
|
|
569
|
+
|
|
570
|
+
### 1. Normalization
|
|
571
|
+
|
|
572
|
+
**Third Normal Form (3NF):**
|
|
573
|
+
- ✅ No repeating groups (separate tables for addresses, order items, etc.)
|
|
574
|
+
- ✅ All non-key attributes depend on primary key
|
|
575
|
+
- ✅ No transitive dependencies
|
|
576
|
+
|
|
577
|
+
**Example:**
|
|
578
|
+
- Order items store `unit_price` (price at time of order) instead of referencing current product price
|
|
579
|
+
- This prevents historical data from changing when product prices change
|
|
580
|
+
|
|
581
|
+
### 2. Foreign Keys
|
|
582
|
+
|
|
583
|
+
**Referential Integrity:**
|
|
584
|
+
- ✅ All foreign keys defined with `REFERENCES`
|
|
585
|
+
- ✅ Appropriate `ON DELETE` actions (CASCADE for dependent data)
|
|
586
|
+
- ✅ Indexes on all foreign key columns for performance
|
|
587
|
+
|
|
588
|
+
### 3. Constraints
|
|
589
|
+
|
|
590
|
+
**Data Integrity:**
|
|
591
|
+
- ✅ `NOT NULL` for required fields
|
|
592
|
+
- ✅ `UNIQUE` for unique values (email, SKU, order_number)
|
|
593
|
+
- ✅ `CHECK` for valid values (price >= 0, rating between 1-5)
|
|
594
|
+
- ✅ `DEFAULT` for sensible defaults
|
|
595
|
+
|
|
596
|
+
### 4. Indexes
|
|
597
|
+
|
|
598
|
+
**Query Performance:**
|
|
599
|
+
- ✅ Primary keys automatically indexed
|
|
600
|
+
- ✅ Foreign keys indexed
|
|
601
|
+
- ✅ Frequently queried columns indexed (email, status, created_at)
|
|
602
|
+
- ✅ Composite indexes for common query patterns
|
|
603
|
+
- ✅ Unique indexes for constraints
|
|
604
|
+
|
|
605
|
+
### 5. Denormalization (Strategic)
|
|
606
|
+
|
|
607
|
+
**Performance Optimization:**
|
|
608
|
+
- ✅ `order_items.unit_price` stores price at time of order (prevents joins)
|
|
609
|
+
- ✅ `order_items.total_price` stores calculated value (avoids recalculation)
|
|
610
|
+
- ✅ Consider adding `products.avg_rating` and `products.review_count` for performance
|
|
611
|
+
|
|
612
|
+
---
|
|
613
|
+
|
|
614
|
+
## Related Documentation
|
|
615
|
+
|
|
616
|
+
- **relational-schema-design.md**: Schema design principles and normalization
|
|
617
|
+
- **relational-indexing.md**: Indexing strategies
|
|
618
|
+
- **relational-query-optimization.md**: Query optimization techniques
|
|
619
|
+
- **relational-databases.md**: Relational database fundamentals
|
|
620
|
+
|
|
621
|
+
|