@wneng/create-keel 0.1.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/LICENSE +21 -0
- package/README.md +21 -0
- package/dist/index.js +1479 -0
- package/dist/index.js.map +1 -0
- package/package.json +55 -0
- package/src/templates/.gitkeep +0 -0
- package/src/templates/agent-rust-desktop/files/Cargo.toml +12 -0
- package/src/templates/agent-rust-desktop/files/README.md +16 -0
- package/src/templates/agent-rust-desktop/files/generated-gitkeep +0 -0
- package/src/templates/agent-rust-desktop/files/main.rs +24 -0
- package/src/templates/agent-rust-desktop/fragment.yaml +18 -0
- package/src/templates/ai-claude-code/files/CLAUDE.md +19 -0
- package/src/templates/ai-claude-code/files/commands-README.md +7 -0
- package/src/templates/ai-claude-code/fragment.yaml +12 -0
- package/src/templates/ai-codex/files/project.md +11 -0
- package/src/templates/ai-codex/files/prompts-README.md +7 -0
- package/src/templates/ai-codex/fragment.yaml +12 -0
- package/src/templates/ai-cursor/files/rules-README.md +6 -0
- package/src/templates/ai-cursor/files/rules-project.md +15 -0
- package/src/templates/ai-cursor/fragment.yaml +12 -0
- package/src/templates/ai-kiro/files/prompts-README.md +5 -0
- package/src/templates/ai-kiro/files/specs-gitkeep +0 -0
- package/src/templates/ai-kiro/files/steering-README.md +5 -0
- package/src/templates/ai-kiro/files/steering-project.md +9 -0
- package/src/templates/ai-kiro/fragment.yaml +18 -0
- package/src/templates/ci-gitee/files/pipeline.yml +18 -0
- package/src/templates/ci-gitee/fragment.yaml +9 -0
- package/src/templates/ci-github/files/ci.yml +17 -0
- package/src/templates/ci-github/fragment.yaml +9 -0
- package/src/templates/contracts-base/files/CHANGELOG.md +10 -0
- package/src/templates/contracts-base/files/README.md +75 -0
- package/src/templates/contracts-base/files/_ai-policy.yaml +20 -0
- package/src/templates/contracts-base/files/dictionaries/domain-models.yaml +3 -0
- package/src/templates/contracts-base/files/dictionaries/enums.yaml +3 -0
- package/src/templates/contracts-base/files/environment/.env.example +3 -0
- package/src/templates/contracts-base/files/environment/env.schema.json +10 -0
- package/src/templates/contracts-base/files/errors/error-codes.yaml +6 -0
- package/src/templates/contracts-base/files/errors/error-response.schema.json +13 -0
- package/src/templates/contracts-base/files/events-gitkeep +0 -0
- package/src/templates/contracts-base/files/resources-examples-gitkeep +0 -0
- package/src/templates/contracts-base/files/resources-mocks-gitkeep +0 -0
- package/src/templates/contracts-base/files/states-gitkeep +0 -0
- package/src/templates/contracts-base/files/tests-acceptance-gitkeep +0 -0
- package/src/templates/contracts-base/files/tests-contracts-gitkeep +0 -0
- package/src/templates/contracts-base/files/tests-postman-gitkeep +0 -0
- package/src/templates/contracts-base/fragment.yaml +53 -0
- package/src/templates/contracts-events/files/asyncapi.yaml +8 -0
- package/src/templates/contracts-events/fragment.yaml +9 -0
- package/src/templates/contracts-rest/files/api.yaml +7 -0
- package/src/templates/contracts-rest/fragment.yaml +9 -0
- package/src/templates/contracts-rest-events/files/api.yaml +7 -0
- package/src/templates/contracts-rest-events/files/asyncapi.yaml +8 -0
- package/src/templates/contracts-rest-events/fragment.yaml +12 -0
- package/src/templates/deploy-bare-metal/files/release-checklist.md +8 -0
- package/src/templates/deploy-bare-metal/fragment.yaml +9 -0
- package/src/templates/deploy-common/files/README.md +5 -0
- package/src/templates/deploy-common/fragment.yaml +8 -0
- package/src/templates/deploy-docker-compose/files/compose.override.example.yaml +4 -0
- package/src/templates/deploy-docker-compose/files/docker-compose.yaml +4 -0
- package/src/templates/deploy-docker-compose/fragment.yaml +12 -0
- package/src/templates/deploy-kubernetes/files/Chart.yaml +6 -0
- package/src/templates/deploy-kubernetes/files/deployment.yaml +18 -0
- package/src/templates/deploy-kubernetes/files/namespace.yaml +4 -0
- package/src/templates/deploy-kubernetes/files/values.yaml +4 -0
- package/src/templates/deploy-kubernetes/fragment.yaml +18 -0
- package/src/templates/docs-skeleton/files/README.md +134 -0
- package/src/templates/docs-skeleton/files/arch-README.md +18 -0
- package/src/templates/docs-skeleton/files/arch-_ai-policy.yaml +8 -0
- package/src/templates/docs-skeleton/files/archive-README.md +20 -0
- package/src/templates/docs-skeleton/files/archive-_ai-policy.yaml +8 -0
- package/src/templates/docs-skeleton/files/assets-README.md +29 -0
- package/src/templates/docs-skeleton/files/assets-_ai-policy.yaml +8 -0
- package/src/templates/docs-skeleton/files/assets-design-gitkeep +0 -0
- package/src/templates/docs-skeleton/files/assets-diagrams-gitkeep +0 -0
- package/src/templates/docs-skeleton/files/assets-images-gitkeep +0 -0
- package/src/templates/docs-skeleton/files/be-README.md +29 -0
- package/src/templates/docs-skeleton/files/be-_ai-policy.yaml +8 -0
- package/src/templates/docs-skeleton/files/bg-README.md +21 -0
- package/src/templates/docs-skeleton/files/bg-_ai-policy.yaml +8 -0
- package/src/templates/docs-skeleton/files/eng-README.md +21 -0
- package/src/templates/docs-skeleton/files/eng-_ai-policy.yaml +9 -0
- package/src/templates/docs-skeleton/files/fe-README.md +31 -0
- package/src/templates/docs-skeleton/files/fe-_ai-policy.yaml +8 -0
- package/src/templates/docs-skeleton/files/governance-README.md +28 -0
- package/src/templates/docs-skeleton/files/governance-_ai-policy.yaml +13 -0
- package/src/templates/docs-skeleton/files/governance-ai-access-modes.md +324 -0
- package/src/templates/docs-skeleton/files/governance-assets.md +50 -0
- package/src/templates/docs-skeleton/files/governance-checklists.md +55 -0
- package/src/templates/docs-skeleton/files/governance-ci.md +36 -0
- package/src/templates/docs-skeleton/files/governance-deploy-ops.md +107 -0
- package/src/templates/docs-skeleton/files/governance-docs-references.md +39 -0
- package/src/templates/docs-skeleton/files/governance-git-workflow.md +45 -0
- package/src/templates/docs-skeleton/files/governance-integrations.md +66 -0
- package/src/templates/docs-skeleton/files/governance-security.md +69 -0
- package/src/templates/docs-skeleton/files/governance-tools-scripts.md +128 -0
- package/src/templates/docs-skeleton/files/process-docs-README.md +22 -0
- package/src/templates/docs-skeleton/files/process-docs-_ai-policy.yaml +10 -0
- package/src/templates/docs-skeleton/files/references-README.md +19 -0
- package/src/templates/docs-skeleton/files/references-_ai-policy.yaml +9 -0
- package/src/templates/docs-skeleton/files/references-legal-source.yaml +5 -0
- package/src/templates/docs-skeleton/files/references-standards-source.yaml +5 -0
- package/src/templates/docs-skeleton/files/references-vendors-source.yaml +5 -0
- package/src/templates/docs-skeleton/files/usage-quickstart.md +168 -0
- package/src/templates/docs-skeleton/fragment.yaml +129 -0
- package/src/templates/integrations-docs/files/README.md +53 -0
- package/src/templates/integrations-docs/files/_template.md +63 -0
- package/src/templates/integrations-docs/fragment.yaml +12 -0
- package/src/templates/license-apache-2/files/LICENSE +15 -0
- package/src/templates/license-apache-2/fragment.yaml +9 -0
- package/src/templates/license-mit/files/LICENSE +21 -0
- package/src/templates/license-mit/fragment.yaml +9 -0
- package/src/templates/miniapp-wechat/files/README.md +10 -0
- package/src/templates/miniapp-wechat/files/app.js +5 -0
- package/src/templates/miniapp-wechat/files/app.json +9 -0
- package/src/templates/miniapp-wechat/files/app.wxss +4 -0
- package/src/templates/miniapp-wechat/files/generated-gitkeep +0 -0
- package/src/templates/miniapp-wechat/files/pages-index.js +4 -0
- package/src/templates/miniapp-wechat/files/pages-index.json +3 -0
- package/src/templates/miniapp-wechat/files/pages-index.wxml +3 -0
- package/src/templates/miniapp-wechat/files/pages-index.wxss +10 -0
- package/src/templates/miniapp-wechat/files/project.config.json +13 -0
- package/src/templates/miniapp-wechat/files/sitemap.json +8 -0
- package/src/templates/miniapp-wechat/fragment.yaml +39 -0
- package/src/templates/mobile-flutter/files/README.md +14 -0
- package/src/templates/mobile-flutter/files/analysis_options.yaml +6 -0
- package/src/templates/mobile-flutter/files/generated-gitkeep +0 -0
- package/src/templates/mobile-flutter/files/main.dart +18 -0
- package/src/templates/mobile-flutter/files/pubspec.yaml +19 -0
- package/src/templates/mobile-flutter/fragment.yaml +21 -0
- package/src/templates/mobile-react-native/files/App.tsx +10 -0
- package/src/templates/mobile-react-native/files/README.md +15 -0
- package/src/templates/mobile-react-native/files/app.json +4 -0
- package/src/templates/mobile-react-native/files/generated-gitkeep +0 -0
- package/src/templates/mobile-react-native/files/index.js +5 -0
- package/src/templates/mobile-react-native/files/package.json +14 -0
- package/src/templates/mobile-react-native/fragment.yaml +24 -0
- package/src/templates/repo-skeleton/files/docs-gitkeep +0 -0
- package/src/templates/repo-skeleton/files/ops-README.md +6 -0
- package/src/templates/repo-skeleton/files/ops-k8s-gitkeep +0 -0
- package/src/templates/repo-skeleton/files/ops-monitoring-gitkeep +0 -0
- package/src/templates/repo-skeleton/files/ops-terraform-gitkeep +0 -0
- package/src/templates/repo-skeleton/files/scripts-README.md +11 -0
- package/src/templates/repo-skeleton/files/scripts-ci-gitkeep +0 -0
- package/src/templates/repo-skeleton/files/scripts-dev-gitkeep +0 -0
- package/src/templates/repo-skeleton/files/scripts-oneoff-gitkeep +0 -0
- package/src/templates/repo-skeleton/files/scripts-ops-gitkeep +0 -0
- package/src/templates/repo-skeleton/files/tools-README.md +4 -0
- package/src/templates/repo-skeleton/files/tools-contract-gitkeep +0 -0
- package/src/templates/repo-skeleton/fragment.yaml +41 -0
- package/src/templates/role-data/files/README.md +23 -0
- package/src/templates/role-data/files/_ai-policy.yaml +10 -0
- package/src/templates/role-data/files/dashboards-gitkeep +0 -0
- package/src/templates/role-data/files/data-catalog-gitkeep +0 -0
- package/src/templates/role-data/files/tracking-spec-gitkeep +0 -0
- package/src/templates/role-data/fragment.yaml +21 -0
- package/src/templates/role-design/files/README.md +26 -0
- package/src/templates/role-design/files/_ai-policy.yaml +11 -0
- package/src/templates/role-design/files/figma-exports-gitkeep +0 -0
- package/src/templates/role-design/files/ui-spec-gitkeep +0 -0
- package/src/templates/role-design/fragment.yaml +18 -0
- package/src/templates/role-field/files/README.md +33 -0
- package/src/templates/role-field/files/_ai-policy.yaml +13 -0
- package/src/templates/role-field/files/runbooks-README.md +5 -0
- package/src/templates/role-field/files/templates-README.md +5 -0
- package/src/templates/role-field/files/templates-_ai-policy.yaml +8 -0
- package/src/templates/role-field/fragment.yaml +21 -0
- package/src/templates/role-legal-security/files/README.md +33 -0
- package/src/templates/role-legal-security/files/_ai-policy.yaml +14 -0
- package/src/templates/role-legal-security/files/assessments-README.md +5 -0
- package/src/templates/role-legal-security/files/assessments-_ai-policy.yaml +9 -0
- package/src/templates/role-legal-security/files/evidence-README.md +5 -0
- package/src/templates/role-legal-security/files/evidence-_ai-policy.yaml +8 -0
- package/src/templates/role-legal-security/fragment.yaml +24 -0
- package/src/templates/role-marketing/files/README.md +32 -0
- package/src/templates/role-marketing/files/_ai-policy.yaml +14 -0
- package/src/templates/role-marketing/files/drafts-README.md +7 -0
- package/src/templates/role-marketing/files/drafts-_ai-policy.yaml +19 -0
- package/src/templates/role-marketing/files/published-README.md +5 -0
- package/src/templates/role-marketing/files/published-_ai-policy.yaml +8 -0
- package/src/templates/role-marketing/files/templates-README.md +5 -0
- package/src/templates/role-marketing/files/templates-_ai-policy.yaml +8 -0
- package/src/templates/role-marketing/fragment.yaml +30 -0
- package/src/templates/role-qa/files/README.md +20 -0
- package/src/templates/role-qa/files/_ai-policy.yaml +9 -0
- package/src/templates/role-qa/files/defects-gitkeep +0 -0
- package/src/templates/role-qa/files/test-cases-gitkeep +0 -0
- package/src/templates/role-qa/files/test-plans-gitkeep +0 -0
- package/src/templates/role-qa/fragment.yaml +21 -0
- package/src/templates/root-files/files/.editorconfig +15 -0
- package/src/templates/root-files/files/.gitattributes +13 -0
- package/src/templates/root-files/files/AGENTS.md +194 -0
- package/src/templates/root-files/files/README.md +16 -0
- package/src/templates/root-files/fragment.yaml +20 -0
- package/src/templates/server-go/files/README.md +3 -0
- package/src/templates/server-go/files/generated-gitkeep +0 -0
- package/src/templates/server-go/files/go.mod +3 -0
- package/src/templates/server-go/files/main.go +7 -0
- package/src/templates/server-go/fragment.yaml +18 -0
- package/src/templates/server-java/files/Application.java +12 -0
- package/src/templates/server-java/files/README.md +48 -0
- package/src/templates/server-java/files/application-test.yaml +17 -0
- package/src/templates/server-java/files/application.yaml +33 -0
- package/src/templates/server-java/files/generated-gitkeep +0 -0
- package/src/templates/server-java/files/pom.xml +97 -0
- package/src/templates/server-java/fragment.yaml +24 -0
- package/src/templates/server-node/files/README.md +6 -0
- package/src/templates/server-node/files/generated-gitkeep +0 -0
- package/src/templates/server-node/files/package.json +9 -0
- package/src/templates/server-node/files/src-index.ts +2 -0
- package/src/templates/server-node/fragment.yaml +18 -0
- package/src/templates/server-python/files/README.md +4 -0
- package/src/templates/server-python/files/app-init.py +1 -0
- package/src/templates/server-python/files/generated-gitkeep +0 -0
- package/src/templates/server-python/files/pyproject.toml +5 -0
- package/src/templates/server-python/fragment.yaml +18 -0
- package/src/templates/web-react/files/README.md +29 -0
- package/src/templates/web-react/files/generated-gitkeep +0 -0
- package/src/templates/web-react/files/index.html +12 -0
- package/src/templates/web-react/files/package.json +25 -0
- package/src/templates/web-react/files/src-App.tsx +11 -0
- package/src/templates/web-react/files/src-main.tsx +14 -0
- package/src/templates/web-react/files/tsconfig.json +20 -0
- package/src/templates/web-react/files/vite.config.ts +15 -0
- package/src/templates/web-react/fragment.yaml +30 -0
- package/src/templates/web-vue/files/README.md +3 -0
- package/src/templates/web-vue/files/generated-gitkeep +0 -0
- package/src/templates/web-vue/files/index.html +11 -0
- package/src/templates/web-vue/files/package.json +9 -0
- package/src/templates/web-vue/files/src-main.ts +3 -0
- package/src/templates/web-vue/fragment.yaml +21 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
name: role-marketing
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
appliesWhen:
|
|
4
|
+
role: marketing
|
|
5
|
+
priority: 30
|
|
6
|
+
files:
|
|
7
|
+
- from: files/README.md
|
|
8
|
+
to: docs/11-市场与对外材料/README.md
|
|
9
|
+
render: false
|
|
10
|
+
- from: files/_ai-policy.yaml
|
|
11
|
+
to: docs/11-市场与对外材料/_ai-policy.yaml
|
|
12
|
+
render: false
|
|
13
|
+
- from: files/templates-README.md
|
|
14
|
+
to: docs/11-市场与对外材料/templates/README.md
|
|
15
|
+
render: false
|
|
16
|
+
- from: files/templates-_ai-policy.yaml
|
|
17
|
+
to: docs/11-市场与对外材料/templates/_ai-policy.yaml
|
|
18
|
+
render: false
|
|
19
|
+
- from: files/drafts-README.md
|
|
20
|
+
to: docs/11-市场与对外材料/drafts/README.md
|
|
21
|
+
render: false
|
|
22
|
+
- from: files/drafts-_ai-policy.yaml
|
|
23
|
+
to: docs/11-市场与对外材料/drafts/_ai-policy.yaml
|
|
24
|
+
render: false
|
|
25
|
+
- from: files/published-README.md
|
|
26
|
+
to: docs/11-市场与对外材料/published/README.md
|
|
27
|
+
render: false
|
|
28
|
+
- from: files/published-_ai-policy.yaml
|
|
29
|
+
to: docs/11-市场与对外材料/published/_ai-policy.yaml
|
|
30
|
+
render: false
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# 07-质量与测试
|
|
2
|
+
|
|
3
|
+
测试计划、用例集、缺陷库的归属目录。依据 ADR-0002 引入。
|
|
4
|
+
|
|
5
|
+
## 子目录
|
|
6
|
+
|
|
7
|
+
| 目录 | 内容 |
|
|
8
|
+
|------|------|
|
|
9
|
+
| `test-plans/` | 项目 / 版本级测试计划 |
|
|
10
|
+
| `test-cases/` | 用例集(手工 / 自动化)。可执行的 Gherkin 仍在 `contracts/tests/acceptance/` |
|
|
11
|
+
| `defects/` | 缺陷库存档(需要长期保留的关键缺陷复盘) |
|
|
12
|
+
|
|
13
|
+
## AI 触达模式
|
|
14
|
+
|
|
15
|
+
`mode: suggest`。AI 在契约或代码变更时,应在 PR 描述中提示"可能影响 docs/07/test-plans/xxx",但**不自动改**测试主线。
|
|
16
|
+
|
|
17
|
+
## 与既有目录的关系
|
|
18
|
+
|
|
19
|
+
- 与 `contracts/tests/acceptance/`(Gherkin 业务验收):本目录是**叙事 + 计划**,acceptance 是**机器可执行**
|
|
20
|
+
- 与 `docs/04-后端详细设计/` / `docs/05-前端客户端详细设计/`:模块设计文档中的"测试要点"指向本目录的具体用例
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: role-qa
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
appliesWhen:
|
|
4
|
+
role: qa
|
|
5
|
+
priority: 30
|
|
6
|
+
files:
|
|
7
|
+
- from: files/README.md
|
|
8
|
+
to: docs/07-质量与测试/README.md
|
|
9
|
+
render: false
|
|
10
|
+
- from: files/_ai-policy.yaml
|
|
11
|
+
to: docs/07-质量与测试/_ai-policy.yaml
|
|
12
|
+
render: false
|
|
13
|
+
- from: files/test-plans-gitkeep
|
|
14
|
+
to: docs/07-质量与测试/test-plans/.gitkeep
|
|
15
|
+
render: false
|
|
16
|
+
- from: files/test-cases-gitkeep
|
|
17
|
+
to: docs/07-质量与测试/test-cases/.gitkeep
|
|
18
|
+
render: false
|
|
19
|
+
- from: files/defects-gitkeep
|
|
20
|
+
to: docs/07-质量与测试/defects/.gitkeep
|
|
21
|
+
render: false
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
* text=auto eol=lf
|
|
2
|
+
*.sh text eol=lf
|
|
3
|
+
*.ps1 text eol=crlf
|
|
4
|
+
*.png binary
|
|
5
|
+
*.jpg binary
|
|
6
|
+
*.jpeg binary
|
|
7
|
+
*.pdf binary
|
|
8
|
+
<% if (it.options.gitLfs) { %>
|
|
9
|
+
# Git LFS
|
|
10
|
+
docs/assets/**/*.png filter=lfs diff=lfs merge=lfs -text
|
|
11
|
+
docs/assets/**/*.psd filter=lfs diff=lfs merge=lfs -text
|
|
12
|
+
docs/assets/**/*.sketch filter=lfs diff=lfs merge=lfs -text
|
|
13
|
+
<% } %>
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
# AGENTS — <%= it.options.projectName %>
|
|
2
|
+
|
|
3
|
+
> 本文件是仓库协作总纲。它不承载所有细则——细则按任务类型从 `docs/`、`contracts/`、`.kiro/steering/` 加载(见 §6 按需加载索引、§7 权威文件索引)。
|
|
4
|
+
>
|
|
5
|
+
> 任何与本文件冲突的局部约定一律作废,除非通过 PR 修改本文件本身。
|
|
6
|
+
|
|
7
|
+
*Created by AI on <%= it.generatedAt.slice(0, 10) %>.*
|
|
8
|
+
|
|
9
|
+
## 0. 默认必读
|
|
10
|
+
|
|
11
|
+
1. 本文件 `AGENTS.md`(总纲)
|
|
12
|
+
2. `docs/README.md`(文档门户)
|
|
13
|
+
3. `contracts/README.md`(涉及契约时)
|
|
14
|
+
<% if (it.options.ai === 'kiro') { %>4. `.kiro/steering/*.md`(若存在)
|
|
15
|
+
<% } else if (it.options.ai === 'codex') { %>4. `.codex/project.md`(项目专属备注)
|
|
16
|
+
<% } else if (it.options.ai === 'cursor') { %>4. `.cursor/rules/*.md`(项目规则)
|
|
17
|
+
<% } else if (it.options.ai === 'claude-code') { %>4. `CLAUDE.md`(Claude Code 自动加载)
|
|
18
|
+
<% } %>
|
|
19
|
+
|
|
20
|
+
> 入门 / 角色场景对照:[`docs/03-工程规范与研发基础设施/usage-quickstart.md`](docs/03-工程规范与研发基础设施/usage-quickstart.md)
|
|
21
|
+
|
|
22
|
+
## 1. 项目定位
|
|
23
|
+
|
|
24
|
+
本仓库采用 **Contract First + Vibe Coding**。契约定义优先于实现,文档与契约分层维护。
|
|
25
|
+
|
|
26
|
+
顶层目录职责:
|
|
27
|
+
|
|
28
|
+
| 目录 | 面向 | 内容 |
|
|
29
|
+
| ------------ | --------- | ---------------------------------------------------- |
|
|
30
|
+
| `contracts/` | 机器 / AI | 结构化、版本可控、工具可消费的规约 |
|
|
31
|
+
| `docs/` | 人类 | 过程性资料、正式设计文档、外部引用资料、资产文件 |
|
|
32
|
+
<% if (it.options.backend !== 'none') { %>| `server/` | 机器 | 后端服务实现源码(<%= it.options.backend %>) |
|
|
33
|
+
<% } %><% if (it.options.frontend !== 'none') { %>| `web/` | 机器 | 前端应用实现源码(<%= it.options.frontend %>) |
|
|
34
|
+
<% } %><% if (it.options.mobile !== 'none') { %>| `mobile/` | 机器 | 移动端原生应用源码(<%= it.options.mobile %>) |
|
|
35
|
+
<% } %><% if (it.options.miniapp !== 'none') { %>| `miniapp/` | 机器 | 小程序源码(<%= it.options.miniapp %>) |
|
|
36
|
+
<% } %><% if (it.options.agent !== 'none') { %>| `agent/` | 机器 | 终端 / 桌面客户端源码(<%= it.options.agent %>) |
|
|
37
|
+
<% } %>| `ops/` | 机器 | 基础设施即代码(集群、网络、监控) |
|
|
38
|
+
| `deploy/` | 机器 | 应用发布物(Dockerfile、Helm、K8s manifest、流水线) |
|
|
39
|
+
| `tools/` | 机器 | 结构化、可复用的开发工具与脚手架 |
|
|
40
|
+
| `scripts/` | 机器 | 薄、零散、日常维护脚本 |
|
|
41
|
+
<% if (it.options.ai === 'kiro') { %>| `.kiro/` | AI | Kiro IDE 的 steering、prompts、specs |
|
|
42
|
+
<% } else if (it.options.ai === 'codex') { %>| `.codex/` | AI | Codex 项目备注与 prompts |
|
|
43
|
+
<% } else if (it.options.ai === 'cursor') { %>| `.cursor/` | AI | Cursor 项目规则 |
|
|
44
|
+
<% } else if (it.options.ai === 'claude-code') { %>| `CLAUDE.md` | AI | Claude Code 项目上下文(根文件) |
|
|
45
|
+
| `.claude/` | AI | Claude Code slash-commands |
|
|
46
|
+
<% } %>
|
|
47
|
+
|
|
48
|
+
### 1.1 单应用 vs 多应用模式
|
|
49
|
+
|
|
50
|
+
每个执行环境目录(`server/` `web/` `mobile/` `miniapp/` `agent/`)默认处于**单应用模式**。需要容纳第二个应用时切换到**多应用模式**:
|
|
51
|
+
|
|
52
|
+
1. 在该目录下创建 `apps/<app-name>/`(`<app-name>` 匹配 `^[a-z0-9][a-z0-9-]{0,62}$`)
|
|
53
|
+
2. 将原有工程文件整体迁入 `apps/<原应用名>/`
|
|
54
|
+
3. 之后所有应用都必须位于 `<env>/apps/*/` 之下;**禁止**裸工程文件与 `apps/` 子目录并存
|
|
55
|
+
|
|
56
|
+
跨应用共享只走 `contracts/` 或可选的根 `packages/`;**禁止** `<env>/apps/A/` 直接 import `<env>/apps/B/`。
|
|
57
|
+
|
|
58
|
+
## 2. 不可协商原则
|
|
59
|
+
|
|
60
|
+
- **Contract First**:契约定义优先于代码实现。
|
|
61
|
+
- 接口、事件、错误码、字典、状态机统一进入 `contracts/`,**禁止**在模块内部重复定义。
|
|
62
|
+
- 由契约生成的 `generated/` 代码**禁止手改**;CI 校验"重新生成后 diff 为空"。
|
|
63
|
+
- **禁止**提交 secret、私钥、真实 PII、真实用户数据。
|
|
64
|
+
- 文件统一使用 **UTF-8 + LF**(`.gitattributes` 强制)。
|
|
65
|
+
- 模块边界稳定优先于业务细节。
|
|
66
|
+
- AI 生成代码必须**打标**:commit 使用 `feat(ai): ...` / `chore(ai): ...` 前缀,PR 打 `ai-generated` 标签。
|
|
67
|
+
- 临时 / 讨论 / 未定稿**只能**进 `docs/过程文档/`。
|
|
68
|
+
|
|
69
|
+
## 3. 项目配置(本仓库选定值)
|
|
70
|
+
|
|
71
|
+
- Backend language: **<%= it.options.backend %>**
|
|
72
|
+
- Frontend framework: **<%= it.options.frontend %>**
|
|
73
|
+
- Mobile app: **<%= it.options.mobile %>**
|
|
74
|
+
- Mini program: **<%= it.options.miniapp %>**
|
|
75
|
+
- Agent client: **<%= it.options.agent %>**
|
|
76
|
+
- Deploy target: **<%= it.options.deploy %>**
|
|
77
|
+
- Contract kind: **<%= it.options.contract %>**
|
|
78
|
+
- AI tool integration: **<%= it.options.ai %>**
|
|
79
|
+
- License: **<%= it.options.license %>**
|
|
80
|
+
- Git LFS enabled: **<%= it.options.gitLfs %>**
|
|
81
|
+
- Integrations docs: **<%= it.options.integrations %>**
|
|
82
|
+
- CI platform: **<%= it.options.ci %>**
|
|
83
|
+
|
|
84
|
+
## 4. 文档归属
|
|
85
|
+
|
|
86
|
+
每类文档只有一个合法位置;放错位置的 PR 应被退回。完整归档规则与索引同步要求 → [`docs/README.md`](docs/README.md)。
|
|
87
|
+
|
|
88
|
+
| 文档类型 | 归属目录 |
|
|
89
|
+
| ----------------------------------------- | ---------------------------------------------- |
|
|
90
|
+
| PRD、需求调研、竞品分析 | `docs/01-背景与需求/` |
|
|
91
|
+
| 架构决策(ADR)、方案对比 | `docs/02-系统方案与架构/` |
|
|
92
|
+
| 编码规范、CI/CD 说明、环境管理 | `docs/03-工程规范与研发基础设施/` |
|
|
93
|
+
| 后端模块详细设计 | `docs/04-后端详细设计/` |
|
|
94
|
+
| 前端 / 客户端模块详细设计 | `docs/05-前端客户端详细设计/` |
|
|
95
|
+
<% if (it.options.integrations) { %>| 跨执行环境对接(已启用 `integrations`) | `docs/06-集成对接/<consumer>-to-<producer>/` |
|
|
96
|
+
<% } %>| 治理细则(CI / 安全 / Git / 资产 / 等) | `docs/governance/`(详见 §8) |
|
|
97
|
+
| 架构图源、UI 稿、截图、设计稿 | `docs/assets/{diagrams,images,design}/` |
|
|
98
|
+
| 行业标准、厂商手册、法规、合规参考 | `docs/references/{standards,vendors,legal}/` |
|
|
99
|
+
| 会议记录、调研草稿、未定稿、技术探针 | `docs/过程文档/`(结论固化后回迁) |
|
|
100
|
+
| 过期 / 被否决 / 90 天未采纳的过程文档 | `docs/archive/` |
|
|
101
|
+
|
|
102
|
+
索引同步要求:新增 / 修改可能影响**启动 / 实现 / 管理**视角的文档时,**必须**在同一 PR 同步 `docs/README.md`(目录地图、新增分类入口、子目录约定)。手维护的"阅读顺序 / 必读清单 / 详细设计导航"索引已废弃,改用 `grep` / `fileSearch` 检索。
|
|
103
|
+
|
|
104
|
+
## 5. 快速判定卡
|
|
105
|
+
|
|
106
|
+
### 5.1 ops/ vs deploy/
|
|
107
|
+
|
|
108
|
+
- **"即便没有业务应用也要存在"** → `ops/`
|
|
109
|
+
- **"业务应用的打包与投递"** → `deploy/`
|
|
110
|
+
- 一个 Helm chart:chart 本身属 `deploy/`,依赖的 Namespace / CRD 属 `ops/`
|
|
111
|
+
- 完整规则 → [`docs/governance/deploy-ops.md`](docs/governance/deploy-ops.md)
|
|
112
|
+
|
|
113
|
+
### 5.2 tools/ vs scripts/
|
|
114
|
+
|
|
115
|
+
- **有结构、可复用、近似小产品** → `tools/`
|
|
116
|
+
- **薄、零散、日常维护** → `scripts/`
|
|
117
|
+
- `scripts/` 出现以下任一信号 → 升级 `tools/`:第二个配置项 / 子命令;需独立依赖;多模块复用;超 200 行
|
|
118
|
+
- 脚本顶部必须含:用途 / 参数 / 幂等性 / 危险级别
|
|
119
|
+
- 完整规则 → [`docs/governance/tools-scripts.md`](docs/governance/tools-scripts.md)
|
|
120
|
+
|
|
121
|
+
<% if (it.options.integrations) { %>### 5.3 contracts/ vs docs/06-集成对接/
|
|
122
|
+
|
|
123
|
+
- **机器可验证的权威契约** → `contracts/`
|
|
124
|
+
- **契约不说但双方必须知道** → `docs/06-集成对接/`
|
|
125
|
+
- 完整规则 → [`docs/governance/integrations.md`](docs/governance/integrations.md)
|
|
126
|
+
<% } %>
|
|
127
|
+
|
|
128
|
+
## 6. 核心协作规则
|
|
129
|
+
|
|
130
|
+
- 先补契约和文档,再补实现。
|
|
131
|
+
- AI 生成代码必须在 PR / commit 中显式引用契约锚点和设计文档。
|
|
132
|
+
- `spike/*` 分支允许暂时跳过契约;合入 `main` 前必须补齐。
|
|
133
|
+
- 完整 PR 模板与 CODEOWNERS → [`docs/governance/git-workflow.md`](docs/governance/git-workflow.md)
|
|
134
|
+
- 契约 SemVer / CHANGELOG / 废弃流程 → [`contracts/README.md`](contracts/README.md)
|
|
135
|
+
|
|
136
|
+
## 7. 按需加载索引
|
|
137
|
+
|
|
138
|
+
### 7.1 路径触发表
|
|
139
|
+
|
|
140
|
+
| 修改路径 | 必读 |
|
|
141
|
+
| --- | --- |
|
|
142
|
+
| `contracts/**` | `contracts/README.md`、`docs/governance/integrations.md`、`docs/governance/checklists.md` |
|
|
143
|
+
| `docs/**`(除 `docs/governance/` 与 `docs/06-集成对接/`) | `docs/README.md`、`docs/governance/docs-references.md`、`docs/governance/checklists.md` |
|
|
144
|
+
<% if (it.options.integrations) { %>| `docs/06-集成对接/**` | `docs/governance/integrations.md` |
|
|
145
|
+
<% } %>| `docs/governance/**` | `docs/governance/README.md`;同一 PR 必须同步本文件中对应摘要 |
|
|
146
|
+
| `docs/assets/**` 或根 `.gitattributes` | `docs/governance/assets.md` |
|
|
147
|
+
| `ops/**` 或 `deploy/**` | `docs/governance/deploy-ops.md`、`docs/governance/security.md` |
|
|
148
|
+
| `tools/**` 或 `scripts/**` | `docs/governance/tools-scripts.md` |
|
|
149
|
+
<% if (it.options.ci === 'gitee') { %>| `.gitee/**` | `docs/governance/ci.md`、`docs/governance/security.md` |
|
|
150
|
+
<% } else { %>| `.github/**` | `docs/governance/ci.md`、`docs/governance/security.md` |
|
|
151
|
+
<% } %>
|
|
152
|
+
|
|
153
|
+
### 7.2 任务触发表
|
|
154
|
+
|
|
155
|
+
| 任务 | 必读 |
|
|
156
|
+
| --- | --- |
|
|
157
|
+
| 新增依赖 | `docs/governance/security.md` |
|
|
158
|
+
| 修改 PR 模板 / CODEOWNERS / 分支策略 | `docs/governance/git-workflow.md` |
|
|
159
|
+
| 新增脚本或工具 | `docs/governance/tools-scripts.md`、`docs/governance/checklists.md` |
|
|
160
|
+
| 多应用模式切换 | 本文件 §1.1、`docs/governance/git-workflow.md`、`docs/governance/checklists.md` |
|
|
161
|
+
| 发布前核对 | `docs/governance/checklists.md` §3、`docs/governance/security.md` |
|
|
162
|
+
| 应急响应(高危漏洞) | `docs/governance/security.md` §4 |
|
|
163
|
+
|
|
164
|
+
## 8. 权威文件索引
|
|
165
|
+
|
|
166
|
+
| 主题 | 唯一权威 |
|
|
167
|
+
| --- | --- |
|
|
168
|
+
| 契约 | [`contracts/README.md`](contracts/README.md) |
|
|
169
|
+
| 文档 | [`docs/README.md`](docs/README.md) |
|
|
170
|
+
| CI | [`docs/governance/ci.md`](docs/governance/ci.md) |
|
|
171
|
+
| 安全 | [`docs/governance/security.md`](docs/governance/security.md) |
|
|
172
|
+
| Git / PR / CODEOWNERS | [`docs/governance/git-workflow.md`](docs/governance/git-workflow.md) |
|
|
173
|
+
| 资产与 LFS | [`docs/governance/assets.md`](docs/governance/assets.md) |
|
|
174
|
+
| 集成对接 | [`docs/governance/integrations.md`](docs/governance/integrations.md) |
|
|
175
|
+
| ops / deploy 完整规则 | [`docs/governance/deploy-ops.md`](docs/governance/deploy-ops.md) |
|
|
176
|
+
| tools / scripts 完整规则 | [`docs/governance/tools-scripts.md`](docs/governance/tools-scripts.md) |
|
|
177
|
+
| 完整 checklist | [`docs/governance/checklists.md`](docs/governance/checklists.md) |
|
|
178
|
+
| 治理细则索引 | [`docs/governance/README.md`](docs/governance/README.md) |
|
|
179
|
+
|
|
180
|
+
## 9. 检查清单(入口)
|
|
181
|
+
|
|
182
|
+
完整可勾选清单 → [`docs/governance/checklists.md`](docs/governance/checklists.md)
|
|
183
|
+
|
|
184
|
+
每个 PR 高频核对项:
|
|
185
|
+
|
|
186
|
+
- **开发前**:契约 / 字典 / 错误码 / 状态机 / 事件 / 设计文档已就位;环境变量已同步
|
|
187
|
+
- **提交前**:CHANGELOG / docs/README.md(如需)/ PII / AI 标签 / 测试 / governance 摘要同步
|
|
188
|
+
- **发布前**:deploy values / pipeline CHANGELOG / 回滚 / 监控 / 密钥 / SBOM
|
|
189
|
+
- **多应用模式**:apps/ 不与裸文件并存 / pair 命名 / 跨应用引用走契约
|
|
190
|
+
- **新增脚本 / 工具**:归属判定 / 顶部注释 / 跨平台 / 索引
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
*Created by AI on <%= it.generatedAt.slice(0, 10) %>.*
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# <%= it.options.projectName %>
|
|
2
|
+
|
|
3
|
+
Created by AI on <%= it.generatedAt.slice(0, 10) %>.
|
|
4
|
+
|
|
5
|
+
## Quick start
|
|
6
|
+
|
|
7
|
+
See `AGENTS.md` for the full working agreement.
|
|
8
|
+
|
|
9
|
+
<% if (it.options.backend !== 'none') { %>- Backend lives in `server/` (<%= it.options.backend %>).
|
|
10
|
+
<% } %><% if (it.options.frontend !== 'none') { %>- Frontend lives in `web/` (<%= it.options.frontend %>).
|
|
11
|
+
<% } %>- Contracts live in `contracts/`.
|
|
12
|
+
- Documentation lives in `docs/`.
|
|
13
|
+
|
|
14
|
+
## License
|
|
15
|
+
|
|
16
|
+
<%= it.options.license === 'proprietary' ? 'Proprietary — all rights reserved.' : 'See the LICENSE file.' %>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
name: root-files
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
appliesWhen: {}
|
|
4
|
+
priority: 90
|
|
5
|
+
files:
|
|
6
|
+
- from: files/AGENTS.md
|
|
7
|
+
to: AGENTS.md
|
|
8
|
+
render: true
|
|
9
|
+
- from: files/README.md
|
|
10
|
+
to: README.md
|
|
11
|
+
render: true
|
|
12
|
+
- from: files/.gitignore
|
|
13
|
+
to: .gitignore
|
|
14
|
+
render: false
|
|
15
|
+
- from: files/.gitattributes
|
|
16
|
+
to: .gitattributes
|
|
17
|
+
render: true
|
|
18
|
+
- from: files/.editorconfig
|
|
19
|
+
to: .editorconfig
|
|
20
|
+
render: false
|
|
File without changes
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: server-go
|
|
2
|
+
version: 1.0.0
|
|
3
|
+
appliesWhen:
|
|
4
|
+
backend: go
|
|
5
|
+
priority: 30
|
|
6
|
+
files:
|
|
7
|
+
- from: files/README.md
|
|
8
|
+
to: server/README.md
|
|
9
|
+
render: true
|
|
10
|
+
- from: files/go.mod
|
|
11
|
+
to: server/go.mod
|
|
12
|
+
render: true
|
|
13
|
+
- from: files/main.go
|
|
14
|
+
to: server/cmd/server/main.go
|
|
15
|
+
render: false
|
|
16
|
+
- from: files/generated-gitkeep
|
|
17
|
+
to: server/generated/.gitkeep
|
|
18
|
+
render: false
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
package com.example.app;
|
|
2
|
+
|
|
3
|
+
import org.springframework.boot.SpringApplication;
|
|
4
|
+
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
5
|
+
|
|
6
|
+
@SpringBootApplication
|
|
7
|
+
public class Application {
|
|
8
|
+
|
|
9
|
+
public static void main(String[] args) {
|
|
10
|
+
SpringApplication.run(Application.class, args);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# <%= it.options.projectName %>-server
|
|
2
|
+
|
|
3
|
+
Backend scaffold (Spring Boot 3.3 + JDK 21 + JPA + Spring Security + JWT + MySQL).
|
|
4
|
+
|
|
5
|
+
## Stack
|
|
6
|
+
|
|
7
|
+
- Spring Boot 3.3.4
|
|
8
|
+
- JDK 21
|
|
9
|
+
- Spring Data JPA + Hibernate
|
|
10
|
+
- Spring Security + JJWT 0.12(无状态认证)
|
|
11
|
+
- MySQL 8 (default; tests use H2 with MySQL mode)
|
|
12
|
+
- Jackson, Validation, Actuator
|
|
13
|
+
|
|
14
|
+
## Configuration
|
|
15
|
+
|
|
16
|
+
| 属性 | 默认 | 环境变量 |
|
|
17
|
+
|------|------|---------|
|
|
18
|
+
| 数据库 URL | `jdbc:mysql://localhost:3306/<%= it.options.projectName %>?createDatabaseIfNotExist=true...` | `SPRING_DATASOURCE_URL` |
|
|
19
|
+
| DB 用户 | `root` | `SPRING_DATASOURCE_USERNAME` |
|
|
20
|
+
| DB 密码 | (空) | `SPRING_DATASOURCE_PASSWORD` |
|
|
21
|
+
| JWT secret | development-only placeholder | `JWT_SECRET`(生产必改)|
|
|
22
|
+
| JWT 有效期 | 120 分钟 | `app.jwt.expiration-minutes` |
|
|
23
|
+
|
|
24
|
+
> 默认 `spring.jpa.hibernate.ddl-auto=update`。生产环境改为 `validate` 并用 Flyway/Liquibase 管理 schema。
|
|
25
|
+
|
|
26
|
+
## Profiles
|
|
27
|
+
|
|
28
|
+
- 默认(无 profile):MySQL,详见 `application.yaml`
|
|
29
|
+
- `test`:H2 内存数据库 + MySQL 兼容模式,见 `application-test.yaml`
|
|
30
|
+
|
|
31
|
+
## Development
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# 假设 JDK 21 在 D:\work\wn\soft\java21
|
|
35
|
+
$env:JAVA_HOME = 'D:\work\wn\soft\java21'
|
|
36
|
+
$env:PATH = "$env:JAVA_HOME\bin;$env:PATH"
|
|
37
|
+
|
|
38
|
+
mvn spring-boot:run
|
|
39
|
+
mvn test
|
|
40
|
+
mvn package
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Conventions
|
|
44
|
+
|
|
45
|
+
- 包结构:`com.example.app.<feature>` 一个包一个模块
|
|
46
|
+
- JPA 实体:`<feature>/entity/`;Repo:`<feature>/repository/`;Service:`<feature>/service/`;Controller:`<feature>/web/`
|
|
47
|
+
- 契约消费:所有 DTO 字段名与 `contracts/openapi/api.yaml` 对齐;类型由 `contracts/dictionaries/` 派生
|
|
48
|
+
- 错误处理:抛 `BusinessException`,`@ControllerAdvice` 翻译为 `contracts/errors/error-codes.yaml` 中的标准错误结构
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
spring:
|
|
2
|
+
datasource:
|
|
3
|
+
url: jdbc:h2:mem:test;MODE=MySQL;DB_CLOSE_DELAY=-1
|
|
4
|
+
driver-class-name: org.h2.Driver
|
|
5
|
+
username: sa
|
|
6
|
+
password: ''
|
|
7
|
+
jpa:
|
|
8
|
+
hibernate:
|
|
9
|
+
ddl-auto: create-drop
|
|
10
|
+
properties:
|
|
11
|
+
hibernate:
|
|
12
|
+
dialect: org.hibernate.dialect.H2Dialect
|
|
13
|
+
|
|
14
|
+
app:
|
|
15
|
+
jwt:
|
|
16
|
+
secret: test-secret-for-unit-tests-only-min-32-characters-please
|
|
17
|
+
expiration-minutes: 60
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
spring:
|
|
2
|
+
application:
|
|
3
|
+
name: <%= it.options.projectName %>-server
|
|
4
|
+
datasource:
|
|
5
|
+
# 默认指向本地 MySQL;生产环境通过 SPRING_DATASOURCE_URL 等环境变量覆盖
|
|
6
|
+
url: ${SPRING_DATASOURCE_URL:jdbc:mysql://localhost:3306/<%= it.options.projectName %>?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useUnicode=true}
|
|
7
|
+
username: ${SPRING_DATASOURCE_USERNAME:root}
|
|
8
|
+
password: ${SPRING_DATASOURCE_PASSWORD:}
|
|
9
|
+
driver-class-name: com.mysql.cj.jdbc.Driver
|
|
10
|
+
jpa:
|
|
11
|
+
hibernate:
|
|
12
|
+
ddl-auto: update
|
|
13
|
+
properties:
|
|
14
|
+
hibernate:
|
|
15
|
+
dialect: org.hibernate.dialect.MySQLDialect
|
|
16
|
+
format_sql: true
|
|
17
|
+
show-sql: false
|
|
18
|
+
open-in-view: false
|
|
19
|
+
|
|
20
|
+
server:
|
|
21
|
+
port: 8080
|
|
22
|
+
|
|
23
|
+
management:
|
|
24
|
+
endpoints:
|
|
25
|
+
web:
|
|
26
|
+
exposure:
|
|
27
|
+
include: health,info
|
|
28
|
+
|
|
29
|
+
# JWT 配置:生产环境通过环境变量覆盖 secret
|
|
30
|
+
app:
|
|
31
|
+
jwt:
|
|
32
|
+
secret: ${JWT_SECRET:change-me-please-this-is-a-development-secret-only-min-32-chars}
|
|
33
|
+
expiration-minutes: 120
|
|
File without changes
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
|
3
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
4
|
+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
|
|
5
|
+
https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
6
|
+
<modelVersion>4.0.0</modelVersion>
|
|
7
|
+
|
|
8
|
+
<parent>
|
|
9
|
+
<groupId>org.springframework.boot</groupId>
|
|
10
|
+
<artifactId>spring-boot-starter-parent</artifactId>
|
|
11
|
+
<version>3.3.4</version>
|
|
12
|
+
<relativePath/>
|
|
13
|
+
</parent>
|
|
14
|
+
|
|
15
|
+
<groupId>com.example</groupId>
|
|
16
|
+
<artifactId><%= it.options.projectName %>-server</artifactId>
|
|
17
|
+
<version>0.1.0</version>
|
|
18
|
+
<packaging>jar</packaging>
|
|
19
|
+
<name><%= it.options.projectName %>-server</name>
|
|
20
|
+
|
|
21
|
+
<properties>
|
|
22
|
+
<java.version>21</java.version>
|
|
23
|
+
<maven.compiler.source>21</maven.compiler.source>
|
|
24
|
+
<maven.compiler.target>21</maven.compiler.target>
|
|
25
|
+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
|
26
|
+
<jjwt.version>0.12.6</jjwt.version>
|
|
27
|
+
</properties>
|
|
28
|
+
|
|
29
|
+
<dependencies>
|
|
30
|
+
<dependency>
|
|
31
|
+
<groupId>org.springframework.boot</groupId>
|
|
32
|
+
<artifactId>spring-boot-starter-web</artifactId>
|
|
33
|
+
</dependency>
|
|
34
|
+
<dependency>
|
|
35
|
+
<groupId>org.springframework.boot</groupId>
|
|
36
|
+
<artifactId>spring-boot-starter-validation</artifactId>
|
|
37
|
+
</dependency>
|
|
38
|
+
<dependency>
|
|
39
|
+
<groupId>org.springframework.boot</groupId>
|
|
40
|
+
<artifactId>spring-boot-starter-actuator</artifactId>
|
|
41
|
+
</dependency>
|
|
42
|
+
<dependency>
|
|
43
|
+
<groupId>org.springframework.boot</groupId>
|
|
44
|
+
<artifactId>spring-boot-starter-data-jpa</artifactId>
|
|
45
|
+
</dependency>
|
|
46
|
+
<dependency>
|
|
47
|
+
<groupId>org.springframework.boot</groupId>
|
|
48
|
+
<artifactId>spring-boot-starter-security</artifactId>
|
|
49
|
+
</dependency>
|
|
50
|
+
<dependency>
|
|
51
|
+
<groupId>com.mysql</groupId>
|
|
52
|
+
<artifactId>mysql-connector-j</artifactId>
|
|
53
|
+
<scope>runtime</scope>
|
|
54
|
+
</dependency>
|
|
55
|
+
<dependency>
|
|
56
|
+
<groupId>io.jsonwebtoken</groupId>
|
|
57
|
+
<artifactId>jjwt-api</artifactId>
|
|
58
|
+
<version>${jjwt.version}</version>
|
|
59
|
+
</dependency>
|
|
60
|
+
<dependency>
|
|
61
|
+
<groupId>io.jsonwebtoken</groupId>
|
|
62
|
+
<artifactId>jjwt-impl</artifactId>
|
|
63
|
+
<version>${jjwt.version}</version>
|
|
64
|
+
<scope>runtime</scope>
|
|
65
|
+
</dependency>
|
|
66
|
+
<dependency>
|
|
67
|
+
<groupId>io.jsonwebtoken</groupId>
|
|
68
|
+
<artifactId>jjwt-jackson</artifactId>
|
|
69
|
+
<version>${jjwt.version}</version>
|
|
70
|
+
<scope>runtime</scope>
|
|
71
|
+
</dependency>
|
|
72
|
+
<dependency>
|
|
73
|
+
<groupId>org.springframework.boot</groupId>
|
|
74
|
+
<artifactId>spring-boot-starter-test</artifactId>
|
|
75
|
+
<scope>test</scope>
|
|
76
|
+
</dependency>
|
|
77
|
+
<dependency>
|
|
78
|
+
<groupId>org.springframework.security</groupId>
|
|
79
|
+
<artifactId>spring-security-test</artifactId>
|
|
80
|
+
<scope>test</scope>
|
|
81
|
+
</dependency>
|
|
82
|
+
<dependency>
|
|
83
|
+
<groupId>com.h2database</groupId>
|
|
84
|
+
<artifactId>h2</artifactId>
|
|
85
|
+
<scope>test</scope>
|
|
86
|
+
</dependency>
|
|
87
|
+
</dependencies>
|
|
88
|
+
|
|
89
|
+
<build>
|
|
90
|
+
<plugins>
|
|
91
|
+
<plugin>
|
|
92
|
+
<groupId>org.springframework.boot</groupId>
|
|
93
|
+
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
94
|
+
</plugin>
|
|
95
|
+
</plugins>
|
|
96
|
+
</build>
|
|
97
|
+
</project>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: server-java
|
|
2
|
+
version: 1.1.0
|
|
3
|
+
appliesWhen:
|
|
4
|
+
backend: java
|
|
5
|
+
priority: 30
|
|
6
|
+
files:
|
|
7
|
+
- from: files/README.md
|
|
8
|
+
to: server/README.md
|
|
9
|
+
render: true
|
|
10
|
+
- from: files/pom.xml
|
|
11
|
+
to: server/pom.xml
|
|
12
|
+
render: true
|
|
13
|
+
- from: files/Application.java
|
|
14
|
+
to: server/src/main/java/com/example/app/Application.java
|
|
15
|
+
render: false
|
|
16
|
+
- from: files/application.yaml
|
|
17
|
+
to: server/src/main/resources/application.yaml
|
|
18
|
+
render: true
|
|
19
|
+
- from: files/application-test.yaml
|
|
20
|
+
to: server/src/test/resources/application-test.yaml
|
|
21
|
+
render: false
|
|
22
|
+
- from: files/generated-gitkeep
|
|
23
|
+
to: server/generated/.gitkeep
|
|
24
|
+
render: false
|