@specverse/engine-realize 3.5.3
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/assets/examples/09-api/ai-spec.yaml +194 -0
- package/assets/examples/09-api/converted.yaml +95 -0
- package/assets/examples/09-api/diagram-architecture.mmd +10 -0
- package/assets/examples/09-api/diagram-er.mmd +10 -0
- package/assets/examples/09-api/documentation.html +104 -0
- package/assets/examples/09-api/documentation.md +95 -0
- package/assets/examples/09-api/inferred-spec.yaml +420 -0
- package/assets/examples/09-api/openapi.json +61 -0
- package/assets/examples/10-api/README.md +216 -0
- package/assets/examples/10-api/ai-spec.yaml +194 -0
- package/assets/examples/10-api/converted.yaml +96 -0
- package/assets/examples/10-api/diagram-architecture.mmd +10 -0
- package/assets/examples/10-api/diagram-er.mmd +10 -0
- package/assets/examples/10-api/documentation.html +104 -0
- package/assets/examples/10-api/documentation.md +95 -0
- package/assets/examples/10-api/inferred-spec.yaml +7 -0
- package/assets/examples/10-api/metadata.yaml +89 -0
- package/assets/examples/10-api/openapi.json +61 -0
- package/assets/examples/10-api/package-integration-test.js +177 -0
- package/assets/examples/10-api/usage-example.js +323 -0
- package/assets/examples/10-api/usage-example.ts +363 -0
- package/assets/examples/10-api/workflow-test.js +113 -0
- package/assets/examples/manifests/01-simple-default-mappings.yaml +36 -0
- package/assets/examples/manifests/02-capability-mappings.yaml +55 -0
- package/assets/examples/manifests/03-hybrid-mappings.yaml +109 -0
- package/assets/examples/manifests/README.md +245 -0
- package/assets/examples/manifests/backend-only.yaml +43 -0
- package/assets/examples/manifests/blog-api.md +78 -0
- package/assets/examples/manifests/blog-api.specly +79 -0
- package/assets/examples/manifests/frontend-only.yaml +27 -0
- package/assets/examples/manifests/fullstack-app.yaml +44 -0
- package/assets/examples/manifests/fullstack-monorepo.yaml +62 -0
- package/assets/examples/validate-examples-with-expected-failures.cjs +328 -0
- package/assets/examples/validate-examples.cjs +225 -0
- package/assets/examples-decomposed/cloud-native-manifest.example.yaml +8 -0
- package/assets/examples-decomposed/cloud-native-manifest.md +379 -0
- package/assets/examples-decomposed/cloud-native-manifest.specly +60 -0
- package/assets/examples-decomposed/docker-compose-manifest.example.yaml +8 -0
- package/assets/examples-decomposed/docker-compose-manifest.md +326 -0
- package/assets/examples-decomposed/docker-compose-manifest.specly +40 -0
- package/assets/examples-decomposed/kubernetes-deployment-manifest.example.yaml +8 -0
- package/assets/examples-decomposed/kubernetes-deployment-manifest.md +237 -0
- package/assets/examples-decomposed/kubernetes-deployment-manifest.specly +41 -0
- package/assets/templates/README.md +559 -0
- package/assets/templates/TEMPLATE-ENHANCEMENTS-V33.md +462 -0
- package/assets/templates/backend-only/CLAUDE.md +73 -0
- package/assets/templates/backend-only/README.md +197 -0
- package/assets/templates/backend-only/deployments/README.md +149 -0
- package/assets/templates/backend-only/deployments/development.specly +53 -0
- package/assets/templates/backend-only/deployments/production.specly +87 -0
- package/assets/templates/backend-only/docs/README.md +50 -0
- package/assets/templates/backend-only/docs/api/README.md +7 -0
- package/assets/templates/backend-only/docs/diagrams/README.md +85 -0
- package/assets/templates/backend-only/docs/example-documentation-template.md +269 -0
- package/assets/templates/backend-only/docs/guides/README.md +15 -0
- package/assets/templates/backend-only/dot.env.example +18 -0
- package/assets/templates/backend-only/generated/README.md +56 -0
- package/assets/templates/backend-only/generated/code/integration-test.template.js +320 -0
- package/assets/templates/backend-only/generated/code/package.json.template +34 -0
- package/assets/templates/backend-only/generated/docs/README.md +49 -0
- package/assets/templates/backend-only/gitignore +54 -0
- package/assets/templates/backend-only/manifests/README.md +72 -0
- package/assets/templates/backend-only/manifests/docker-compose.specly +91 -0
- package/assets/templates/backend-only/manifests/implementation.yaml +100 -0
- package/assets/templates/backend-only/manifests/kubernetes.specly +140 -0
- package/assets/templates/backend-only/package.json +59 -0
- package/assets/templates/backend-only/scripts/test-all.sh +160 -0
- package/assets/templates/backend-only/scripts/test-generated-code.sh +165 -0
- package/assets/templates/backend-only/specs/main.specly +67 -0
- package/assets/templates/default/CLAUDE.md +141 -0
- package/assets/templates/default/README.md +404 -0
- package/assets/templates/default/deployments/README.md +149 -0
- package/assets/templates/default/deployments/development.specly +53 -0
- package/assets/templates/default/deployments/production.specly +87 -0
- package/assets/templates/default/docs/README.md +50 -0
- package/assets/templates/default/docs/api/README.md +7 -0
- package/assets/templates/default/docs/diagrams/README.md +85 -0
- package/assets/templates/default/docs/example-documentation-template.md +269 -0
- package/assets/templates/default/docs/guides/README.md +15 -0
- package/assets/templates/default/dot.env.example +18 -0
- package/assets/templates/default/generated/README.md +56 -0
- package/assets/templates/default/generated/code/integration-test.template.js +320 -0
- package/assets/templates/default/generated/code/package.json.template +34 -0
- package/assets/templates/default/generated/docs/README.md +49 -0
- package/assets/templates/default/gitignore +54 -0
- package/assets/templates/default/manifests/README.md +72 -0
- package/assets/templates/default/manifests/docker-compose.specly +91 -0
- package/assets/templates/default/manifests/implementation.yaml +176 -0
- package/assets/templates/default/manifests/kubernetes.specly +140 -0
- package/assets/templates/default/package.json +61 -0
- package/assets/templates/default/scripts/test-all.sh +160 -0
- package/assets/templates/default/scripts/test-generated-code.sh +165 -0
- package/assets/templates/default/specs/main.specly +67 -0
- package/assets/templates/frontend-only/CLAUDE.md +75 -0
- package/assets/templates/frontend-only/README.md +231 -0
- package/assets/templates/frontend-only/deployments/README.md +149 -0
- package/assets/templates/frontend-only/deployments/development.specly +53 -0
- package/assets/templates/frontend-only/deployments/production.specly +87 -0
- package/assets/templates/frontend-only/docs/README.md +50 -0
- package/assets/templates/frontend-only/docs/api/README.md +7 -0
- package/assets/templates/frontend-only/docs/diagrams/README.md +85 -0
- package/assets/templates/frontend-only/docs/example-documentation-template.md +269 -0
- package/assets/templates/frontend-only/docs/guides/README.md +15 -0
- package/assets/templates/frontend-only/dot.env.example +18 -0
- package/assets/templates/frontend-only/generated/README.md +56 -0
- package/assets/templates/frontend-only/generated/code/integration-test.template.js +320 -0
- package/assets/templates/frontend-only/generated/code/package.json.template +34 -0
- package/assets/templates/frontend-only/generated/docs/README.md +49 -0
- package/assets/templates/frontend-only/gitignore +54 -0
- package/assets/templates/frontend-only/manifests/README.md +72 -0
- package/assets/templates/frontend-only/manifests/docker-compose.specly +91 -0
- package/assets/templates/frontend-only/manifests/implementation.yaml +58 -0
- package/assets/templates/frontend-only/manifests/kubernetes.specly +140 -0
- package/assets/templates/frontend-only/package.json +59 -0
- package/assets/templates/frontend-only/scripts/test-all.sh +160 -0
- package/assets/templates/frontend-only/scripts/test-generated-code.sh +165 -0
- package/assets/templates/frontend-only/specs/main.specly +57 -0
- package/assets/templates/full-stack/AI-GUIDE.md +60 -0
- package/assets/templates/full-stack/CLAUDE.md +141 -0
- package/assets/templates/full-stack/README.md +382 -0
- package/assets/templates/full-stack/archive/AI-GUIDE-legacy.md +392 -0
- package/assets/templates/full-stack/deployments/README.md +149 -0
- package/assets/templates/full-stack/deployments/development.specly +53 -0
- package/assets/templates/full-stack/deployments/production.specly +87 -0
- package/assets/templates/full-stack/docs/README.md +51 -0
- package/assets/templates/full-stack/docs/api/README.md +7 -0
- package/assets/templates/full-stack/docs/diagrams/README.md +85 -0
- package/assets/templates/full-stack/docs/example-documentation-template.md +269 -0
- package/assets/templates/full-stack/docs/guides/README.md +15 -0
- package/assets/templates/full-stack/generated/README.md +56 -0
- package/assets/templates/full-stack/generated/code/integration-test.template.js +320 -0
- package/assets/templates/full-stack/generated/code/package.json.template +34 -0
- package/assets/templates/full-stack/generated/docs/README.md +49 -0
- package/assets/templates/full-stack/gitignore +54 -0
- package/assets/templates/full-stack/manifests/README.md +72 -0
- package/assets/templates/full-stack/manifests/docker-compose.specly +91 -0
- package/assets/templates/full-stack/manifests/implementation.yaml +155 -0
- package/assets/templates/full-stack/manifests/kubernetes.specly +140 -0
- package/assets/templates/full-stack/package.json +45 -0
- package/assets/templates/full-stack/scripts/test-all.sh +160 -0
- package/assets/templates/full-stack/scripts/test-generated-code.sh +165 -0
- package/assets/templates/full-stack/specs/example-v33.specly +297 -0
- package/assets/templates/full-stack/specs/main-simple.specly +73 -0
- package/assets/templates/full-stack/specs/main.specly +408 -0
- package/dist/engines/code-generator.d.ts +86 -0
- package/dist/engines/code-generator.d.ts.map +1 -0
- package/dist/engines/code-generator.js +159 -0
- package/dist/engines/code-generator.js.map +1 -0
- package/dist/engines/engine-registry.d.ts +94 -0
- package/dist/engines/engine-registry.d.ts.map +1 -0
- package/dist/engines/engine-registry.js +163 -0
- package/dist/engines/engine-registry.js.map +1 -0
- package/dist/engines/index.d.ts +10 -0
- package/dist/engines/index.d.ts.map +1 -0
- package/dist/engines/index.js +12 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/typescript-engine.d.ts +74 -0
- package/dist/engines/typescript-engine.d.ts.map +1 -0
- package/dist/engines/typescript-engine.js +288 -0
- package/dist/engines/typescript-engine.js.map +1 -0
- package/dist/generators/index.d.ts +11 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +11 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +434 -0
- package/dist/index.js.map +1 -0
- package/dist/library/index.d.ts +12 -0
- package/dist/library/index.d.ts.map +1 -0
- package/dist/library/index.js +15 -0
- package/dist/library/index.js.map +1 -0
- package/dist/library/library.d.ts +132 -0
- package/dist/library/library.d.ts.map +1 -0
- package/dist/library/library.js +343 -0
- package/dist/library/library.js.map +1 -0
- package/dist/library/loader.d.ts +73 -0
- package/dist/library/loader.d.ts.map +1 -0
- package/dist/library/loader.js +150 -0
- package/dist/library/loader.js.map +1 -0
- package/dist/library/resolver.d.ts +104 -0
- package/dist/library/resolver.d.ts.map +1 -0
- package/dist/library/resolver.js +299 -0
- package/dist/library/resolver.js.map +1 -0
- package/dist/library/validator.d.ts +65 -0
- package/dist/library/validator.d.ts.map +1 -0
- package/dist/library/validator.js +203 -0
- package/dist/library/validator.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +7 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/instance-factory.d.ts +289 -0
- package/dist/types/instance-factory.d.ts.map +1 -0
- package/dist/types/instance-factory.js +8 -0
- package/dist/types/instance-factory.js.map +1 -0
- package/dist/types/unified-mappings.d.ts +163 -0
- package/dist/types/unified-mappings.d.ts.map +1 -0
- package/dist/types/unified-mappings.js +110 -0
- package/dist/types/unified-mappings.js.map +1 -0
- package/dist/utils/ai-spec-loader.d.ts +77 -0
- package/dist/utils/ai-spec-loader.d.ts.map +1 -0
- package/dist/utils/ai-spec-loader.js +138 -0
- package/dist/utils/ai-spec-loader.js.map +1 -0
- package/dist/utils/index.d.ts +9 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/manifest-loader.d.ts +107 -0
- package/dist/utils/manifest-loader.d.ts.map +1 -0
- package/dist/utils/manifest-loader.js +168 -0
- package/dist/utils/manifest-loader.js.map +1 -0
- package/dist/utils/mapping-migration.d.ts +53 -0
- package/dist/utils/mapping-migration.d.ts.map +1 -0
- package/dist/utils/mapping-migration.js +194 -0
- package/dist/utils/mapping-migration.js.map +1 -0
- package/libs/instance-factories/CURVED-INTERFACE.md +278 -0
- package/libs/instance-factories/README.md +433 -0
- package/libs/instance-factories/applications/generic-app.yaml +52 -0
- package/libs/instance-factories/applications/react-app.yaml +186 -0
- package/libs/instance-factories/applications/templates/generic/backend-env-generator.ts +31 -0
- package/libs/instance-factories/applications/templates/generic/backend-package-json-generator.ts +80 -0
- package/libs/instance-factories/applications/templates/generic/backend-tsconfig-generator.ts +69 -0
- package/libs/instance-factories/applications/templates/generic/main-generator.ts +308 -0
- package/libs/instance-factories/applications/templates/react/_view-components-source.ts +555 -0
- package/libs/instance-factories/applications/templates/react/api-client-generator.ts +436 -0
- package/libs/instance-factories/applications/templates/react/api-types-generator.ts +153 -0
- package/libs/instance-factories/applications/templates/react/app-tsx-generator.ts +94 -0
- package/libs/instance-factories/applications/templates/react/env-example-generator.ts +24 -0
- package/libs/instance-factories/applications/templates/react/field-helpers-generator.ts +106 -0
- package/libs/instance-factories/applications/templates/react/gitignore-generator.ts +38 -0
- package/libs/instance-factories/applications/templates/react/index-css-generator.ts +85 -0
- package/libs/instance-factories/applications/templates/react/index-html-generator.ts +30 -0
- package/libs/instance-factories/applications/templates/react/main-tsx-generator.ts +34 -0
- package/libs/instance-factories/applications/templates/react/package-json-generator.ts +54 -0
- package/libs/instance-factories/applications/templates/react/pattern-adapter-generator.ts +179 -0
- package/libs/instance-factories/applications/templates/react/react-pattern-adapter.tsx +1347 -0
- package/libs/instance-factories/applications/templates/react/relationship-field-generator.ts +150 -0
- package/libs/instance-factories/applications/templates/react/tailwind-adapter-generator.ts +704 -0
- package/libs/instance-factories/applications/templates/react/tailwind-adapter-wrapper-generator.ts +84 -0
- package/libs/instance-factories/applications/templates/react/tsconfig-generator.ts +35 -0
- package/libs/instance-factories/applications/templates/react/use-api-hooks-generator.ts +121 -0
- package/libs/instance-factories/applications/templates/react/view-dashboard-generator.ts +150 -0
- package/libs/instance-factories/applications/templates/react/view-detail-generator.ts +150 -0
- package/libs/instance-factories/applications/templates/react/view-form-generator.ts +362 -0
- package/libs/instance-factories/applications/templates/react/view-list-generator.ts +98 -0
- package/libs/instance-factories/applications/templates/react/view-router-generator.ts +89 -0
- package/libs/instance-factories/applications/templates/react/vite-config-generator.ts +49 -0
- package/libs/instance-factories/archived/fastify-prisma.yaml +104 -0
- package/libs/instance-factories/cli/commander-js.yaml +55 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.d.ts +12 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.d.ts.map +1 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.js +115 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.js.map +1 -0
- package/libs/instance-factories/cli/templates/commander/cli-entry-generator.ts +145 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.d.ts +14 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.d.ts.map +1 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.js +182 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.js.map +1 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.ts +992 -0
- package/libs/instance-factories/communication/event-emitter.yaml +56 -0
- package/libs/instance-factories/communication/rabbitmq-events.yaml +87 -0
- package/libs/instance-factories/communication/templates/eventemitter/bus-generator.ts +93 -0
- package/libs/instance-factories/communication/templates/eventemitter/publisher-generator.ts +117 -0
- package/libs/instance-factories/communication/templates/eventemitter/subscriber-generator.ts +101 -0
- package/libs/instance-factories/controllers/fastify.yaml +127 -0
- package/libs/instance-factories/controllers/templates/fastify/meta-routes-generator.ts +103 -0
- package/libs/instance-factories/controllers/templates/fastify/routes-generator.ts +389 -0
- package/libs/instance-factories/controllers/templates/fastify/server-generator.ts +76 -0
- package/libs/instance-factories/infrastructure/docker-k8s.yaml +61 -0
- package/libs/instance-factories/infrastructure/templates/docker-k8s/infrastructure-generator.ts +46 -0
- package/libs/instance-factories/orms/prisma.yaml +89 -0
- package/libs/instance-factories/orms/templates/prisma/schema-generator.ts +563 -0
- package/libs/instance-factories/orms/templates/prisma/services-generator.ts +408 -0
- package/libs/instance-factories/scaffolding/generic-scaffold.yaml +65 -0
- package/libs/instance-factories/scaffolding/templates/generic/env-example-generator.ts +73 -0
- package/libs/instance-factories/scaffolding/templates/generic/env-generator.ts +85 -0
- package/libs/instance-factories/scaffolding/templates/generic/gitignore-generator.ts +69 -0
- package/libs/instance-factories/scaffolding/templates/generic/package-json-generator.ts +176 -0
- package/libs/instance-factories/scaffolding/templates/generic/readme-generator.ts +207 -0
- package/libs/instance-factories/scaffolding/templates/generic/tsconfig-generator.ts +78 -0
- package/libs/instance-factories/scaffolding/templates/generic/tsconfig-react-generator.ts +41 -0
- package/libs/instance-factories/sdks/python-sdk.yaml +66 -0
- package/libs/instance-factories/sdks/templates/python/sdk-generator.ts +50 -0
- package/libs/instance-factories/sdks/templates/typescript/sdk-generator.ts +49 -0
- package/libs/instance-factories/sdks/typescript-sdk.yaml +59 -0
- package/libs/instance-factories/services/prisma-services.yaml +71 -0
- package/libs/instance-factories/services/templates/prisma/behavior-generator.ts +303 -0
- package/libs/instance-factories/services/templates/prisma/controller-generator.ts +532 -0
- package/libs/instance-factories/services/templates/prisma/service-generator.ts +315 -0
- package/libs/instance-factories/shared/path-resolver.ts +111 -0
- package/libs/instance-factories/storage/mongodb.yaml +79 -0
- package/libs/instance-factories/storage/postgresql.yaml +75 -0
- package/libs/instance-factories/storage/redis.yaml +79 -0
- package/libs/instance-factories/storage/templates/mongodb/config-generator.ts +15 -0
- package/libs/instance-factories/storage/templates/mongodb/docker-generator.ts +18 -0
- package/libs/instance-factories/storage/templates/postgresql/config-generator.ts +54 -0
- package/libs/instance-factories/storage/templates/postgresql/docker-generator.ts +55 -0
- package/libs/instance-factories/storage/templates/redis/config-generator.ts +16 -0
- package/libs/instance-factories/storage/templates/redis/docker-generator.ts +18 -0
- package/libs/instance-factories/test-generation.ts +192 -0
- package/libs/instance-factories/testing/templates/vitest/tests-generator.ts +51 -0
- package/libs/instance-factories/testing/vitest-tests.yaml +63 -0
- package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +136 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/DEPLOYMENT_GUIDE.md +630 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/HYBRID_RESOURCE_SYSTEM.md +330 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/EXTENSION_DEPLOYMENT.md +552 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/LOCAL_DEPLOYMENT.md +164 -0
- package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/WEB_DEPLOYMENT.md +247 -0
- package/libs/instance-factories/tools/templates/mcp/static/package.json +92 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/build-enterprise.js +284 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/build-extension.js +139 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/build-local.js +74 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/build-web.js +156 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/copy-canonical-files.js +41 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/test-deployments.js +259 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-resources.js +231 -0
- package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-simple.js +196 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/controllers/MCPServerController.ts +293 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/events/EventEmitter.ts +90 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/index.ts +24 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/interfaces/ResourceProvider.ts +15 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/models/LibrarySuggestion.ts +106 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/models/SpecVerseResource.ts +75 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/server/mcp-server.ts +239 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/CLIProxyService.ts +1501 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/EmbeddedResourcesAdapter.ts +211 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/EntityModuleService.ts +308 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/HybridResourcesProvider.ts +210 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/LibraryToolsService.ts +356 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorBridge.ts +524 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorToolsService.ts +530 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/PromptToolsService.ts +594 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/services/ResourcesProviderService.ts +170 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.init.test.ts +544 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.test.ts +189 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/ResourcesProviderService.test.ts +89 -0
- package/libs/instance-factories/tools/templates/mcp/static/src/types/index.ts +110 -0
- package/libs/instance-factories/tools/templates/mcp/static/tsconfig.json +28 -0
- package/libs/instance-factories/tools/templates/vscode/static/extension.ts +1195 -0
- package/libs/instance-factories/tools/templates/vscode/static/language-configuration.json +34 -0
- package/libs/instance-factories/tools/templates/vscode/static/schemas/specverse-v3-schema.json +4279 -0
- package/libs/instance-factories/tools/templates/vscode/static/syntaxes/specverse.tmLanguage.json +138 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/README.md +74 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/complete-specverse-colors.json +122 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-basic-theme.json +65 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-complete-theme.json +123 -0
- package/libs/instance-factories/tools/templates/vscode/static/themes/specverse-theme-colors.json +64 -0
- package/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.ts +214 -0
- package/libs/instance-factories/validation/templates/zod/validation-generator.ts +46 -0
- package/libs/instance-factories/validation/zod.yaml +56 -0
- package/libs/instance-factories/views/index.d.ts +13 -0
- package/libs/instance-factories/views/index.d.ts.map +1 -0
- package/libs/instance-factories/views/index.js +18 -0
- package/libs/instance-factories/views/index.js.map +1 -0
- package/libs/instance-factories/views/index.ts +45 -0
- package/libs/instance-factories/views/react-components.yaml +129 -0
- package/libs/instance-factories/views/templates/ARCHITECTURE.md +198 -0
- package/libs/instance-factories/views/templates/react/adapters/antd-adapter.ts +869 -0
- package/libs/instance-factories/views/templates/react/adapters/mui-adapter.ts +953 -0
- package/libs/instance-factories/views/templates/react/adapters/shadcn-adapter.ts +806 -0
- package/libs/instance-factories/views/templates/react/app-generator.ts +55 -0
- package/libs/instance-factories/views/templates/react/components-generator.ts +391 -0
- package/libs/instance-factories/views/templates/react/forms-generator.ts +343 -0
- package/libs/instance-factories/views/templates/react/frontend-package-json-generator.ts +54 -0
- package/libs/instance-factories/views/templates/react/hooks-generator.ts +122 -0
- package/libs/instance-factories/views/templates/react/index-css-generator.ts +209 -0
- package/libs/instance-factories/views/templates/react/index-html-generator.ts +34 -0
- package/libs/instance-factories/views/templates/react/main-tsx-generator.ts +29 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.d.ts +152 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.js +398 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.js.map +1 -0
- package/libs/instance-factories/views/templates/react/react-component-generator.ts +533 -0
- package/libs/instance-factories/views/templates/react/router-generator.ts +197 -0
- package/libs/instance-factories/views/templates/react/router-generic-generator.ts +103 -0
- package/libs/instance-factories/views/templates/react/spec-json-generator.ts +17 -0
- package/libs/instance-factories/views/templates/react/types-generator.ts +76 -0
- package/libs/instance-factories/views/templates/react/views-metadata-generator.ts +42 -0
- package/libs/instance-factories/views/templates/react/vite-config-generator.ts +38 -0
- package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.js.map +1 -0
- package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.ts +474 -0
- package/libs/instance-factories/views/templates/shared/__tests__/composite-patterns.test.ts +242 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.d.ts +77 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.js +47 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/adapter-types.ts +142 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts +63 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.js +822 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.ts +908 -0
- package/libs/instance-factories/views/templates/shared/base-generator.d.ts +247 -0
- package/libs/instance-factories/views/templates/shared/base-generator.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/base-generator.js +363 -0
- package/libs/instance-factories/views/templates/shared/base-generator.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/base-generator.ts +608 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.d.ts +254 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.js +602 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/component-metadata.ts +803 -0
- package/libs/instance-factories/views/templates/shared/composite-pattern-types.ts +250 -0
- package/libs/instance-factories/views/templates/shared/composite-patterns.ts +535 -0
- package/libs/instance-factories/views/templates/shared/index.ts +68 -0
- package/libs/instance-factories/views/templates/shared/pattern-validator.ts +279 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.d.ts +149 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.js +580 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/property-mapper.ts +700 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts +143 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts.map +1 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.js +420 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.js.map +1 -0
- package/libs/instance-factories/views/templates/shared/syntax-mapper.ts +539 -0
- package/package.json +42 -0
- package/schema/SPECVERSE-SCHEMA.json +4274 -0
|
@@ -0,0 +1,326 @@
|
|
|
1
|
+
# Docker Compose Implementation Manifest
|
|
2
|
+
|
|
3
|
+
This example demonstrates how to implement the basic web application deployment specification (from `06-01-basic-deployment-intro.specly`) using **Docker Compose** for local development and staging environments.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The **DockerComposeDeploymentManifest** shows how to translate logical deployment specifications into a **complete Docker Compose stack** with:
|
|
8
|
+
- **Container orchestration** for multi-service applications
|
|
9
|
+
- **Development-friendly** configurations with hot reloading
|
|
10
|
+
- **Production-ready** features like health checks and monitoring
|
|
11
|
+
|
|
12
|
+
## Key Implementation Mappings
|
|
13
|
+
|
|
14
|
+
### Components → Docker Services
|
|
15
|
+
|
|
16
|
+
| SpecVerse Component | Docker Service | Technology Stack |
|
|
17
|
+
|-------------------|----------------|-----------------|
|
|
18
|
+
| `WebApplication` | `web` service | nginx + custom app |
|
|
19
|
+
| `Database` | `database` service | PostgreSQL 15 |
|
|
20
|
+
| `Environment` | Network + volumes | Docker Compose |
|
|
21
|
+
| Caching | `cache` service | Redis 7 |
|
|
22
|
+
| Load Balancing | `proxy` service | nginx reverse proxy |
|
|
23
|
+
| Monitoring | `monitoring` service | Prometheus |
|
|
24
|
+
|
|
25
|
+
### Container Architecture
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
┌─────────────────┐ ┌─────────────────┐
|
|
29
|
+
│ Reverse Proxy │────│ Web App │
|
|
30
|
+
│ (nginx:alpine)│ │ (nginx:alpine)│
|
|
31
|
+
│ Port: 80,443 │ │ Port: 8080 │
|
|
32
|
+
└─────────────────┘ └─────────────────┘
|
|
33
|
+
│
|
|
34
|
+
┌─────────────────────┼─────────────────────┐
|
|
35
|
+
│ │ │
|
|
36
|
+
┌───────▼─────────┐ ┌────────▼────────┐ ┌─────────▼─────────┐
|
|
37
|
+
│ Database │ │ Cache │ │ Monitoring │
|
|
38
|
+
│ (postgres:15) │ │ (redis:7) │ │ (prometheus) │
|
|
39
|
+
│ Port: 5432 │ │ Port: 6379 │ │ Port: 9090 │
|
|
40
|
+
└─────────────────┘ └─────────────────┘ └───────────────────┘
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Implementation Features
|
|
44
|
+
|
|
45
|
+
### 🔄 **Development Workflow**
|
|
46
|
+
- **Hot Reloading**: Bind mounts for real-time code changes
|
|
47
|
+
- **Database Persistence**: Named volumes for data retention
|
|
48
|
+
- **Environment Variables**: `.env` file for configuration
|
|
49
|
+
- **Log Aggregation**: Centralized logging with Docker logs
|
|
50
|
+
|
|
51
|
+
### 🏗️ **Production Features**
|
|
52
|
+
- **Health Checks**: All services include proper health monitoring
|
|
53
|
+
- **Restart Policies**: Automatic recovery from failures
|
|
54
|
+
- **Resource Limits**: Memory and CPU constraints (via Docker limits)
|
|
55
|
+
- **Security**: Non-root users and network isolation
|
|
56
|
+
|
|
57
|
+
### 📊 **Observability Stack**
|
|
58
|
+
- **Prometheus**: Metrics collection from all services
|
|
59
|
+
- **Health Endpoints**: `/health` checks for service status
|
|
60
|
+
- **Centralized Logs**: Docker log drivers for aggregation
|
|
61
|
+
- **Network Monitoring**: Container-to-container communication tracking
|
|
62
|
+
|
|
63
|
+
## Generated Docker Compose File
|
|
64
|
+
|
|
65
|
+
When implemented, this manifest generates a complete `docker-compose.yml`:
|
|
66
|
+
|
|
67
|
+
```yaml
|
|
68
|
+
version: '3.8'
|
|
69
|
+
|
|
70
|
+
services:
|
|
71
|
+
web:
|
|
72
|
+
image: nginx:alpine
|
|
73
|
+
build:
|
|
74
|
+
context: ./web
|
|
75
|
+
dockerfile: Dockerfile
|
|
76
|
+
ports:
|
|
77
|
+
- "8080:80"
|
|
78
|
+
environment:
|
|
79
|
+
- NODE_ENV=development
|
|
80
|
+
- DATABASE_URL=postgresql://user:password@database:5432/webapp
|
|
81
|
+
- REDIS_URL=redis://cache:6379
|
|
82
|
+
volumes:
|
|
83
|
+
- ./app:/var/www/html
|
|
84
|
+
- ./logs:/var/log/nginx
|
|
85
|
+
depends_on:
|
|
86
|
+
- database
|
|
87
|
+
- cache
|
|
88
|
+
restart: unless-stopped
|
|
89
|
+
healthcheck:
|
|
90
|
+
test: ["CMD", "curl", "-f", "http://localhost/health"]
|
|
91
|
+
interval: 30s
|
|
92
|
+
timeout: 10s
|
|
93
|
+
retries: 3
|
|
94
|
+
networks:
|
|
95
|
+
- webapp-network
|
|
96
|
+
|
|
97
|
+
database:
|
|
98
|
+
image: postgres:15-alpine
|
|
99
|
+
environment:
|
|
100
|
+
- POSTGRES_DB=webapp
|
|
101
|
+
- POSTGRES_USER=user
|
|
102
|
+
- POSTGRES_PASSWORD=password
|
|
103
|
+
volumes:
|
|
104
|
+
- postgres_data:/var/lib/postgresql/data
|
|
105
|
+
- ./db/init:/docker-entrypoint-initdb.d
|
|
106
|
+
ports:
|
|
107
|
+
- "5432:5432"
|
|
108
|
+
restart: unless-stopped
|
|
109
|
+
healthcheck:
|
|
110
|
+
test: ["CMD-SHELL", "pg_isready -U user -d webapp"]
|
|
111
|
+
interval: 10s
|
|
112
|
+
timeout: 5s
|
|
113
|
+
retries: 5
|
|
114
|
+
networks:
|
|
115
|
+
- webapp-network
|
|
116
|
+
|
|
117
|
+
cache:
|
|
118
|
+
image: redis:7-alpine
|
|
119
|
+
command: redis-server --appendonly yes
|
|
120
|
+
volumes:
|
|
121
|
+
- redis_data:/data
|
|
122
|
+
- ./redis/redis.conf:/usr/local/etc/redis/redis.conf
|
|
123
|
+
ports:
|
|
124
|
+
- "6379:6379"
|
|
125
|
+
restart: unless-stopped
|
|
126
|
+
healthcheck:
|
|
127
|
+
test: ["CMD", "redis-cli", "ping"]
|
|
128
|
+
interval: 30s
|
|
129
|
+
timeout: 3s
|
|
130
|
+
retries: 3
|
|
131
|
+
networks:
|
|
132
|
+
- webapp-network
|
|
133
|
+
|
|
134
|
+
networks:
|
|
135
|
+
webapp-network:
|
|
136
|
+
driver: bridge
|
|
137
|
+
ipam:
|
|
138
|
+
config:
|
|
139
|
+
- subnet: 172.20.0.0/16
|
|
140
|
+
|
|
141
|
+
volumes:
|
|
142
|
+
postgres_data:
|
|
143
|
+
driver: local
|
|
144
|
+
redis_data:
|
|
145
|
+
driver: local
|
|
146
|
+
prometheus_data:
|
|
147
|
+
driver: local
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Development vs Production Configuration
|
|
151
|
+
|
|
152
|
+
### Development Mode
|
|
153
|
+
- **Bind Mounts**: Live code editing with `./app:/var/www/html`
|
|
154
|
+
- **Port Exposure**: Direct access to all services for debugging
|
|
155
|
+
- **Environment Files**: Easy configuration with `.env`
|
|
156
|
+
- **Hot Reloading**: Automatic application restarts on code changes
|
|
157
|
+
|
|
158
|
+
### Production Mode
|
|
159
|
+
- **Multi-Stage Builds**: Optimized container images
|
|
160
|
+
- **Secrets Management**: External secret injection
|
|
161
|
+
- **Reverse Proxy**: nginx for SSL termination and caching
|
|
162
|
+
- **Monitoring**: Prometheus metrics and alerting
|
|
163
|
+
|
|
164
|
+
## AI Implementation Guidance
|
|
165
|
+
|
|
166
|
+
The manifest includes **specific instructions** for:
|
|
167
|
+
- **Environment Management**: Proper use of .env files and secrets
|
|
168
|
+
- **Volume Strategy**: Named volumes vs bind mounts
|
|
169
|
+
- **Network Security**: Custom networks and service isolation
|
|
170
|
+
- **Health Monitoring**: Comprehensive health check implementation
|
|
171
|
+
- **Backup Procedures**: Database and volume backup strategies
|
|
172
|
+
|
|
173
|
+
## Usage Workflow
|
|
174
|
+
|
|
175
|
+
1. **Development Setup**:
|
|
176
|
+
```bash
|
|
177
|
+
# Clone repository
|
|
178
|
+
git clone <repo>
|
|
179
|
+
cd project
|
|
180
|
+
|
|
181
|
+
# Configure environment
|
|
182
|
+
cp .env.example .env
|
|
183
|
+
|
|
184
|
+
# Start development stack
|
|
185
|
+
docker-compose up -d
|
|
186
|
+
|
|
187
|
+
# View logs
|
|
188
|
+
docker-compose logs -f web
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
2. **Production Deployment**:
|
|
192
|
+
```bash
|
|
193
|
+
# Build production images
|
|
194
|
+
docker-compose -f docker-compose.prod.yml build
|
|
195
|
+
|
|
196
|
+
# Deploy with production config
|
|
197
|
+
docker-compose -f docker-compose.prod.yml up -d
|
|
198
|
+
|
|
199
|
+
# Monitor health
|
|
200
|
+
docker-compose ps
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
3. **Scaling Services**:
|
|
204
|
+
```bash
|
|
205
|
+
# Scale web service
|
|
206
|
+
docker-compose up --scale web=3 -d
|
|
207
|
+
|
|
208
|
+
# Scale with load balancer
|
|
209
|
+
docker-compose up --scale web=3 --scale proxy=1 -d
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
This implementation shows how SpecVerse **manifests provide practical deployment guidance**, enabling teams to move from logical specifications to working containerized applications with minimal configuration overhead.
|
|
213
|
+
|
|
214
|
+
## Diagrams
|
|
215
|
+
|
|
216
|
+
<div className="diagram-generated">
|
|
217
|
+
|
|
218
|
+
### Technology Stack
|
|
219
|
+
|
|
220
|
+
<Mermaid chart={`
|
|
221
|
+
graph TB
|
|
222
|
+
%% Manifest Mapping
|
|
223
|
+
|
|
224
|
+
subgraph database_layer["🗄️ DATABASE"]
|
|
225
|
+
direction LR
|
|
226
|
+
tech_postgresql_docker("postgresql<br>docker<br>vlatest")
|
|
227
|
+
tech_redis_docker("redis<br>docker<br>vlatest")
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
subgraph infrastructure_layer["🏗️ INFRASTRUCTURE"]
|
|
231
|
+
direction LR
|
|
232
|
+
tech_docker_compose("docker<br>compose<br>vlatest")
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
subgraph other_layer["📦 OTHER"]
|
|
236
|
+
direction LR
|
|
237
|
+
tech_nginx_docker("nginx<br>docker<br>vlatest")
|
|
238
|
+
tech_prometheus_docker("prometheus<br>docker<br>vlatest")
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
style tech_postgresql_docker fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#000
|
|
243
|
+
style tech_redis_docker fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#000
|
|
244
|
+
style tech_docker_compose fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
245
|
+
style tech_nginx_docker fill:#F5F5F5,stroke:#333,stroke-width:2px,color:#000
|
|
246
|
+
style tech_prometheus_docker fill:#F5F5F5,stroke:#333,stroke-width:2px,color:#000
|
|
247
|
+
`}/>
|
|
248
|
+
|
|
249
|
+
### Capability Bindings
|
|
250
|
+
|
|
251
|
+
<Mermaid chart={`
|
|
252
|
+
graph LR
|
|
253
|
+
%% Manifest Mapping
|
|
254
|
+
|
|
255
|
+
subgraph capabilities_layer["🎯 CAPABILITIES"]
|
|
256
|
+
direction TB
|
|
257
|
+
cap_0{{"web.*<br>(1 impl)"}}
|
|
258
|
+
cap_1{{"database.*<br>(1 impl)"}}
|
|
259
|
+
cap_2{{"cache.*<br>(1 impl)"}}
|
|
260
|
+
cap_3{{"proxy.*<br>(1 impl)"}}
|
|
261
|
+
cap_4{{"monitoring.*<br>(1 impl)"}}
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
impl_DockerComposeDeploymentManifest_DockerWebApplication("DockerComposeDeploymentManifest.DockerWebApplication")
|
|
265
|
+
impl_DockerComposeDeploymentManifest_DockerDatabase("DockerComposeDeploymentManifest.DockerDatabase")
|
|
266
|
+
impl_DockerComposeDeploymentManifest_DockerCache("DockerComposeDeploymentManifest.DockerCache")
|
|
267
|
+
impl_DockerComposeDeploymentManifest_DockerReverseProxy("DockerComposeDeploymentManifest.DockerReverseProxy")
|
|
268
|
+
impl_DockerComposeDeploymentManifest_DockerMonitoring("DockerComposeDeploymentManifest.DockerMonitoring")
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
%% Relationships
|
|
272
|
+
cap_0 -->|"binds to"| impl_DockerComposeDeploymentManifest_DockerWebApplication
|
|
273
|
+
cap_1 -->|"binds to"| impl_DockerComposeDeploymentManifest_DockerDatabase
|
|
274
|
+
cap_2 -->|"binds to"| impl_DockerComposeDeploymentManifest_DockerCache
|
|
275
|
+
cap_3 -->|"binds to"| impl_DockerComposeDeploymentManifest_DockerReverseProxy
|
|
276
|
+
cap_4 -->|"binds to"| impl_DockerComposeDeploymentManifest_DockerMonitoring
|
|
277
|
+
|
|
278
|
+
style cap_0 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
|
|
279
|
+
style impl_DockerComposeDeploymentManifest_DockerWebApplication fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
280
|
+
style cap_1 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
|
|
281
|
+
style impl_DockerComposeDeploymentManifest_DockerDatabase fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
282
|
+
style cap_2 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
|
|
283
|
+
style impl_DockerComposeDeploymentManifest_DockerCache fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
284
|
+
style cap_3 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
|
|
285
|
+
style impl_DockerComposeDeploymentManifest_DockerReverseProxy fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
286
|
+
style cap_4 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
|
|
287
|
+
style impl_DockerComposeDeploymentManifest_DockerMonitoring fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
288
|
+
`}/>
|
|
289
|
+
|
|
290
|
+
### Manifest Mapping
|
|
291
|
+
|
|
292
|
+
<Mermaid chart={`
|
|
293
|
+
graph LR
|
|
294
|
+
%% Manifest Mapping
|
|
295
|
+
|
|
296
|
+
subgraph manifests_layer["📋 MANIFESTS (Implementation Mapping)"]
|
|
297
|
+
direction TB
|
|
298
|
+
manifest_DockerComposeDeploymentManifest{{"DockerComposeDeploymentManifest<br>v1.0.0<br>Types: 5 | Behaviors: 3"}}
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
subgraph implementation_layer["🔧 IMPLEMENTATION (Technology)"]
|
|
302
|
+
direction TB
|
|
303
|
+
impl_DockerComposeDeploymentManifest_DockerWebApplication("DockerWebApplication<br>docker / compose")
|
|
304
|
+
impl_DockerComposeDeploymentManifest_DockerDatabase("DockerDatabase<br>postgresql / docker")
|
|
305
|
+
impl_DockerComposeDeploymentManifest_DockerCache("DockerCache<br>redis / docker")
|
|
306
|
+
impl_DockerComposeDeploymentManifest_DockerReverseProxy("DockerReverseProxy<br>nginx / docker")
|
|
307
|
+
impl_DockerComposeDeploymentManifest_DockerMonitoring("DockerMonitoring<br>prometheus / docker")
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
%% Relationships
|
|
312
|
+
manifest_DockerComposeDeploymentManifest -->|"implements"| impl_DockerComposeDeploymentManifest_DockerWebApplication
|
|
313
|
+
manifest_DockerComposeDeploymentManifest -->|"implements"| impl_DockerComposeDeploymentManifest_DockerDatabase
|
|
314
|
+
manifest_DockerComposeDeploymentManifest -->|"implements"| impl_DockerComposeDeploymentManifest_DockerCache
|
|
315
|
+
manifest_DockerComposeDeploymentManifest -->|"implements"| impl_DockerComposeDeploymentManifest_DockerReverseProxy
|
|
316
|
+
manifest_DockerComposeDeploymentManifest -->|"implements"| impl_DockerComposeDeploymentManifest_DockerMonitoring
|
|
317
|
+
|
|
318
|
+
style manifest_DockerComposeDeploymentManifest fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
319
|
+
style impl_DockerComposeDeploymentManifest_DockerWebApplication fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
320
|
+
style impl_DockerComposeDeploymentManifest_DockerDatabase fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
321
|
+
style impl_DockerComposeDeploymentManifest_DockerCache fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
322
|
+
style impl_DockerComposeDeploymentManifest_DockerReverseProxy fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
323
|
+
style impl_DockerComposeDeploymentManifest_DockerMonitoring fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
324
|
+
`}/>
|
|
325
|
+
|
|
326
|
+
</div>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
manifests:
|
|
2
|
+
DockerComposeDeploymentManifest:
|
|
3
|
+
specVersion: "3.5.0"
|
|
4
|
+
name: "DockerComposeDeploymentManifest"
|
|
5
|
+
description: "Docker Compose implementation manifest for local and staging deployment"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
|
|
8
|
+
deployment:
|
|
9
|
+
deploymentSource: "./06-01-basic-deployment.specly"
|
|
10
|
+
deploymentName: "basicWebApplication"
|
|
11
|
+
|
|
12
|
+
defaultMappings:
|
|
13
|
+
controller: "DockerWebApplication"
|
|
14
|
+
storage: "DockerDatabase"
|
|
15
|
+
|
|
16
|
+
capabilityMappings:
|
|
17
|
+
- capability: "web.*"
|
|
18
|
+
instanceFactory: "DockerWebApplication"
|
|
19
|
+
|
|
20
|
+
- capability: "database.*"
|
|
21
|
+
instanceFactory: "DockerDatabase"
|
|
22
|
+
|
|
23
|
+
- capability: "cache.*"
|
|
24
|
+
instanceFactory: "DockerCache"
|
|
25
|
+
|
|
26
|
+
- capability: "proxy.*"
|
|
27
|
+
instanceFactory: "DockerReverseProxy"
|
|
28
|
+
|
|
29
|
+
- capability: "monitoring.*"
|
|
30
|
+
instanceFactory: "DockerMonitoring"
|
|
31
|
+
|
|
32
|
+
instanceMappings:
|
|
33
|
+
- instanceName: "webApplicationController"
|
|
34
|
+
instanceFactory: "DockerWebApplication"
|
|
35
|
+
|
|
36
|
+
- instanceName: "reverseProxyInstance"
|
|
37
|
+
instanceFactory: "DockerReverseProxy"
|
|
38
|
+
|
|
39
|
+
- instanceName: "prometheusInstance"
|
|
40
|
+
instanceFactory: "DockerMonitoring"
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
title: "Kubernetes Deployment Manifest"
|
|
2
|
+
description: "Kubernetes implementation manifest for basic web application deployment"
|
|
3
|
+
difficulty: intermediate
|
|
4
|
+
concepts: [manifests, kubernetes, deployment]
|
|
5
|
+
prerequisites: []
|
|
6
|
+
category: deploy
|
|
7
|
+
order: 3
|
|
8
|
+
companionFiles: [kubernetes-deployment-manifest.md]
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
# Kubernetes Deployment Implementation Manifest
|
|
2
|
+
|
|
3
|
+
This example demonstrates how to implement the basic web application deployment specification (from `06-01-basic-deployment-intro.specly`) using **Kubernetes** as the target platform.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The **KubernetesDeploymentManifest** shows how to bridge the gap between:
|
|
8
|
+
- **Logical deployment specification** (what you want to deploy)
|
|
9
|
+
- **Concrete Kubernetes implementation** (how to deploy it with specific K8s resources)
|
|
10
|
+
|
|
11
|
+
## Key Implementation Mappings
|
|
12
|
+
|
|
13
|
+
### Components → Kubernetes Resources
|
|
14
|
+
|
|
15
|
+
| SpecVerse Component | Kubernetes Resource | Technology Stack |
|
|
16
|
+
|-------------------|-------------------|-----------------|
|
|
17
|
+
| `WebApplication` | `Deployment` + `Service` | nginx + Kubernetes |
|
|
18
|
+
| `Database` | `Cluster` (CloudNativePG) | PostgreSQL + Operator |
|
|
19
|
+
| `Environment` | `Namespace` + `RBAC` | Kubernetes native |
|
|
20
|
+
| Load Balancing | `Ingress` | nginx-ingress + cert-manager |
|
|
21
|
+
|
|
22
|
+
### Logical Instances → K8s Workloads
|
|
23
|
+
|
|
24
|
+
- **Controllers** → `Deployment` with configurable replicas and resource limits
|
|
25
|
+
- **Storage** → `PostgreSQL Cluster` with persistent volumes and backup
|
|
26
|
+
- **Infrastructure** → `Service` + `Ingress` for networking and external access
|
|
27
|
+
- **Monitoring** → Ready for Prometheus integration
|
|
28
|
+
|
|
29
|
+
## Implementation Features
|
|
30
|
+
|
|
31
|
+
### 🚀 **Production-Ready Configuration**
|
|
32
|
+
- **Resource Management**: CPU/memory requests and limits
|
|
33
|
+
- **Health Checks**: Liveness and readiness probes
|
|
34
|
+
- **Auto-Scaling**: HorizontalPodAutoscaler configuration
|
|
35
|
+
- **Security**: NetworkPolicies and PodSecurityStandards
|
|
36
|
+
|
|
37
|
+
### 🔧 **Operator Integration**
|
|
38
|
+
- **CloudNativePG**: For PostgreSQL cluster management
|
|
39
|
+
- **cert-manager**: For automatic TLS certificate provisioning
|
|
40
|
+
- **nginx-ingress**: For advanced routing and load balancing
|
|
41
|
+
|
|
42
|
+
### 📊 **Observability**
|
|
43
|
+
- **Prometheus Metrics**: Built-in monitoring endpoints
|
|
44
|
+
- **Health Endpoints**: `/health` and `/ready` for proper lifecycle management
|
|
45
|
+
- **Structured Logging**: Container log aggregation ready
|
|
46
|
+
|
|
47
|
+
## Generated Kubernetes Manifests
|
|
48
|
+
|
|
49
|
+
When implemented, this manifest generates:
|
|
50
|
+
|
|
51
|
+
```yaml
|
|
52
|
+
# Web Application Deployment
|
|
53
|
+
apiVersion: apps/v1
|
|
54
|
+
kind: Deployment
|
|
55
|
+
metadata:
|
|
56
|
+
name: web-application
|
|
57
|
+
namespace: web
|
|
58
|
+
spec:
|
|
59
|
+
replicas: 1
|
|
60
|
+
selector:
|
|
61
|
+
matchLabels:
|
|
62
|
+
app: web-application
|
|
63
|
+
template:
|
|
64
|
+
spec:
|
|
65
|
+
containers:
|
|
66
|
+
- name: web
|
|
67
|
+
image: nginx:latest
|
|
68
|
+
ports:
|
|
69
|
+
- containerPort: 8080
|
|
70
|
+
resources:
|
|
71
|
+
requests:
|
|
72
|
+
memory: "64Mi"
|
|
73
|
+
cpu: "250m"
|
|
74
|
+
limits:
|
|
75
|
+
memory: "128Mi"
|
|
76
|
+
cpu: "500m"
|
|
77
|
+
livenessProbe:
|
|
78
|
+
httpGet:
|
|
79
|
+
path: /health
|
|
80
|
+
port: 8080
|
|
81
|
+
initialDelaySeconds: 30
|
|
82
|
+
periodSeconds: 10
|
|
83
|
+
readinessProbe:
|
|
84
|
+
httpGet:
|
|
85
|
+
path: /ready
|
|
86
|
+
port: 8080
|
|
87
|
+
initialDelaySeconds: 5
|
|
88
|
+
periodSeconds: 5
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
```yaml
|
|
92
|
+
# PostgreSQL Cluster
|
|
93
|
+
apiVersion: postgresql.cnpg.io/v1
|
|
94
|
+
kind: Cluster
|
|
95
|
+
metadata:
|
|
96
|
+
name: webapp-postgres
|
|
97
|
+
namespace: data
|
|
98
|
+
spec:
|
|
99
|
+
instances: 1
|
|
100
|
+
primaryUpdateStrategy: unsupervised
|
|
101
|
+
postgresql:
|
|
102
|
+
parameters:
|
|
103
|
+
max_connections: "200"
|
|
104
|
+
shared_buffers: "256MB"
|
|
105
|
+
storage:
|
|
106
|
+
size: 1Gi
|
|
107
|
+
storageClass: fast-ssd
|
|
108
|
+
monitoring:
|
|
109
|
+
enabled: true
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Namespace Organization
|
|
113
|
+
|
|
114
|
+
The manifest implements proper **namespace isolation**:
|
|
115
|
+
|
|
116
|
+
- **`web` namespace**: Frontend applications with resource quotas
|
|
117
|
+
- **`data` namespace**: Databases and persistent storage
|
|
118
|
+
- **Resource Quotas**: CPU and memory limits per namespace
|
|
119
|
+
- **Network Policies**: Secure inter-service communication
|
|
120
|
+
|
|
121
|
+
## AI Implementation Guidance
|
|
122
|
+
|
|
123
|
+
The manifest includes specific **AI instructions** for:
|
|
124
|
+
- Resource management best practices
|
|
125
|
+
- Security hardening with NetworkPolicies
|
|
126
|
+
- Monitoring and observability setup
|
|
127
|
+
- Scaling strategies for production workloads
|
|
128
|
+
- Configuration management with ConfigMaps/Secrets
|
|
129
|
+
|
|
130
|
+
## Usage
|
|
131
|
+
|
|
132
|
+
1. **Apply the specification**: Use SpecVerse CLI to process the logical deployment
|
|
133
|
+
2. **Generate manifests**: The manifest will produce Kubernetes YAML files
|
|
134
|
+
3. **Deploy to cluster**: Use `kubectl apply` or GitOps workflow
|
|
135
|
+
4. **Monitor deployment**: Leverage built-in health checks and metrics
|
|
136
|
+
|
|
137
|
+
This implementation demonstrates how SpecVerse **manifests bridge the architecture gap** between logical specifications and concrete infrastructure, enabling teams to maintain consistency across different deployment targets while leveraging platform-specific capabilities.
|
|
138
|
+
|
|
139
|
+
## Diagrams
|
|
140
|
+
|
|
141
|
+
<div className="diagram-generated">
|
|
142
|
+
|
|
143
|
+
### Technology Stack
|
|
144
|
+
|
|
145
|
+
<Mermaid chart={`
|
|
146
|
+
graph TB
|
|
147
|
+
%% Manifest Mapping
|
|
148
|
+
|
|
149
|
+
subgraph database_layer["🗄️ DATABASE"]
|
|
150
|
+
direction LR
|
|
151
|
+
tech_postgresql_kubernetes_operator("postgresql<br>kubernetes-operator<br>vlatest")
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
subgraph infrastructure_layer["🏗️ INFRASTRUCTURE"]
|
|
155
|
+
direction LR
|
|
156
|
+
tech_kubernetes_deployment("kubernetes<br>deployment<br>vlatest")
|
|
157
|
+
tech_kubernetes_service("kubernetes<br>service<br>vlatest")
|
|
158
|
+
tech_kubernetes_ingress_nginx("kubernetes<br>ingress-nginx<br>vlatest")
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
style tech_postgresql_kubernetes_operator fill:#e1f5fe,stroke:#01579b,stroke-width:2px,color:#000
|
|
163
|
+
style tech_kubernetes_deployment fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
164
|
+
style tech_kubernetes_service fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
165
|
+
style tech_kubernetes_ingress_nginx fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
166
|
+
`}/>
|
|
167
|
+
|
|
168
|
+
### Capability Bindings
|
|
169
|
+
|
|
170
|
+
<Mermaid chart={`
|
|
171
|
+
graph LR
|
|
172
|
+
%% Manifest Mapping
|
|
173
|
+
|
|
174
|
+
subgraph capabilities_layer["🎯 CAPABILITIES"]
|
|
175
|
+
direction TB
|
|
176
|
+
cap_0{{"web.*<br>(1 impl)"}}
|
|
177
|
+
cap_1{{"database.*<br>(1 impl)"}}
|
|
178
|
+
cap_2{{"networking.*<br>(1 impl)"}}
|
|
179
|
+
cap_3{{"routing.*<br>(1 impl)"}}
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
impl_KubernetesDeploymentManifest_KubernetesWebController("KubernetesDeploymentManifest.KubernetesWebController")
|
|
183
|
+
impl_KubernetesDeploymentManifest_KubernetesDatabase("KubernetesDeploymentManifest.KubernetesDatabase")
|
|
184
|
+
impl_KubernetesDeploymentManifest_KubernetesService("KubernetesDeploymentManifest.KubernetesService")
|
|
185
|
+
impl_KubernetesDeploymentManifest_KubernetesIngress("KubernetesDeploymentManifest.KubernetesIngress")
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
%% Relationships
|
|
189
|
+
cap_0 -->|"binds to"| impl_KubernetesDeploymentManifest_KubernetesWebController
|
|
190
|
+
cap_1 -->|"binds to"| impl_KubernetesDeploymentManifest_KubernetesDatabase
|
|
191
|
+
cap_2 -->|"binds to"| impl_KubernetesDeploymentManifest_KubernetesService
|
|
192
|
+
cap_3 -->|"binds to"| impl_KubernetesDeploymentManifest_KubernetesIngress
|
|
193
|
+
|
|
194
|
+
style cap_0 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
|
|
195
|
+
style impl_KubernetesDeploymentManifest_KubernetesWebController fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
196
|
+
style cap_1 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
|
|
197
|
+
style impl_KubernetesDeploymentManifest_KubernetesDatabase fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
198
|
+
style cap_2 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
|
|
199
|
+
style impl_KubernetesDeploymentManifest_KubernetesService fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
200
|
+
style cap_3 fill:#fff3e0,stroke:#e65100,stroke-width:2px,color:#000
|
|
201
|
+
style impl_KubernetesDeploymentManifest_KubernetesIngress fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
202
|
+
`}/>
|
|
203
|
+
|
|
204
|
+
### Manifest Mapping
|
|
205
|
+
|
|
206
|
+
<Mermaid chart={`
|
|
207
|
+
graph LR
|
|
208
|
+
%% Manifest Mapping
|
|
209
|
+
|
|
210
|
+
subgraph manifests_layer["📋 MANIFESTS (Implementation Mapping)"]
|
|
211
|
+
direction TB
|
|
212
|
+
manifest_KubernetesDeploymentManifest{{"KubernetesDeploymentManifest<br>v1.0.0<br>Types: 4 | Behaviors: 3"}}
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
subgraph implementation_layer["🔧 IMPLEMENTATION (Technology)"]
|
|
216
|
+
direction TB
|
|
217
|
+
impl_KubernetesDeploymentManifest_KubernetesWebController("KubernetesWebController<br>kubernetes / deployment")
|
|
218
|
+
impl_KubernetesDeploymentManifest_KubernetesDatabase("KubernetesDatabase<br>postgresql / kubernetes-operator")
|
|
219
|
+
impl_KubernetesDeploymentManifest_KubernetesService("KubernetesService<br>kubernetes / service")
|
|
220
|
+
impl_KubernetesDeploymentManifest_KubernetesIngress("KubernetesIngress<br>kubernetes / ingress-nginx")
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
%% Relationships
|
|
225
|
+
manifest_KubernetesDeploymentManifest -->|"implements"| impl_KubernetesDeploymentManifest_KubernetesWebController
|
|
226
|
+
manifest_KubernetesDeploymentManifest -->|"implements"| impl_KubernetesDeploymentManifest_KubernetesDatabase
|
|
227
|
+
manifest_KubernetesDeploymentManifest -->|"implements"| impl_KubernetesDeploymentManifest_KubernetesService
|
|
228
|
+
manifest_KubernetesDeploymentManifest -->|"implements"| impl_KubernetesDeploymentManifest_KubernetesIngress
|
|
229
|
+
|
|
230
|
+
style manifest_KubernetesDeploymentManifest fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
231
|
+
style impl_KubernetesDeploymentManifest_KubernetesWebController fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
232
|
+
style impl_KubernetesDeploymentManifest_KubernetesDatabase fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
233
|
+
style impl_KubernetesDeploymentManifest_KubernetesService fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
234
|
+
style impl_KubernetesDeploymentManifest_KubernetesIngress fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px,color:#000
|
|
235
|
+
`}/>
|
|
236
|
+
|
|
237
|
+
</div>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
manifests:
|
|
2
|
+
KubernetesDeploymentManifest:
|
|
3
|
+
specVersion: "3.5.0"
|
|
4
|
+
name: "KubernetesDeploymentManifest"
|
|
5
|
+
description: "Kubernetes implementation manifest for basic web application deployment"
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
|
|
8
|
+
deployment:
|
|
9
|
+
deploymentSource: "./06-01-basic-deployment.specly"
|
|
10
|
+
deploymentName: "basicWebApplication"
|
|
11
|
+
|
|
12
|
+
defaultMappings:
|
|
13
|
+
controller: "KubernetesWebController"
|
|
14
|
+
storage: "KubernetesDatabase"
|
|
15
|
+
service: "KubernetesService"
|
|
16
|
+
|
|
17
|
+
capabilityMappings:
|
|
18
|
+
- capability: "web.*"
|
|
19
|
+
instanceFactory: "KubernetesWebController"
|
|
20
|
+
|
|
21
|
+
- capability: "database.*"
|
|
22
|
+
instanceFactory: "KubernetesDatabase"
|
|
23
|
+
|
|
24
|
+
- capability: "networking.*"
|
|
25
|
+
instanceFactory: "KubernetesService"
|
|
26
|
+
|
|
27
|
+
- capability: "routing.*"
|
|
28
|
+
instanceFactory: "KubernetesIngress"
|
|
29
|
+
|
|
30
|
+
instanceMappings:
|
|
31
|
+
- instanceName: "webApplicationController"
|
|
32
|
+
instanceFactory: "KubernetesWebController"
|
|
33
|
+
|
|
34
|
+
- instanceName: "databaseInstance"
|
|
35
|
+
instanceFactory: "KubernetesDatabase"
|
|
36
|
+
|
|
37
|
+
- instanceName: "webService"
|
|
38
|
+
instanceFactory: "KubernetesService"
|
|
39
|
+
|
|
40
|
+
- instanceName: "webIngress"
|
|
41
|
+
instanceFactory: "KubernetesIngress"
|