swallowkit 1.0.0-beta.6 → 1.0.0-beta.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/README.ja.md +87 -175
  2. package/README.md +87 -176
  3. package/dist/__tests__/fixtures.d.ts +12 -0
  4. package/dist/__tests__/fixtures.d.ts.map +1 -1
  5. package/dist/__tests__/fixtures.js +101 -0
  6. package/dist/__tests__/fixtures.js.map +1 -1
  7. package/dist/cli/commands/add-auth.d.ts +15 -0
  8. package/dist/cli/commands/add-auth.d.ts.map +1 -0
  9. package/dist/cli/commands/add-auth.js +790 -0
  10. package/dist/cli/commands/add-auth.js.map +1 -0
  11. package/dist/cli/commands/add-connector.d.ts +20 -0
  12. package/dist/cli/commands/add-connector.d.ts.map +1 -0
  13. package/dist/cli/commands/add-connector.js +164 -0
  14. package/dist/cli/commands/add-connector.js.map +1 -0
  15. package/dist/cli/commands/cosmos-worktree-isolation.d.ts +25 -0
  16. package/dist/cli/commands/cosmos-worktree-isolation.d.ts.map +1 -0
  17. package/dist/cli/commands/cosmos-worktree-isolation.js +124 -0
  18. package/dist/cli/commands/cosmos-worktree-isolation.js.map +1 -0
  19. package/dist/cli/commands/create-model.d.ts +1 -4
  20. package/dist/cli/commands/create-model.d.ts.map +1 -1
  21. package/dist/cli/commands/create-model.js +20 -82
  22. package/dist/cli/commands/create-model.js.map +1 -1
  23. package/dist/cli/commands/dev-seeds.d.ts +62 -0
  24. package/dist/cli/commands/dev-seeds.d.ts.map +1 -0
  25. package/dist/cli/commands/dev-seeds.js +474 -0
  26. package/dist/cli/commands/dev-seeds.js.map +1 -0
  27. package/dist/cli/commands/dev.d.ts +38 -0
  28. package/dist/cli/commands/dev.d.ts.map +1 -1
  29. package/dist/cli/commands/dev.js +733 -155
  30. package/dist/cli/commands/dev.js.map +1 -1
  31. package/dist/cli/commands/index.d.ts +1 -0
  32. package/dist/cli/commands/index.d.ts.map +1 -1
  33. package/dist/cli/commands/index.js +3 -1
  34. package/dist/cli/commands/index.js.map +1 -1
  35. package/dist/cli/commands/init.d.ts +74 -0
  36. package/dist/cli/commands/init.d.ts.map +1 -1
  37. package/dist/cli/commands/init.js +1376 -930
  38. package/dist/cli/commands/init.js.map +1 -1
  39. package/dist/cli/commands/scaffold.d.ts +24 -0
  40. package/dist/cli/commands/scaffold.d.ts.map +1 -1
  41. package/dist/cli/commands/scaffold.js +473 -90
  42. package/dist/cli/commands/scaffold.js.map +1 -1
  43. package/dist/cli/index.d.ts +5 -1
  44. package/dist/cli/index.d.ts.map +1 -1
  45. package/dist/cli/index.js +335 -55
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/core/config.d.ts +14 -3
  48. package/dist/core/config.d.ts.map +1 -1
  49. package/dist/core/config.js +179 -8
  50. package/dist/core/config.js.map +1 -1
  51. package/dist/core/mock/connector-mock-server.d.ts +101 -0
  52. package/dist/core/mock/connector-mock-server.d.ts.map +1 -0
  53. package/dist/core/mock/connector-mock-server.js +480 -0
  54. package/dist/core/mock/connector-mock-server.js.map +1 -0
  55. package/dist/core/mock/zod-mock-generator.d.ts +14 -0
  56. package/dist/core/mock/zod-mock-generator.d.ts.map +1 -0
  57. package/dist/core/mock/zod-mock-generator.js +163 -0
  58. package/dist/core/mock/zod-mock-generator.js.map +1 -0
  59. package/dist/core/operations/auth-operations.d.ts +61 -0
  60. package/dist/core/operations/auth-operations.d.ts.map +1 -0
  61. package/dist/core/operations/auth-operations.js +272 -0
  62. package/dist/core/operations/auth-operations.js.map +1 -0
  63. package/dist/core/operations/create-model.d.ts +15 -0
  64. package/dist/core/operations/create-model.d.ts.map +1 -0
  65. package/dist/core/operations/create-model.js +185 -0
  66. package/dist/core/operations/create-model.js.map +1 -0
  67. package/dist/core/operations/file-session.d.ts +56 -0
  68. package/dist/core/operations/file-session.d.ts.map +1 -0
  69. package/dist/core/operations/file-session.js +203 -0
  70. package/dist/core/operations/file-session.js.map +1 -0
  71. package/dist/core/operations/provision-operations.d.ts +52 -0
  72. package/dist/core/operations/provision-operations.d.ts.map +1 -0
  73. package/dist/core/operations/provision-operations.js +211 -0
  74. package/dist/core/operations/provision-operations.js.map +1 -0
  75. package/dist/core/operations/runtime.d.ts +37 -0
  76. package/dist/core/operations/runtime.d.ts.map +1 -0
  77. package/dist/core/operations/runtime.js +248 -0
  78. package/dist/core/operations/runtime.js.map +1 -0
  79. package/dist/core/operations/scaffold-apply.d.ts +21 -0
  80. package/dist/core/operations/scaffold-apply.d.ts.map +1 -0
  81. package/dist/core/operations/scaffold-apply.js +57 -0
  82. package/dist/core/operations/scaffold-apply.js.map +1 -0
  83. package/dist/core/operations/scaffold-machine.d.ts +16 -0
  84. package/dist/core/operations/scaffold-machine.d.ts.map +1 -0
  85. package/dist/core/operations/scaffold-machine.js +51 -0
  86. package/dist/core/operations/scaffold-machine.js.map +1 -0
  87. package/dist/core/operations/scaffold-plan.d.ts +43 -0
  88. package/dist/core/operations/scaffold-plan.d.ts.map +1 -0
  89. package/dist/core/operations/scaffold-plan.js +187 -0
  90. package/dist/core/operations/scaffold-plan.js.map +1 -0
  91. package/dist/core/project/agent-instructions.d.ts +29 -0
  92. package/dist/core/project/agent-instructions.d.ts.map +1 -0
  93. package/dist/core/project/agent-instructions.js +160 -0
  94. package/dist/core/project/agent-instructions.js.map +1 -0
  95. package/dist/core/project/artifacts.d.ts +58 -0
  96. package/dist/core/project/artifacts.d.ts.map +1 -0
  97. package/dist/core/project/artifacts.js +179 -0
  98. package/dist/core/project/artifacts.js.map +1 -0
  99. package/dist/core/project/boundaries.d.ts +50 -0
  100. package/dist/core/project/boundaries.d.ts.map +1 -0
  101. package/dist/core/project/boundaries.js +117 -0
  102. package/dist/core/project/boundaries.js.map +1 -0
  103. package/dist/core/project/capabilities.d.ts +58 -0
  104. package/dist/core/project/capabilities.d.ts.map +1 -0
  105. package/dist/core/project/capabilities.js +135 -0
  106. package/dist/core/project/capabilities.js.map +1 -0
  107. package/dist/core/project/drift.d.ts +29 -0
  108. package/dist/core/project/drift.d.ts.map +1 -0
  109. package/dist/core/project/drift.js +188 -0
  110. package/dist/core/project/drift.js.map +1 -0
  111. package/dist/core/project/infra.d.ts +49 -0
  112. package/dist/core/project/infra.d.ts.map +1 -0
  113. package/dist/core/project/infra.js +167 -0
  114. package/dist/core/project/infra.js.map +1 -0
  115. package/dist/core/project/manifest.d.ts +92 -0
  116. package/dist/core/project/manifest.d.ts.map +1 -0
  117. package/dist/core/project/manifest.js +321 -0
  118. package/dist/core/project/manifest.js.map +1 -0
  119. package/dist/core/project/state.d.ts +15 -0
  120. package/dist/core/project/state.d.ts.map +1 -0
  121. package/dist/core/project/state.js +106 -0
  122. package/dist/core/project/state.js.map +1 -0
  123. package/dist/core/project/validation.d.ts +20 -0
  124. package/dist/core/project/validation.d.ts.map +1 -0
  125. package/dist/core/project/validation.js +274 -0
  126. package/dist/core/project/validation.js.map +1 -0
  127. package/dist/core/project/workflows.d.ts +43 -0
  128. package/dist/core/project/workflows.d.ts.map +1 -0
  129. package/dist/core/project/workflows.js +299 -0
  130. package/dist/core/project/workflows.js.map +1 -0
  131. package/dist/core/scaffold/auth-generator.d.ts +63 -0
  132. package/dist/core/scaffold/auth-generator.d.ts.map +1 -0
  133. package/dist/core/scaffold/auth-generator.js +1774 -0
  134. package/dist/core/scaffold/auth-generator.js.map +1 -0
  135. package/dist/core/scaffold/connector-functions-generator.d.ts +41 -0
  136. package/dist/core/scaffold/connector-functions-generator.d.ts.map +1 -0
  137. package/dist/core/scaffold/connector-functions-generator.js +1029 -0
  138. package/dist/core/scaffold/connector-functions-generator.js.map +1 -0
  139. package/dist/core/scaffold/functions-generator.d.ts +7 -1
  140. package/dist/core/scaffold/functions-generator.d.ts.map +1 -1
  141. package/dist/core/scaffold/functions-generator.js +771 -69
  142. package/dist/core/scaffold/functions-generator.js.map +1 -1
  143. package/dist/core/scaffold/model-parser.d.ts +21 -1
  144. package/dist/core/scaffold/model-parser.d.ts.map +1 -1
  145. package/dist/core/scaffold/model-parser.js +230 -79
  146. package/dist/core/scaffold/model-parser.js.map +1 -1
  147. package/dist/core/scaffold/native-schema-generator.d.ts +19 -0
  148. package/dist/core/scaffold/native-schema-generator.d.ts.map +1 -0
  149. package/dist/core/scaffold/native-schema-generator.js +753 -0
  150. package/dist/core/scaffold/native-schema-generator.js.map +1 -0
  151. package/dist/core/scaffold/nextjs-generator.d.ts +8 -0
  152. package/dist/core/scaffold/nextjs-generator.d.ts.map +1 -1
  153. package/dist/core/scaffold/nextjs-generator.js +153 -9
  154. package/dist/core/scaffold/nextjs-generator.js.map +1 -1
  155. package/dist/core/scaffold/openapi-generator.d.ts +3 -0
  156. package/dist/core/scaffold/openapi-generator.d.ts.map +1 -0
  157. package/dist/core/scaffold/openapi-generator.js +190 -0
  158. package/dist/core/scaffold/openapi-generator.js.map +1 -0
  159. package/dist/core/scaffold/ui-generator.d.ts +17 -4
  160. package/dist/core/scaffold/ui-generator.d.ts.map +1 -1
  161. package/dist/core/scaffold/ui-generator.js +174 -34
  162. package/dist/core/scaffold/ui-generator.js.map +1 -1
  163. package/dist/core/verify/index.d.ts +69 -0
  164. package/dist/core/verify/index.d.ts.map +1 -0
  165. package/dist/core/verify/index.js +412 -0
  166. package/dist/core/verify/index.js.map +1 -0
  167. package/dist/database/base-model.d.ts +3 -3
  168. package/dist/database/base-model.js +3 -3
  169. package/dist/index.d.ts +2 -2
  170. package/dist/index.d.ts.map +1 -1
  171. package/dist/index.js +2 -1
  172. package/dist/index.js.map +1 -1
  173. package/dist/machine/contracts.d.ts +24 -0
  174. package/dist/machine/contracts.d.ts.map +1 -0
  175. package/dist/machine/contracts.js +3 -0
  176. package/dist/machine/contracts.js.map +1 -0
  177. package/dist/machine/errors.d.ts +14 -0
  178. package/dist/machine/errors.d.ts.map +1 -0
  179. package/dist/machine/errors.js +42 -0
  180. package/dist/machine/errors.js.map +1 -0
  181. package/dist/machine/index.d.ts +3 -0
  182. package/dist/machine/index.d.ts.map +1 -0
  183. package/dist/machine/index.js +566 -0
  184. package/dist/machine/index.js.map +1 -0
  185. package/dist/mcp/index.d.ts +25 -0
  186. package/dist/mcp/index.d.ts.map +1 -0
  187. package/dist/mcp/index.js +425 -0
  188. package/dist/mcp/index.js.map +1 -0
  189. package/dist/types/index.d.ts +109 -0
  190. package/dist/types/index.d.ts.map +1 -1
  191. package/dist/utils/package-manager.d.ts +9 -12
  192. package/dist/utils/package-manager.d.ts.map +1 -1
  193. package/dist/utils/package-manager.js +51 -22
  194. package/dist/utils/package-manager.js.map +1 -1
  195. package/dist/utils/python-uv.d.ts +21 -0
  196. package/dist/utils/python-uv.d.ts.map +1 -0
  197. package/dist/utils/python-uv.js +111 -0
  198. package/dist/utils/python-uv.js.map +1 -0
  199. package/dist/version.d.ts +2 -0
  200. package/dist/version.d.ts.map +1 -0
  201. package/dist/version.js +49 -0
  202. package/dist/version.js.map +1 -0
  203. package/package.json +16 -17
  204. package/src/__tests__/__snapshots__/functions-generator.test.ts.snap +1139 -0
  205. package/src/__tests__/__snapshots__/nextjs-generator.test.ts.snap +206 -0
  206. package/src/__tests__/__snapshots__/ui-generator.test.ts.snap +532 -0
  207. package/src/__tests__/agent-instructions.test.ts +237 -0
  208. package/src/__tests__/agent-loop-phase34.test.ts +513 -0
  209. package/src/__tests__/auth.test.ts +770 -0
  210. package/src/__tests__/bff-swa-auth.test.ts +275 -0
  211. package/src/__tests__/config.test.ts +295 -0
  212. package/src/__tests__/connector-functions-generator.test.ts +288 -0
  213. package/src/__tests__/connector-mock-server.test.ts +459 -0
  214. package/src/__tests__/connector-model-bff.test.ts +162 -0
  215. package/src/__tests__/cosmos-worktree-isolation.test.ts +149 -0
  216. package/src/__tests__/dev-seeds.test.ts +236 -0
  217. package/src/__tests__/dev.test.ts +296 -0
  218. package/src/__tests__/file-session.test.ts +98 -0
  219. package/src/__tests__/fixtures.ts +184 -0
  220. package/src/__tests__/functions-generator.test.ts +237 -0
  221. package/src/__tests__/init.test.ts +363 -0
  222. package/src/__tests__/jest-globals.d.ts +8 -0
  223. package/src/__tests__/machine.test.ts +371 -0
  224. package/src/__tests__/mcp.test.ts +253 -0
  225. package/src/__tests__/model-parser.test.ts +142 -0
  226. package/src/__tests__/multi-auth.test.ts +160 -0
  227. package/src/__tests__/nextjs-generator.test.ts +105 -0
  228. package/src/__tests__/openapi-generator.test.ts +43 -0
  229. package/src/__tests__/package-manager.test.ts +244 -0
  230. package/src/__tests__/plan-apply.test.ts +499 -0
  231. package/src/__tests__/python-uv.test.ts +48 -0
  232. package/src/__tests__/scaffold.test.ts +302 -0
  233. package/src/__tests__/string-utils.test.ts +75 -0
  234. package/src/__tests__/tsconfig.json +15 -0
  235. package/src/__tests__/ui-generator.test.ts +248 -0
  236. package/src/__tests__/zod-mock-generator.test.ts +132 -0
  237. package/src/cli/commands/add-auth.ts +853 -0
  238. package/src/cli/commands/add-connector.ts +159 -0
  239. package/src/cli/commands/cosmos-worktree-isolation.ts +130 -0
  240. package/src/cli/commands/create-model.ts +62 -0
  241. package/src/cli/commands/dev-seeds.ts +629 -0
  242. package/src/cli/commands/dev.ts +1252 -0
  243. package/src/cli/commands/index.ts +9 -0
  244. package/src/cli/commands/init.ts +3414 -0
  245. package/src/cli/commands/provision.ts +193 -0
  246. package/src/cli/commands/scaffold.ts +1081 -0
  247. package/src/cli/index.ts +352 -0
  248. package/src/core/config.ts +380 -0
  249. package/src/core/mock/connector-mock-server.ts +555 -0
  250. package/src/core/mock/zod-mock-generator.ts +205 -0
  251. package/src/core/operations/auth-operations.ts +360 -0
  252. package/src/core/operations/create-model.ts +191 -0
  253. package/src/core/operations/file-session.ts +222 -0
  254. package/src/core/operations/provision-operations.ts +297 -0
  255. package/src/core/operations/runtime.ts +258 -0
  256. package/src/core/operations/scaffold-apply.ts +106 -0
  257. package/src/core/operations/scaffold-machine.ts +77 -0
  258. package/src/core/operations/scaffold-plan.ts +215 -0
  259. package/src/core/project/agent-instructions.ts +167 -0
  260. package/src/core/project/agent-templates/AGENTS.md +504 -0
  261. package/src/core/project/agent-templates/CLAUDE.md +31 -0
  262. package/src/core/project/agent-templates/azure-functions.instructions.md +22 -0
  263. package/src/core/project/agent-templates/bff-routes.instructions.md +18 -0
  264. package/src/core/project/agent-templates/copilot-instructions.md +27 -0
  265. package/src/core/project/agent-templates/shared-models.instructions.md +72 -0
  266. package/src/core/project/artifacts.ts +205 -0
  267. package/src/core/project/boundaries.ts +170 -0
  268. package/src/core/project/capabilities.ts +193 -0
  269. package/src/core/project/drift.ts +202 -0
  270. package/src/core/project/infra.ts +196 -0
  271. package/src/core/project/manifest.ts +402 -0
  272. package/src/core/project/state.ts +77 -0
  273. package/src/core/project/validation.ts +295 -0
  274. package/src/core/project/workflows.ts +295 -0
  275. package/src/core/scaffold/auth-generator.ts +1824 -0
  276. package/src/core/scaffold/connector-functions-generator.ts +1133 -0
  277. package/src/core/scaffold/functions-generator.ts +972 -0
  278. package/src/core/scaffold/model-parser.ts +781 -0
  279. package/src/core/scaffold/native-schema-generator.ts +904 -0
  280. package/src/core/scaffold/nextjs-generator.ts +382 -0
  281. package/src/core/scaffold/openapi-generator.ts +212 -0
  282. package/src/core/scaffold/ui-generator.ts +1100 -0
  283. package/src/core/verify/index.ts +468 -0
  284. package/src/database/base-model.ts +184 -0
  285. package/src/database/client.ts +140 -0
  286. package/src/database/repository.ts +104 -0
  287. package/src/database/runtime-check.ts +25 -0
  288. package/src/index.ts +27 -0
  289. package/src/machine/contracts.ts +33 -0
  290. package/src/machine/errors.ts +45 -0
  291. package/src/machine/index.ts +690 -0
  292. package/src/mcp/index.ts +423 -0
  293. package/src/types/index.ts +182 -0
  294. package/src/utils/package-manager.ts +251 -0
  295. package/src/utils/python-uv.ts +96 -0
  296. package/src/version.ts +13 -0
package/README.ja.md CHANGED
@@ -2,104 +2,115 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/swallowkit.svg)](https://www.npmjs.com/package/swallowkit)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/swallowkit.svg)](https://www.npmjs.com/package/swallowkit)
5
+ [![VS Code Marketplace](https://img.shields.io/visual-studio-marketplace/v/himanago.swallowkit-vscode?label=VS%20Code%20Extension)](https://marketplace.visualstudio.com/items?itemName=himanago.swallowkit-vscode)
5
6
  [![license](https://img.shields.io/npm/l/swallowkit.svg)](./LICENSE)
6
7
 
7
8
  [English](./README.md) | 日本語
8
9
 
9
- **Azure 上の Next.js アプリケーション向けの型安全なスキーマ駆動開発ツールキット**
10
+ Next.js と Azure のための、スキーマ駆動アプリケーション開発ツールキットです。
10
11
 
11
- SwallowKit は、Zod スキーマを通じてエンドツーエンドの型安全性を維持しながら、外部の Azure Functions バックエンドを持つフルスタック Next.js アプリケーションを Static Web Apps で構築するための統合キットです。
12
+ SwallowKit は、共有された Zod スキーマを中心にして、保守しやすいフルスタックアプリケーションを Azure 上に構築するための scaffolding ツールです。1 つのスキーマ定義から、フロントエンドフォーム、BFF ルート、Azure Functions バックエンド、OpenAPI、インフラ定義、AI エージェント向けのプロジェクトメタデータなどを生成できます。
12
13
 
13
- Next.js の API ルートを BFF(Backend For Frontend)としての使用のみに制限し、ビジネスロジックは独立した Azure Functions にオフロードすることでクライアント・サーバー間の明確な分離を提供します。
14
+ フロントエンド、バックエンド、データベース、バリデーション、API 契約、デプロイ構成がばらばらになりがちな Next.js + Azure アプリケーション開発を、明示的な構成で整理することを目的としています。
14
15
 
15
- Zod スキーマから自動的に CRUD 操作を生成する Scaffold 機能を備え、一貫した型定義で Next.js (Azure Static Web Apps)、Azure Functions、Cosmos DB を組み合わせた構成で、CRUD コードの自動生成から本番デプロイ・CI/CD までをサポートします。
16
+ ## 🎯 なぜ SwallowKit か
16
17
 
17
- > **注意**: このプロジェクトは活発に開発中です。将来のバージョンでAPIが変更される可能性があります。
18
+ AI はアプリケーションコードをすばやく生成できます。フレームワークは複雑さをうまく隠してくれます。しかし、本番で運用するアプリケーションには、依然として明示的なアーキテクチャが必要です。
18
19
 
19
- ## ✨ 主な特徴
20
+ 一般的なフルスタックアプリケーションでは、同じドメインモデルが多くの場所に重複して現れます。
20
21
 
21
- - **🔄 Zod スキーマ共有** - フロントエンド、BFF、Azure Functions、Cosmos DB で同じスキーマを使用
22
- - **⚡ CRUD コード生成** - `swallowkit scaffold` で Azure Functions + Next.js コードを自動生成
23
- - **🛡️ 完全な型安全性** - クライアントからデータベースまでエンドツーエンド TypeScript
24
- - **🎯 BFF パターン** - Next.js API Routes が BFF レイヤーとして機能、自動検証・リソース名推論
25
- - **☁️ Azure 最適化** - Static Web Apps + Functions + Cosmos DB で最小コスト構成
26
- - **🚀 簡単デプロイ** - Bicep IaC + CI/CD ワークフローを自動生成
27
- - **🤖 AI フレンドリー** - 自動生成される指示ファイル(`AGENTS.md`、`CLAUDE.md`、`.github/copilot-instructions.md`)とレイヤー別ルールにより、GitHub Copilot・Claude Code・OpenAI Codex がプロジェクト規約に従ってコードを生成
22
+ - フロントエンドのフォーム型
23
+ - クライアント側バリデーション
24
+ - BFF のリクエスト・レスポンス型
25
+ - バックエンド DTO
26
+ - API 契約
27
+ - データベースエンティティ
28
+ - シードデータ
29
+ - インフラ・デプロイ構成
28
30
 
31
+ アプリケーションが大きくなるほど、これらの定義は少しずつずれていきます。SwallowKit は、スキーマを明示的な中心に置き、その周辺に必要なアプリケーション構造を生成することで、このずれを減らします。
29
32
 
30
- ## 📚 ドキュメント
33
+ **SwallowKit は、すべてを隠蔽するフルスタックフレームワークではありません。生成されたコードを読み、編集し、必要なら置き換えられることを重視した scaffolding ツールです。**
31
34
 
32
- **[SwallowKit ドキュメント](https://himanago.github.io/swallowkit/ja/)** で完全なドキュメントをご覧ください([English](https://himanago.github.io/swallowkit/en/) もあります)。
35
+ ## ✨ 主な機能
33
36
 
34
- - **[CLI リファレンス](https://himanago.github.io/swallowkit/ja/cli-reference)** - 全コマンドの詳細
35
- - **[Scaffold ガイド](https://himanago.github.io/swallowkit/ja/scaffold-guide)** - CRUD コード生成
36
- - **[Zod スキーマ共有ガイド](https://himanago.github.io/swallowkit/ja/zod-schema-sharing-guide)** - スキーマ設計
37
- - **[デプロイガイド](https://himanago.github.io/swallowkit/ja/deployment-guide)** - Azure へのデプロイ
37
+ - **Zod スキーマを中心にした型定義** とバリデーション共有
38
+ - **Next.js、BFF ルート、Azure Functions、UI コンポーネントの CRUD scaffolding**
39
+ - **Bicep による Azure 向けインフラ定義**
40
+ - **複数言語の Azure Functions バックエンド対応**(TypeScript、C#、Python)
41
+ - **ローカル開発支援** とシードデータ
42
+ - **AI / MCP 向けのプロジェクトメタデータ** とコマンド
43
+ - **VS Code 拡張機能**
38
44
 
39
- ## 🚀 クイックスタート
45
+ ## 🏗️ 想定アーキテクチャ
40
46
 
41
- ### 1. プロジェクト作成
47
+ SwallowKit は、次のような構成のアプリケーションを主な対象にしています。
42
48
 
43
- ```bash
44
- npx swallowkit init my-app
45
- # or
46
- pnpm dlx swallowkit init my-app
47
- cd my-app
48
- ```
49
+ - Next.js
50
+ - Azure Static Web Apps
51
+ - Azure Functions
52
+ - Azure Cosmos DB
53
+ - Azure Bicep
54
+ - GitHub Actions または Azure Pipelines
49
55
 
50
- 対話プロンプトで CI/CD プロバイダー、Cosmos DB モード、ネットワーク設定を選択します。フラグで直接指定するとプロンプトをスキップできます:
56
+ 標準構成では、BFF パターンを採用します。
51
57
 
52
- ```bash
53
- # 非対話モード(VS Code 拡張機能や自動化に便利)
54
- npx swallowkit init my-app --cicd github --cosmos-db-mode serverless --vnet outbound
58
+ ```
59
+ ブラウザー
60
+ |
61
+ Next.js フロントエンド
62
+ |
63
+ Next.js BFF ルート
64
+ |
65
+ Azure Functions API
66
+ |
67
+ Azure Cosmos DB
55
68
  ```
56
69
 
57
- | フラグ | 値 | 説明 |
58
- |------|-----|------|
59
- | `--cicd <provider>` | `github`, `azure`, `skip` | CI/CD プロバイダー |
60
- | `--cosmos-db-mode <mode>` | `freetier`, `serverless` | Cosmos DB 課金モード |
61
- | `--vnet <option>` | `outbound`, `none` | ネットワークセキュリティ |
70
+ BFF レイヤーを置くことで、フロントエンドをシンプルに保ちながら、バックエンドサービス、認証・認可、クラウドリソースとの接続を整理しやすくします。
62
71
 
63
- フラグを省略すると、その項目は対話プロンプトで質問されます。
72
+ > **注意**: このプロジェクトは活発に開発中です。将来のバージョンでAPIが変更される可能性があります。
64
73
 
65
- ### 2. モデルの作成
74
+ ## 📚 ドキュメント
66
75
 
67
- 複数のモデルをまとめて作成できます:
76
+ 詳しい使い方はドキュメントサイトを参照してください([English](https://himanago.github.io/swallowkit/en/) もあります)。
77
+
78
+ - **[はじめる](https://himanago.github.io/swallowkit/ja/getting-started)** - 最初のプロジェクトセットアップ
79
+ - **[基本概念](https://himanago.github.io/swallowkit/ja/concepts)** - スキーマ中心のアーキテクチャ
80
+ - **[Scaffold ガイド](https://himanago.github.io/swallowkit/ja/scaffold-guide)** - CRUD コード生成
81
+ - **[ローカル開発](https://himanago.github.io/swallowkit/ja/dev-guide)** - Dev サーバー、seeds、モックコネクタ
82
+ - **[デプロイガイド](https://himanago.github.io/swallowkit/ja/deployment-guide)** - Azure へのデプロイ
83
+ - **[AI / MCP ガイド](https://himanago.github.io/swallowkit/ja/ai-mcp-guide)** - AI エージェント統合
84
+ - **[コーディングエージェントガイド](https://himanago.github.io/swallowkit/ja/coding-agent-guide)** - 開発ライフサイクル、責務境界、外部プロセスとの合成
85
+ - **[認証](https://himanago.github.io/swallowkit/ja/auth-guide)** - 認証と認可
86
+ - **[コネクタ](https://himanago.github.io/swallowkit/ja/connector-guide)** - 外部データソース統合
87
+
88
+ ## 🚀 クイックスタート
89
+
90
+ 新しいプロジェクトを作成します。
68
91
 
69
92
  ```bash
70
- npx swallowkit create-model category todo
71
- # or
72
- pnpm dlx swallowkit create-model category todo
93
+ npx swallowkit init my-app
94
+ cd my-app
73
95
  ```
74
96
 
75
- これにより `shared/models/category.ts` と `shared/models/todo.ts` が生成されます。必要なフィールドを追加してカスタマイズ:
97
+ pnpm 11/12 は `pnpm dlx swallowkit init my-app` で作成し、以後 project 内で `pnpm exec swallowkit …` を使います。`npx` は npm を選択し、`--package-manager npm|pnpm` で明示指定できます。Node.js 22.14 以上が必要です。MCP は選択した manager で意図的に `latest` を参照します。[コマンド・workspace・security の詳細](docs/ja/package-managers.md)を参照してください。
76
98
 
77
- ```typescript
78
- // shared/models/category.ts
79
- import { z } from 'zod';
80
99
 
81
- export const category = z.object({
82
- id: z.string(),
83
- name: z.string().min(1).max(50),
84
- createdAt: z.string().optional(),
85
- updatedAt: z.string().optional(),
86
- });
100
+ モデルを作成し、スキーマを編集します。
87
101
 
88
- export type Category = z.infer<typeof category>;
102
+ ```bash
103
+ npx swallowkit create-model todo
89
104
  ```
90
105
 
91
- 親子関係を表現するには、ID 参照ではなく**ネスト型**で記述します:
92
-
93
106
  ```typescript
94
107
  // shared/models/todo.ts
95
108
  import { z } from 'zod';
96
- import { category } from './category';
97
109
 
98
110
  export const todo = z.object({
99
111
  id: z.string(),
100
112
  text: z.string().min(1).max(200),
101
113
  completed: z.boolean().default(false),
102
- category: category.optional(), // ネストオブジェクト(categoryId ではない)
103
114
  createdAt: z.string().optional(),
104
115
  updatedAt: z.string().optional(),
105
116
  });
@@ -107,139 +118,40 @@ export const todo = z.object({
107
118
  export type Todo = z.infer<typeof todo>;
108
119
  ```
109
120
 
110
- > **Tip**: ネスト型を使うことで型安全性が保たれ、関連データがドキュメント内にまとまって保存されます。これは Cosmos DB のドキュメントモデルに自然な形です。
111
-
112
- ### 3. CRUD コード生成
113
-
114
- ```bash
115
- npx swallowkit scaffold shared/models/todo.ts
116
- # or
117
- pnpm dlx swallowkit scaffold shared/models/todo.ts
118
- ```
119
-
120
- これで以下が自動生成されます:
121
- - ✅ Azure Functions (CRUD エンドポイント + Cosmos DB バインディング)
122
- - ✅ Next.js BFF API Routes (自動検証・リソース名推論)
123
- - ✅ React コンポーネント (型安全なフォーム)
124
-
125
- ### 4. 開発サーバー起動
121
+ CRUD コードを生成し、開発サーバーを起動します。
126
122
 
127
123
  ```bash
124
+ npx swallowkit scaffold todo
128
125
  npx swallowkit dev
129
- # or
130
- pnpm dlx swallowkit dev
131
126
  ```
132
127
 
133
- - Next.js: http://localhost:3000
134
- - Azure Functions: http://localhost:7071
128
+ Azure Functions、Next.js BFF ルート、React UI コンポーネントが、共有スキーマから型付きで生成されます。
135
129
 
136
- ### 5. フロントエンドから使用
130
+ ## 🤖 AI エージェントとの協調
137
131
 
138
- ```typescript
139
- import { api } from '@/lib/api/backend';
140
- import type { Todo } from '@/shared/models/todo';
132
+ SwallowKit は、AI コーディングエージェントがプロジェクト構造を理解し、公式の生成コマンドを通じて変更を行い、生成物を検証できるように、機械可読なプロジェクトメタデータとコマンドインターフェースを提供します。
141
133
 
142
- // 全件取得 - BFFエンドポイントを呼び出し
143
- const todos = await api.get<Todo[]>('/api/todos');
134
+ 目的は、AI に自由にファイルを書き換えさせることではなく、明示的なアーキテクチャ境界の中で安全に開発を支援させることです。
144
135
 
145
- // 作成 - バックエンドで検証
146
- const created = await api.post<Todo>('/api/todos', {
147
- text: '牛乳を買う',
148
- completed: false
149
- });
150
-
151
- // 更新 - バックエンドで検証
152
- const updated = await api.put<Todo>('/api/todos/123', { completed: true });
153
-
154
- // 削除
155
- await api.delete('/api/todos/123');
156
- ```
157
-
158
- ## 🏗️ アーキテクチャ
136
+ ## 📦 生成されるプロジェクト構成
159
137
 
160
138
  ```
161
- ┌─────────────────────────────────────────────────────────────┐
162
- │ Frontend (React) │
163
- │ - Client Components │
164
- │ - Server Components (SSR) │
165
- └──────────────────────────┬───────────────────────────────────┘
166
- │ api.post('/api/todos', data)
167
- ▼
168
- ┌─────────────────────────────────────────────────────────────┐
169
- │ BFF Layer (Next.js API Routes) │
170
- │ - Auto Schema Validation (Zod) │
171
- │ - Error Handling │
172
- └──────────────────────────┬───────────────────────────────────┘
173
- │ HTTP Request
174
- ▼
175
- ┌─────────────────────────────────────────────────────────────┐
176
- │ Azure Functions (Backend) │
177
- │ - HTTP Triggers (CRUD) │
178
- │ - Zod Validation (Re-check) │
179
- │ - Business Logic │
180
- │ - Cosmos DB Bindings │
181
- └──────────────────────────┬───────────────────────────────────┘
182
- │
183
- ▼
184
- ┌─────────────────────────────────────────────────────────────┐
185
- │ Azure Cosmos DB │
186
- │ - NoSQL Database │
187
- │ - Zod Schema Validation │
188
- └─────────────────────────────────────────────────────────────┘
139
+ .
140
+ ├── app/ # Next.js ページと BFF API ルート
141
+ ├── shared/
142
+ │ └── models/ # 共有 Zod スキーマ(単一のソース)
143
+ ├── functions/ # Azure Functions バックエンド
144
+ ├── infra/ # Bicep テンプレート
145
+ ├── lib/ # BFF ヘルパーと scaffold 設定
146
+ └── .swallowkit/ # SwallowKit プロジェクトメタデータ
189
147
  ```
190
148
 
191
- **重要なパターン:**
192
- - **BFF (Backend For Frontend)**: Next.js API Routes が Azure Functions へのプロキシ
193
- - **共有スキーマ**: Zod スキーマをフロントエンド・BFF・Functions・DB で共有
194
- - **型安全性**: Zod から TypeScript 型を自動推論
195
- - **マネージド ID**: サービス間の安全な接続(接続文字列不要)
149
+ ## 🔗 ステータス
196
150
 
197
- ## 📦 前提条件
151
+ SwallowKit は現在開発中です。API、プロジェクト構成、生成されるコードは変更される可能性があります。
198
152
 
199
- - Node.js 22.x
200
- - **pnpm**(推奨): `corepack enable` を実行するか、`npm install -g pnpm` でインストール
201
- - npm でも動作します — SwallowKit はパッケージマネージャーを自動検出します(pnpm がインストール済みなら常に pnpm を優先)
202
- - Azure Cosmos DB Emulator (ローカル開発用)
203
- - [公式ドキュメント (vNext 推奨)](https://learn.microsoft.com/ja-jp/azure/cosmos-db/emulator-linux)
204
- - Windows: [ダウンロード](https://aka.ms/cosmosdb-emulator)
205
- - Docker: `docker run -p 8081:8081 mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator`
153
+ フィードバック、Issue、小さなサンプルユースケースの共有を歓迎します。
206
154
 
207
- ## 🚀 Azure へのデプロイ
208
-
209
- Next.js アプリを standalone モードで Azure Static Web Apps にデプロイし、バックエンド操作のために独立した Azure Functions に接続します。
210
-
211
- **1. リソースをプロビジョニング (Bicep IaC)**
212
-
213
- ```bash
214
- npx swallowkit provision --resource-group my-app-rg --location japaneast
215
- # or
216
- pnpm dlx swallowkit provision --resource-group my-app-rg --location japaneast
217
- ```
218
-
219
- プロビジョニング完了後、CI/CD に必要なシークレット値がターミナルに表示されます。コピーしておいてください。
220
-
221
- **2. コードをプッシュ**
222
-
223
- ```bash
224
- git push origin main
225
- ```
226
-
227
- **3. 自動実行された CI/CD をキャンセル** — シークレット未登録のため失敗します。
228
-
229
- **4. 表示された値をシークレットに登録** — GitHub (Settings → Secrets) または Azure DevOps (Pipelines → Library) に登録します。
230
-
231
- **5. CI/CD ワークフローを手動で再実行します。**
232
-
233
- 詳細は **[デプロイガイド](https://himanago.github.io/swallowkit/ja/deployment-guide)** を参照してください。
234
-
235
- ## ライセンス
155
+ ## 📄 ライセンス
236
156
 
237
157
  MIT
238
-
239
- ## 🔗 関連リンク
240
-
241
- - [Azure Static Web Apps](https://learn.microsoft.com/ja-jp/azure/static-web-apps/)
242
- - [Azure Functions](https://learn.microsoft.com/ja-jp/azure/azure-functions/)
243
- - [Azure Cosmos DB](https://learn.microsoft.com/ja-jp/azure/cosmos-db/)
244
- - [Next.js](https://nextjs.org/)
245
- - [Zod](https://zod.dev/)