@ripla/godd-mcp 1.0.4-canary.8 → 1.0.4

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 (348) hide show
  1. package/README.md +89 -94
  2. package/dist/godd.cjs +349 -233
  3. package/dist/godd.js +2193 -838
  4. package/dist/index.js +152 -122
  5. package/{notes-api → notes/api}/.env.example +6 -1
  6. package/{notes-api → notes/api}/README.md +6 -5
  7. package/{notes-api → notes/api}/app/main.py +29 -2
  8. package/{notes-api → notes/api}/app/routers/auth.py +6 -1
  9. package/{notes-api → notes/api}/app/routers/issues.py +157 -1
  10. package/{notes-api → notes/api}/app/routers/pr.py +2 -2
  11. package/{notes-api → notes/api}/app/services/github_app_token.py +32 -1
  12. package/{notes-api → notes/api}/app/services/github_issues.py +101 -11
  13. package/{notes-api → notes/api}/app/services/github_pr.py +6 -1
  14. package/{notes-api → notes/api}/tests/test_github_app_token.py +49 -1
  15. package/{notes-api → notes/api}/tests/test_github_service.py +42 -0
  16. package/notes/api/tests/test_health.py +52 -0
  17. package/{notes-api → notes/api}/tests/test_issues.py +216 -0
  18. package/{notes-api → notes/api}/tests/test_pr.py +24 -0
  19. package/{notes-api → notes/api}/tests/test_pr_chain.py +19 -0
  20. package/{notes-api → notes/api}/uv.lock +178 -2
  21. package/notes/app/DESIGN.md +273 -0
  22. package/{notes-app → notes/app}/README.md +4 -1
  23. package/notes/app/docker/Dockerfile.e2e +19 -0
  24. package/notes/app/docker/Dockerfile.prod +15 -0
  25. package/notes/app/docker/Dockerfile.test +17 -0
  26. package/notes/app/e2e/file-tree.spec.ts +26 -0
  27. package/notes/app/e2e/file-view.spec.ts +25 -0
  28. package/notes/app/e2e/fixtures.ts +28 -0
  29. package/{notes-app → notes/app}/e2e/global-setup.ts +5 -7
  30. package/notes/app/e2e/login.spec.ts +25 -0
  31. package/notes/app/e2e/pages/login-page.ts +29 -0
  32. package/notes/app/e2e/pages/main-page.ts +29 -0
  33. package/notes/app/e2e/panel-resize-handle.spec.ts +213 -0
  34. package/{notes-app → notes/app}/eslint.config.js +9 -0
  35. package/{notes-app → notes/app}/package.json +0 -3
  36. package/{notes-app → notes/app}/pnpm-workspace.yaml +1 -0
  37. package/notes/app/src/components/CommentPanel.test.tsx +194 -0
  38. package/{notes-app → notes/app}/src/components/CommentPanel.tsx +119 -10
  39. package/notes/app/src/components/CommentSelectionPopover.tsx +26 -0
  40. package/notes/app/src/components/EditToolbar.test.tsx +102 -0
  41. package/{notes-app → notes/app}/src/components/EditToolbar.tsx +5 -54
  42. package/notes/app/src/components/FileInfoPanel.branch-tab.test.tsx +250 -0
  43. package/notes/app/src/components/FileInfoPanel.history-tab.test.tsx +146 -0
  44. package/notes/app/src/components/FileInfoPanel.test.tsx +101 -0
  45. package/{notes-app → notes/app}/src/components/FileInfoPanel.tsx +135 -20
  46. package/notes/app/src/components/IssueCommentThread.test.tsx +93 -0
  47. package/notes/app/src/components/IssueCommentThread.tsx +156 -0
  48. package/notes/app/src/components/IssueDetailView.test.tsx +1118 -0
  49. package/notes/app/src/components/IssueDetailView.tsx +476 -0
  50. package/notes/app/src/components/IssueList.test.tsx +545 -0
  51. package/notes/app/src/components/IssueList.tsx +374 -0
  52. package/{notes-app → notes/app}/src/components/LabelSelector.test.tsx +94 -8
  53. package/notes/app/src/components/LabelSelector.tsx +452 -0
  54. package/{notes-app → notes/app}/src/components/MarkdownEditor.tsx +140 -2
  55. package/notes/app/src/components/PanelResizeHandle.test.tsx +481 -0
  56. package/notes/app/src/components/PanelResizeHandle.tsx +96 -0
  57. package/{notes-app → notes/app}/src/hooks/useEditSession.test.ts +171 -23
  58. package/{notes-app → notes/app}/src/hooks/useEditSession.ts +49 -62
  59. package/notes/app/src/hooks/useMdUpLayout.test.ts +10 -0
  60. package/notes/app/src/hooks/useMdUpLayout.ts +27 -0
  61. package/notes/app/src/hooks/usePeriodicSync.test.ts +244 -0
  62. package/notes/app/src/hooks/usePeriodicSync.ts +83 -0
  63. package/notes/app/src/hooks/useResizablePanelWidth.test.ts +251 -0
  64. package/notes/app/src/hooks/useResizablePanelWidth.ts +167 -0
  65. package/{notes-app → notes/app}/src/lib/api.test.ts +81 -1
  66. package/{notes-app → notes/app}/src/lib/api.ts +98 -4
  67. package/notes/app/src/lib/commentAnchor.test.ts +22 -0
  68. package/notes/app/src/lib/commentAnchor.ts +28 -0
  69. package/notes/app/src/lib/commentHighlight.test.ts +110 -0
  70. package/notes/app/src/lib/commentHighlight.ts +44 -0
  71. package/notes/app/src/lib/github-sync.test.ts +126 -0
  72. package/notes/app/src/lib/github-sync.ts +89 -0
  73. package/notes/app/src/lib/issue-list-utils.test.ts +275 -0
  74. package/notes/app/src/lib/issue-list-utils.ts +135 -0
  75. package/notes/app/src/lib/issue-mobile-layout.test.ts +17 -0
  76. package/notes/app/src/lib/issue-mobile-layout.ts +20 -0
  77. package/notes/app/src/lib/issue-url-sync.test.ts +73 -0
  78. package/notes/app/src/lib/issue-url-sync.ts +43 -0
  79. package/notes/app/src/lib/main-page-default-view.test.ts +37 -0
  80. package/notes/app/src/lib/main-page-default-view.ts +15 -0
  81. package/notes/app/src/lib/resizable-panel.test.ts +199 -0
  82. package/notes/app/src/lib/resizable-panel.ts +136 -0
  83. package/notes/app/src/pages/LoginPage.test.tsx +17 -0
  84. package/notes/app/src/pages/MainPage.branch-modal.test.tsx +226 -0
  85. package/notes/app/src/pages/MainPage.issue-sync.test.tsx +145 -0
  86. package/notes/app/src/pages/MainPage.sidebar.test.tsx +361 -0
  87. package/{notes-app → notes/app}/src/pages/MainPage.tsx +406 -61
  88. package/{notes-app → notes/app}/src/pages/SettingsPage.test.tsx +32 -23
  89. package/{notes-app → notes/app}/src/pages/UserManagementPage.test.tsx +8 -18
  90. package/notes/app/src/test/mocks.ts +156 -0
  91. package/notes/app/src/test/render.tsx +27 -0
  92. package/package.json +3 -5
  93. package/notes-api/tests/test_health.py +0 -11
  94. package/notes-app/docker/Dockerfile.e2e +0 -14
  95. package/notes-app/docker/Dockerfile.prod +0 -12
  96. package/notes-app/docker/Dockerfile.test +0 -12
  97. package/notes-app/e2e/file-tree.spec.ts +0 -29
  98. package/notes-app/e2e/file-view.spec.ts +0 -24
  99. package/notes-app/e2e/login.spec.ts +0 -32
  100. package/notes-app/src/components/IssueDetailView.test.tsx +0 -201
  101. package/notes-app/src/components/IssueDetailView.tsx +0 -318
  102. package/notes-app/src/components/IssueList.test.tsx +0 -93
  103. package/notes-app/src/components/IssueList.tsx +0 -169
  104. package/notes-app/src/components/LabelSelector.tsx +0 -276
  105. package/notes-app/src/pages/LoginPage.test.tsx +0 -29
  106. package/stacks/django-vue.yaml +0 -33
  107. package/stacks/fastapi-react.yaml +0 -160
  108. package/stacks/flutter-firebase.yaml +0 -58
  109. package/stacks/nextjs-prisma.yaml +0 -33
  110. package/stacks/schema.json +0 -144
  111. package/templates/agents/architect.hbs +0 -183
  112. package/templates/agents/auto-documenter.hbs +0 -36
  113. package/templates/agents/backend-developer.hbs +0 -175
  114. package/templates/agents/code-reviewer.hbs +0 -29
  115. package/templates/agents/database-developer.hbs +0 -52
  116. package/templates/agents/debug-specialist.hbs +0 -39
  117. package/templates/agents/environment-setup.hbs +0 -41
  118. package/templates/agents/frontend-developer.hbs +0 -45
  119. package/templates/agents/integration-qa.hbs +0 -26
  120. package/templates/agents/performance-qa.hbs +0 -24
  121. package/templates/agents/pr-writer.hbs +0 -53
  122. package/templates/agents/quality-lead.hbs +0 -26
  123. package/templates/agents/requirements-analyst.hbs +0 -26
  124. package/templates/agents/security-analyst.hbs +0 -21
  125. package/templates/agents/security-reviewer.hbs +0 -20
  126. package/templates/agents/ssot-updater.hbs +0 -45
  127. package/templates/agents/technical-writer.hbs +0 -28
  128. package/templates/agents/unit-test-engineer.hbs +0 -19
  129. package/templates/agents/user-clone.hbs +0 -43
  130. package/templates/github-actions/aws/deploy-notes.yml.hbs +0 -117
  131. package/templates/github-actions/azure/deploy-notes.yml.hbs +0 -78
  132. package/templates/github-actions/gcp/deploy-notes.yml.hbs +0 -76
  133. package/templates/github-actions/vercel-railway/deploy-notes.yml.hbs +0 -49
  134. package/templates/mindsets/agent-stdio.hbs +0 -51
  135. package/templates/mindsets/dart.hbs +0 -39
  136. package/templates/mindsets/ddd-clean-architecture.hbs +0 -52
  137. package/templates/mindsets/electron.hbs +0 -41
  138. package/templates/mindsets/fastapi.hbs +0 -40
  139. package/templates/mindsets/flutter.hbs +0 -56
  140. package/templates/mindsets/kotlin.hbs +0 -46
  141. package/templates/mindsets/postgresql.hbs +0 -39
  142. package/templates/mindsets/python.hbs +0 -39
  143. package/templates/mindsets/react.hbs +0 -51
  144. package/templates/mindsets/swift.hbs +0 -46
  145. package/templates/mindsets/terraform.hbs +0 -53
  146. package/templates/mindsets/typescript.hbs +0 -34
  147. package/templates/mindsets/vite.hbs +0 -37
  148. package/templates/notes-compose.yml +0 -82
  149. package/templates/partials/cogito-geo.hbs +0 -84
  150. package/templates/partials/cogito-godd.hbs +0 -22
  151. package/templates/partials/cogito-grammar.hbs +0 -105
  152. package/templates/partials/cogito-particle.hbs +0 -76
  153. package/templates/partials/cogito-root-ai.hbs +0 -79
  154. package/templates/partials/cogito-root-arch.hbs +0 -75
  155. package/templates/partials/cogito-root-core.hbs +0 -75
  156. package/templates/partials/cogito-root-daily.hbs +0 -58
  157. package/templates/partials/cogito-root-dev.hbs +0 -71
  158. package/templates/partials/cogito-root-devops.hbs +0 -71
  159. package/templates/partials/cogito-root-framework.hbs +0 -80
  160. package/templates/partials/cogito-root-lang.hbs +0 -74
  161. package/templates/partials/godd-core.hbs +0 -50
  162. package/templates/partials/project-context.hbs +0 -52
  163. package/templates/partials/ssot-header.hbs +0 -40
  164. package/templates/partials/ssot-rules.hbs +0 -30
  165. package/templates/prompts/adr.hbs +0 -39
  166. package/templates/prompts/agent-dev-workflow.hbs +0 -34
  167. package/templates/prompts/analyze-report.hbs +0 -36
  168. package/templates/prompts/auto-documentation.hbs +0 -37
  169. package/templates/prompts/check.hbs +0 -52
  170. package/templates/prompts/commit.hbs +0 -96
  171. package/templates/prompts/dev.hbs +0 -127
  172. package/templates/prompts/docs-init.hbs +0 -101
  173. package/templates/prompts/docs-update.hbs +0 -51
  174. package/templates/prompts/git-workflow.hbs +0 -125
  175. package/templates/prompts/impact-analysis.hbs +0 -43
  176. package/templates/prompts/install.hbs +0 -40
  177. package/templates/prompts/new-branch.hbs +0 -61
  178. package/templates/prompts/notes-deploy.hbs +0 -138
  179. package/templates/prompts/pr-analyze.hbs +0 -44
  180. package/templates/prompts/pr-create.hbs +0 -125
  181. package/templates/prompts/push-execute.hbs +0 -83
  182. package/templates/prompts/push.hbs +0 -24
  183. package/templates/prompts/release-notes.hbs +0 -38
  184. package/templates/prompts/requirements-to-business-flow.hbs +0 -29
  185. package/templates/prompts/requirements-to-tickets.hbs +0 -26
  186. package/templates/prompts/review.hbs +0 -126
  187. package/templates/prompts/setup.hbs +0 -247
  188. package/templates/prompts/spec.hbs +0 -35
  189. package/templates/prompts/specification-to-tickets.hbs +0 -24
  190. package/templates/prompts/submit.hbs +0 -143
  191. package/templates/prompts/sync.hbs +0 -63
  192. package/templates/prompts/test-plan.hbs +0 -56
  193. package/templates/scripts/aws/terraform-backend-setup.sh.hbs +0 -149
  194. package/templates/terraform/aws/alb.tf.hbs +0 -58
  195. package/templates/terraform/aws/backend.tf.hbs +0 -10
  196. package/templates/terraform/aws/cloudfront.tf.hbs +0 -96
  197. package/templates/terraform/aws/ecr.tf.hbs +0 -30
  198. package/templates/terraform/aws/ecs.tf.hbs +0 -142
  199. package/templates/terraform/aws/iam.tf.hbs +0 -88
  200. package/templates/terraform/aws/local.tf.hbs +0 -34
  201. package/templates/terraform/aws/output.tf.hbs +0 -49
  202. package/templates/terraform/aws/provider.tf.hbs +0 -26
  203. package/templates/terraform/aws/rds.tf.hbs +0 -38
  204. package/templates/terraform/aws/s3.tf.hbs +0 -34
  205. package/templates/terraform/aws/secrets.tf.hbs +0 -53
  206. package/templates/terraform/aws/security_groups.tf.hbs +0 -81
  207. package/templates/terraform/aws/vpc.tf.hbs +0 -63
  208. package/templates/terraform/azure/backend.tf.hbs +0 -8
  209. package/templates/terraform/azure/iam.tf.hbs +0 -36
  210. package/templates/terraform/azure/main.tf.hbs +0 -203
  211. package/templates/terraform/azure/output.tf.hbs +0 -19
  212. package/templates/terraform/azure/provider.tf.hbs +0 -19
  213. package/templates/terraform/gcp/backend.tf.hbs +0 -6
  214. package/templates/terraform/gcp/iam.tf.hbs +0 -47
  215. package/templates/terraform/gcp/main.tf.hbs +0 -175
  216. package/templates/terraform/gcp/output.tf.hbs +0 -15
  217. package/templates/terraform/gcp/provider.tf.hbs +0 -19
  218. package/templates/terraform/vercel-railway/main.tf.hbs +0 -64
  219. package/templates/terraform/vercel-railway/output.tf.hbs +0 -11
  220. /package/{notes-api → notes/api}/.dockerignore +0 -0
  221. /package/{notes-api → notes/api}/alembic/README +0 -0
  222. /package/{notes-api → notes/api}/alembic/env.py +0 -0
  223. /package/{notes-api → notes/api}/alembic/script.py.mako +0 -0
  224. /package/{notes-api → notes/api}/alembic/versions/001_initial_notes_tables.py +0 -0
  225. /package/{notes-api → notes/api}/alembic/versions/002_add_performance_indexes.py +0 -0
  226. /package/{notes-api → notes/api}/alembic/versions/003_add_yjs_documents.py +0 -0
  227. /package/{notes-api → notes/api}/alembic/versions/004_add_comments.py +0 -0
  228. /package/{notes-api → notes/api}/alembic/versions/005_add_github_username.py +0 -0
  229. /package/{notes-api → notes/api}/alembic/versions/006_add_check_constraints.py +0 -0
  230. /package/{notes-api → notes/api}/alembic.ini +0 -0
  231. /package/{notes-api → notes/api}/app/__init__.py +0 -0
  232. /package/{notes-api → notes/api}/app/config.py +0 -0
  233. /package/{notes-api → notes/api}/app/database.py +0 -0
  234. /package/{notes-api → notes/api}/app/http_client.py +0 -0
  235. /package/{notes-api → notes/api}/app/models/__init__.py +0 -0
  236. /package/{notes-api → notes/api}/app/models/audit.py +0 -0
  237. /package/{notes-api → notes/api}/app/models/base.py +0 -0
  238. /package/{notes-api → notes/api}/app/models/collab.py +0 -0
  239. /package/{notes-api → notes/api}/app/models/comment.py +0 -0
  240. /package/{notes-api → notes/api}/app/models/session.py +0 -0
  241. /package/{notes-api → notes/api}/app/models/setting.py +0 -0
  242. /package/{notes-api → notes/api}/app/models/user.py +0 -0
  243. /package/{notes-api → notes/api}/app/path_validation.py +0 -0
  244. /package/{notes-api → notes/api}/app/routers/__init__.py +0 -0
  245. /package/{notes-api → notes/api}/app/routers/collab.py +0 -0
  246. /package/{notes-api → notes/api}/app/routers/comments.py +0 -0
  247. /package/{notes-api → notes/api}/app/routers/files.py +0 -0
  248. /package/{notes-api → notes/api}/app/routers/settings.py +0 -0
  249. /package/{notes-api → notes/api}/app/routers/tree.py +0 -0
  250. /package/{notes-api → notes/api}/app/routers/upload.py +0 -0
  251. /package/{notes-api → notes/api}/app/routers/users.py +0 -0
  252. /package/{notes-api → notes/api}/app/schemas/__init__.py +0 -0
  253. /package/{notes-api → notes/api}/app/schemas/auth.py +0 -0
  254. /package/{notes-api → notes/api}/app/schemas/user.py +0 -0
  255. /package/{notes-api → notes/api}/app/security.py +0 -0
  256. /package/{notes-api → notes/api}/app/services/__init__.py +0 -0
  257. /package/{notes-api → notes/api}/app/services/audit.py +0 -0
  258. /package/{notes-api → notes/api}/app/services/business_date.py +0 -0
  259. /package/{notes-api → notes/api}/app/services/collab.py +0 -0
  260. /package/{notes-api → notes/api}/app/services/github.py +0 -0
  261. /package/{notes-api → notes/api}/app/services/pr_chain.py +0 -0
  262. /package/{notes-api → notes/api}/app/startup.py +0 -0
  263. /package/{notes-api → notes/api}/docker/Dockerfile +0 -0
  264. /package/{notes-api → notes/api}/docker/Dockerfile.test +0 -0
  265. /package/{notes-api → notes/api}/pyproject.toml +0 -0
  266. /package/{notes-api → notes/api}/tests/conftest.py +0 -0
  267. /package/{notes-api → notes/api}/tests/test_audit.py +0 -0
  268. /package/{notes-api → notes/api}/tests/test_auth.py +0 -0
  269. /package/{notes-api → notes/api}/tests/test_business_date.py +0 -0
  270. /package/{notes-api → notes/api}/tests/test_collab.py +0 -0
  271. /package/{notes-api → notes/api}/tests/test_comments.py +0 -0
  272. /package/{notes-api → notes/api}/tests/test_config_ssl.py +0 -0
  273. /package/{notes-api → notes/api}/tests/test_config_warnings.py +0 -0
  274. /package/{notes-api → notes/api}/tests/test_files.py +0 -0
  275. /package/{notes-api → notes/api}/tests/test_path_validation.py +0 -0
  276. /package/{notes-api → notes/api}/tests/test_security.py +0 -0
  277. /package/{notes-api → notes/api}/tests/test_settings.py +0 -0
  278. /package/{notes-api → notes/api}/tests/test_tree.py +0 -0
  279. /package/{notes-api → notes/api}/tests/test_upload.py +0 -0
  280. /package/{notes-api → notes/api}/tests/test_users.py +0 -0
  281. /package/{notes-app → notes/app}/.dockerignore +0 -0
  282. /package/{notes-app → notes/app}/index.html +0 -0
  283. /package/{notes-app → notes/app}/nginx.conf +0 -0
  284. /package/{notes-app → notes/app}/package-lock.json +0 -0
  285. /package/{notes-app → notes/app}/playwright.config.ts +0 -0
  286. /package/{notes-app → notes/app}/pnpm-lock.yaml +0 -0
  287. /package/{notes-app → notes/app}/src/App.tsx +0 -0
  288. /package/{notes-app → notes/app}/src/components/BranchSelectorModal.tsx +0 -0
  289. /package/{notes-app → notes/app}/src/components/CodeBlockView.test.tsx +0 -0
  290. /package/{notes-app → notes/app}/src/components/CodeBlockView.tsx +0 -0
  291. /package/{notes-app → notes/app}/src/components/CollabStatus.tsx +0 -0
  292. /package/{notes-app → notes/app}/src/components/DiffPreview.tsx +0 -0
  293. /package/{notes-app → notes/app}/src/components/DrawioEditor.tsx +0 -0
  294. /package/{notes-app → notes/app}/src/components/DrawioViewer.tsx +0 -0
  295. /package/{notes-app → notes/app}/src/components/ErrorBoundary.test.tsx +0 -0
  296. /package/{notes-app → notes/app}/src/components/ErrorBoundary.tsx +0 -0
  297. /package/{notes-app → notes/app}/src/components/FileContentView.tsx +0 -0
  298. /package/{notes-app → notes/app}/src/components/FileContextMenu.test.tsx +0 -0
  299. /package/{notes-app → notes/app}/src/components/FileContextMenu.tsx +0 -0
  300. /package/{notes-app → notes/app}/src/components/FileDialogs.test.tsx +0 -0
  301. /package/{notes-app → notes/app}/src/components/FileDialogs.tsx +0 -0
  302. /package/{notes-app → notes/app}/src/components/SaveStatusIndicator.test.tsx +0 -0
  303. /package/{notes-app → notes/app}/src/components/SaveStatusIndicator.tsx +0 -0
  304. /package/{notes-app → notes/app}/src/components/Skeleton.tsx +0 -0
  305. /package/{notes-app → notes/app}/src/components/SpreadsheetEditor.test.tsx +0 -0
  306. /package/{notes-app → notes/app}/src/components/SpreadsheetEditor.tsx +0 -0
  307. /package/{notes-app → notes/app}/src/components/TextEditor.tsx +0 -0
  308. /package/{notes-app → notes/app}/src/components/ToastContainer.tsx +0 -0
  309. /package/{notes-app → notes/app}/src/components/TreeNode.tsx +0 -0
  310. /package/{notes-app → notes/app}/src/contexts/AuthContext.test.tsx +0 -0
  311. /package/{notes-app → notes/app}/src/contexts/AuthContext.tsx +0 -0
  312. /package/{notes-app → notes/app}/src/contexts/ToastContext.test.ts +0 -0
  313. /package/{notes-app → notes/app}/src/contexts/ToastContext.tsx +0 -0
  314. /package/{notes-app → notes/app}/src/hooks/useAutoSave.test.ts +0 -0
  315. /package/{notes-app → notes/app}/src/hooks/useAutoSave.ts +0 -0
  316. /package/{notes-app → notes/app}/src/hooks/useCollaboration.ts +0 -0
  317. /package/{notes-app → notes/app}/src/hooks/useComments.ts +0 -0
  318. /package/{notes-app → notes/app}/src/hooks/useYText.ts +0 -0
  319. /package/{notes-app → notes/app}/src/lib/branch-diff.test.ts +0 -0
  320. /package/{notes-app → notes/app}/src/lib/branch-diff.ts +0 -0
  321. /package/{notes-app → notes/app}/src/lib/created-file.test.ts +0 -0
  322. /package/{notes-app → notes/app}/src/lib/created-file.ts +0 -0
  323. /package/{notes-app → notes/app}/src/lib/csv-utils.test.ts +0 -0
  324. /package/{notes-app → notes/app}/src/lib/csv-utils.ts +0 -0
  325. /package/{notes-app → notes/app}/src/lib/deepLinkPathToSearch.test.ts +0 -0
  326. /package/{notes-app → notes/app}/src/lib/deepLinkPathToSearch.ts +0 -0
  327. /package/{notes-app → notes/app}/src/lib/draft-storage.test.ts +0 -0
  328. /package/{notes-app → notes/app}/src/lib/draft-storage.ts +0 -0
  329. /package/{notes-app → notes/app}/src/lib/mermaid-render.ts +0 -0
  330. /package/{notes-app → notes/app}/src/lib/postLoginRedirect.test.ts +0 -0
  331. /package/{notes-app → notes/app}/src/lib/postLoginRedirect.ts +0 -0
  332. /package/{notes-app → notes/app}/src/lib/tree-utils.ts +0 -0
  333. /package/{notes-app → notes/app}/src/lib/user-colors.ts +0 -0
  334. /package/{notes-app → notes/app}/src/lib/xlsx-utils.test.ts +0 -0
  335. /package/{notes-app → notes/app}/src/lib/xlsx-utils.ts +0 -0
  336. /package/{notes-app → notes/app}/src/main.tsx +0 -0
  337. /package/{notes-app → notes/app}/src/pages/LoginPage.tsx +0 -0
  338. /package/{notes-app → notes/app}/src/pages/MainPage.insertChildEntry.test.ts +0 -0
  339. /package/{notes-app → notes/app}/src/pages/SettingsPage.tsx +0 -0
  340. /package/{notes-app → notes/app}/src/pages/UserManagementPage.tsx +0 -0
  341. /package/{notes-app → notes/app}/src/styles/globals.css +0 -0
  342. /package/{notes-app → notes/app}/src/types.ts +0 -0
  343. /package/{notes-app → notes/app}/src/vite-env.d.ts +0 -0
  344. /package/{notes-app → notes/app}/tsconfig.json +0 -0
  345. /package/{notes-app → notes/app}/tsconfig.node.json +0 -0
  346. /package/{notes-app → notes/app}/vite.config.js +0 -0
  347. /package/{notes-app → notes/app}/vite.config.ts +0 -0
  348. /package/{notes-app → notes/app}/vitest.config.ts +0 -0
@@ -1,52 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Routing Guide
16
-
17
- - Auto-activation: Keywords=DB/schema/SQL/Postgres/migration/Alembic/index/foreign key/data migration/backfill/query optimization, Situation=spec additions with DB changes/performance degradation investigation, Complexity=DDL changes/data migration/compatibility breaking
18
- - Success criteria: Compatibility/migration/rollback documented, migration can be safely applied
19
- - Best combination: `backend-developer`(Usecase/API) + `security-reviewer`(leaks/permissions) + `integration-qa`(flow verification)
20
-
21
- # Role
22
-
23
- As a Senior DB Engineer, support Postgres schema design and Alembic migration design/implementation for `{{backend.root_dir}}`.
24
- Maintain DDD dependency direction ({{backend.dependency_direction}}), confine DB changes to Infrastructure, and ensure compatibility and operability.
25
-
26
- ## Pre-Work Preparation
27
-
28
- Before starting work, read and understand the `AGENTS.md` at the project root and all files it references.
29
-
30
- - AGENTS.md
31
- - .instruction/00_universal/thinking.md
32
- - .instruction/00_universal/quality.md
33
- - .instruction/00_universal/communication.md
34
- - .instruction/02_project/architecture.md
35
- - .instruction/02_project/domain.md
36
- - .instruction/02_project/patterns.md
37
- - docs/003_requirements/spec/README.md
38
- - docs/003_requirements/db.template.md
39
- - docs/003_requirements/error-codes.template.md
40
-
41
- ## DB Change Policy
42
-
43
- - **Breaking changes are prohibited by default** (when unavoidable, migration plan and rollback plan must be in Spec)
44
- - Column additions are optional by default for backward compatibility (staged migration)
45
- - Design indexes based on "expected queries", avoid unnecessary index proliferation
46
- - Design data migration considering downtime, load, and failure recovery first (backfill/staged application)
47
-
48
- ## Deliverables (Minimum)
49
-
50
- - **DB Spec**: Satisfies `docs/003_requirements/db.template.md` (DDL diffs, compatibility, migration/rollback, indexes, application steps)
51
- - **Migration**: Alembic revision and application steps (both Docker and local)
52
- - **Impact scope**: Impact on existing APIs/features (especially search, list, aggregation)
@@ -1,39 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Routing Guide
16
-
17
- - Auto-activation: Keywords=bug/defect/reproduce/regression/crash/exception/log/timeout/freeze, Situation=expected vs actual mismatch, Complexity=cross-module/intermittent/environment-dependent
18
- - Success criteria: Shortest reproduction steps established, cause is explainable, recurrence prevention (test or monitoring) is in place
19
-
20
- # Role
21
-
22
- Don't "fix by guessing" — converge reliably in order: reproduce→hypothesize→verify→minimal fix→reproduction test.
23
-
24
- ## Pre-Work Preparation (Required Reading)
25
-
26
- - AGENTS.md
27
- - .instruction/01_specialties/investigation-debug.md
28
- - docs/006_development_workflow/impact-analysis.template.md
29
- - docs/006_development_workflow/test-plan.template.md
30
-
31
- ## Investigation Report (Minimum Format)
32
-
33
- - Symptom / Expected vs Actual
34
- - Reproduction steps (shortest)
35
- - Environment (OS/version/startup procedure)
36
- - Cause (with evidence)
37
- - Fix details
38
- - Verification (test/manual steps)
39
- - Remaining risks
@@ -1,41 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- # Role
16
-
17
- Agent responsible for **environment setup, reproducibility, and onboarding** for this project.
18
-
19
- ## Goals
20
-
21
- - Create a state where even beginners can run locally without confusion, in **1 command**
22
- - Use Windows as the primary while ensuring equivalent behavior on macOS/WSL
23
- - Consolidate dependency installation steps and configuration SSOT in `docs/`, without broken links or contradictions
24
-
25
- ## Constraints
26
-
27
- - `.github/workflows` is **prohibited from creation/editing/addition** operationally (quality gates ensured by local scripts)
28
- - Don't commit secrets to the repository (`.env` etc.)
29
-
30
- ## What to Do
31
-
32
- - Maintain the preflight script as the canonical entry point
33
- - Update `docs/007_guides/` and `docs/007_guides/`, making procedures SSOT
34
- - Ensure external tools can be launched according to configuration file declarations
35
-
36
- ## Output Format
37
-
38
- - Change summary
39
- - Impact scope
40
- - Executed commands and results
41
- - Remaining risks / Next actions
@@ -1,45 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Routing Guide
16
-
17
- - Auto-activation: Keywords=Electron/React/TypeScript/Vite/Tailwind/Radix/screen/routing/form/UX/IPC/preload, Situation=UI changes/behavior changes/communication changes, Complexity=multiple components/pages/crossing IPC
18
- - Success criteria: UI and logic separated, loading/error/empty/normal states covered, `{{frontend.build_command}}` passes
19
- - Best combination: `requirements-analyst`(spec clarification) + `backend-developer`(API) + `integration-qa`(integration) + `security-reviewer`(input/leaks)
20
-
21
- # Role
22
-
23
- As a Senior Frontend Engineer, implement UI with Electron + React + TypeScript.
24
- Screens focus on rendering; side effects (fetching/saving/IPC) are delegated to hooks/services.
25
-
26
- ## Pre-Work Preparation (Required Reading)
27
-
28
- - AGENTS.md
29
- - .instruction/00_universal/thinking.md
30
- - .instruction/00_universal/quality.md
31
- - .instruction/00_universal/communication.md
32
- - .instruction/02_project/tech-stack.md
33
- - docs/003_requirements/spec/README.md
34
- - docs/003_requirements/ui.template.md
35
- - docs/003_requirements/api.template.md
36
- - docs/006_development_workflow/impact-analysis.template.md
37
- - docs/006_development_workflow/test-plan.template.md
38
-
39
- ## Implementation Guide (Frontend)
40
-
41
- - **Quality gate (minimum)**: `{{frontend.build_command}}`
42
- - **UI/Logic separation**: Fetching/saving/IPC goes to hooks/services. Components stick to props + rendering
43
- - **State**: Cover loading / error / empty / normal
44
- - **TypeScript**: No `any`, `unknown`→narrow down. Type suppression (`ts-ignore`) is prohibited by default
45
- - **Security**: Don't expose secrets in logs or UI. Design inputs with validation as a prerequisite
@@ -1,26 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Routing Guide
16
-
17
- - Auto-activation: Keywords=integration/connectivity/end-to-end/E2E/startup verification/IPC/JSON-RPC/CORS, Situation=changes spanning multiple components, Complexity=startup procedures/env vars/communication involved
18
- - Success criteria: Major flows verified with shortest steps, troubleshooting steps remain on failure
19
-
20
- ## Verification Template (Required)
21
-
22
- Based on `docs/006_development_workflow/test-plan.template.md`, fill in at minimum:
23
- - Target features/modules
24
- - Normal/Error/Boundary cases
25
- - Manual verification steps and expected results
26
- - Known constraints (mocks/unimplemented)
@@ -1,24 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Routing Guide
16
-
17
- - Auto-activation: Keywords=performance/slow/heavy/freeze/memory leak/CPU/rendering/query/timeout, Situation=perceived/measured degradation, Complexity=cross-module
18
- - Success criteria: Current measurement→bottleneck identification→improvement proposal→re-measurement, all explainable
19
-
20
- ## Perspectives (Current Stack)
21
-
22
- - Frontend (`{{frontend.root_dir}}`): Excessive re-renders, heavy lists, unnecessary IPC/HTTP, image/file processing
23
- - Backend (`{{backend.root_dir}}`): N+1, heavy JOINs, unnecessary full fetches, external I/O waits
24
- - DB (Postgres): Missing indexes, query plans, lock contention
@@ -1,53 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- # Role
16
-
17
- This Agent's **sole responsibility is "making PR bodies reviewable"**.
18
- It does not implement; it focuses on text generation and information organization (providing evidence) for PR creation.
19
-
20
- ## Input (Required)
21
-
22
- - Target branch name (defaults to current branch)
23
- - Base branch (defaults to `main`)
24
- - Requested purpose/completion criteria (user's natural language is OK)
25
-
26
- ## Facts to Collect (Git as Source of Truth)
27
-
28
- Retrieve the following via **Git MCP / git commands** and build the body from facts, not guesses.
29
- - `git status` (is the working tree clean?)
30
- - `git log --oneline <base>..HEAD` (what was done in each commit)
31
- - `git diff --name-only <base>..HEAD` (changed file list)
32
- - `git diff <base>..HEAD` (key diffs)
33
- - Test/quality gate commands executed and their results (quote logs if available)
34
-
35
- ## Generation Rules (PR Optimization)
36
-
37
- - **Title**: ~50 chars, change subject/purpose is unambiguous
38
- - **Body**: Fully compliant with `docs/006_development_workflow/pr.template.md`
39
- - **Changes**:
40
- - Write **"why"** (background/purpose) briefly before "what"
41
- - Change points in **bullet lists** at review-friendly granularity
42
- - **Verification**:
43
- - List execution commands **as-is**
44
- - If not executable, document "reason/alternative steps/remaining risks"
45
- - **Impact scope**:
46
- - Explicitly state Front/Back/Agent/Infra impact
47
- - If there are breaking changes, document migration/rollback
48
-
49
- ## Output
50
-
51
- 1. PR title proposal (one)
52
- 2. PR body (template-compliant, copy-paste ready)
53
- 3. Reviewer checkpoints (2-5 items)
@@ -1,26 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Quality Gate (Minimum)
16
-
17
- - **Spec**: Sufficient specifications exist in `docs/003_requirements/spec/` and match implementation
18
- - **Impact scope**: `docs/006_development_workflow/impact-analysis.template.md` is filled
19
- - **Test plan**: `docs/006_development_workflow/test-plan.template.md` is filled
20
- - **Compatibility/Migration**: If breaking changes exist, migration/rollback are documented
21
- {{#if frontend.build_command}}- **Frontend changes**: `{{frontend.build_command}}` passes{{/if}}
22
-
23
- ## Output
24
-
25
- - Release decision (Go/No-Go) with rationale
26
- - Unresolved risks and next actions (who verifies what)
@@ -1,26 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Success Criteria
16
-
17
- - Purpose/completion criteria are measurably defined and distilled into **implementable-granularity Spec** (`docs/003_requirements/spec/`)
18
- - If breaking changes/migration/rollback are needed, decision-making materials are prepared upfront
19
-
20
- ## Output (Minimum)
21
-
22
- - Purpose/completion criteria
23
- - Current understanding (assumptions)
24
- - Unclear points (questions)
25
- - Options (standard/conservative/bold) with recommendation
26
- - Draft based on `docs/003_requirements/spec/*-template.md` (API/UI/DB/Feature/Usecase)
@@ -1,21 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Analysis Perspectives
16
-
17
- - Input validation (types/validation/boundary values)
18
- - Authentication/Authorization (policy when needed)
19
- - Information leakage (logs/error messages/screen display)
20
- - External I/O (file/OS/network) failure behavior
21
- - Error code design (`docs/003_requirements/error-codes.template.md`)
@@ -1,20 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Review Criteria (Minimum)
16
-
17
- - Secrets do not appear in logs/UI/exceptions
18
- - Inputs assume type + validation with defined failure paths
19
- - Errors at user-actionable granularity, internal details go to logs
20
- - If breaking changes/permission changes exist, migration/rollback are in Spec
@@ -1,45 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- # Role
16
-
17
- This Agent's **sole responsibility is SSOT updates**.
18
- It receives the "latest Spec (input)" and updates `docs/003_requirements/spec/`.
19
-
20
- ## Input (Required)
21
-
22
- - Latest Spec (body text, diffs are OK)
23
- - Corresponding implementation file candidates (as known)
24
- - Corresponding test command candidates (as known)
25
-
26
- ## Acceptance Criteria (MUST)
27
-
28
- - **Traceability (Spec→Implementation→Test)** is added/updated in `docs/003_requirements/spec/index.md`
29
- - Added/updated links point to existing files (file paths exist)
30
- - If test commands don't exist/aren't ready, **document the fact** and alternative verification
31
- - If ambiguity remains in Spec (terminology/completion criteria/exceptions), formalize as questions
32
-
33
- ## Work Procedure (Standard)
34
-
35
- 1. Read input Spec, determine category (Feature/API/UI/Usecase/DB/Error)
36
- 2. Append to relevant section in `docs/003_requirements/spec/index.md` (create if missing)
37
- 3. List referenced implementation files/test commands and verify existence
38
- 4. Fill in Spec template's "Implementation Reference" and "Test Reference" (mark missing as TODO)
39
- 5. Check for contradictions between added/updated Specs (same terminology/completion criteria)
40
-
41
- ## Output
42
-
43
- - List of changed Spec files
44
- - Added/updated traceability links (Spec→Implementation→Test)
45
- - Undetermined items (questions) / Remaining risks
@@ -1,28 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- # Role
16
-
17
- Maintain the SSOT for Spec-Driven Development, preparing "implementable-granularity specifications" and "operationally necessary templates".
18
-
19
- ## References (SSOT)
20
-
21
- - Spec: `docs/003_requirements/spec/`
22
- - Templates: `docs/006_development_workflow/`
23
- - Core guidelines: `AGENTS.md`
24
-
25
- ## Deliverables
26
-
27
- - Spec additions/updates (API/UI/DB/Feature/Usecase/Error Codes)
28
- - Impact analysis/Test plans/ADR/PR/Release notes (`docs/006_development_workflow` format)
@@ -1,19 +0,0 @@
1
- {{> ssot-header }}
2
-
3
- {{> godd-core }}
4
-
5
- {{> ssot-rules }}
6
-
7
- {{> project-context }}
8
-
9
- {{> cogito-grammar }}
10
- {{> cogito-root-core }}
11
- {{> cogito-particle }}
12
- {{> cogito-godd }}
13
- {{> cogito-root-dev }}
14
-
15
- ## Policy
16
-
17
- - Bug fixes follow **reproduction test → fix → re-run** as the standard
18
- - Cover at the appropriate nearby layer (Backend: Domain/Usecase, Front: hooks/pure functions)
19
- - For large changes, fix perspectives first using `docs/006_development_workflow/test-plan.template.md`
@@ -1,43 +0,0 @@
1
- ## 運用規約(SSOT)
2
-
3
- ### このドキュメントの位置付け
4
- 開発運用規約のSSOT(Single Source of Truth)です。
5
-
6
- - **対象**: ブランチ運用 / コミット運用 / PR運用 / 品質ゲートの最低ライン
7
- - **非対象**: プロダクトの機能仕様そのもの
8
-
9
- ### 用語定義
10
- - **ターミナル不要**: 人間がターミナルでコマンドを打つ必要が一切ないこと
11
- - **1コミット=1責務**: ステージングされた変更が複数ドメインに跨がないこと
12
- - **Front/Backブランチ分離**: 画面実装を含むタスクでは、フロントとバックで別ブランチ、原則別PRに分けること
13
-
14
- ### 絶対ルール(MUST)
15
-
16
- #### MUST-1: 人間にターミナル操作を要求しない
17
- 依頼者が行う操作は「自然言語で依頼」「PR上でレビュー」のみ。
18
-
19
- #### MUST-2: 画面実装を含む場合、Front/Backブランチを必ず分ける
20
- - フロント: `feat/<slug>-frontend`
21
- - バック: `feat/<slug>-backend`
22
-
23
- #### MUST-3: 1コミット=1責務(混在コミット禁止)
24
- - **hard scope**: `{{frontend.root_dir}}` と `{{backend.root_dir}}` は同一コミット不可
25
- - **soft scope**: `docs` / `scripts` は同一コミットに同梱可能
26
-
27
- #### MUST-4: CI/CDファイルを作成/編集/追加しない
28
-
29
- ### 品質ゲート(最低ライン / MUST)
30
- {{#if quality_gate.frontend}}
31
- - **フロント**: `{{quality_gate.frontend}}`
32
- {{/if}}
33
- {{#if quality_gate.backend}}
34
- - **バックエンド**: `{{quality_gate.backend}}`
35
- {{/if}}
36
-
37
- ### 標準手順
38
- 1. 開発者は目的+完了条件を依頼
39
- 2. Agentは依頼内容をSpecへ落とす
40
- 3. Agentは影響範囲を調査し、必要ならブランチ/PRを分割
41
- 4. Agentは preflight → 実装 → 品質ゲート → テストを実行
42
- 5. Agentは責務単位でコミット分割
43
- 6. AgentはPR本文とPR作成メタを提示
@@ -1,117 +0,0 @@
1
- name: Deploy GoDD Notes
2
-
3
- on:
4
- push:
5
- branches: [main]
6
- paths:
7
- - 'notes-api/**'
8
- - 'notes-app/**'
9
- workflow_dispatch:
10
-
11
- permissions:
12
- id-token: write
13
- contents: read
14
-
15
- env:
16
- AWS_REGION: {{region}}
17
- AWS_ACCOUNT_ID: "{{accountId}}"
18
- ECR_REPOSITORY: godd-notes-api
19
- ECS_CLUSTER: godd-notes
20
- ECS_SERVICE: notes-api
21
- S3_BUCKET: godd-notes-{{accountId}}
22
- CLOUDFRONT_DISTRIBUTION_ID: $\{{ secrets.CLOUDFRONT_DISTRIBUTION_ID }}
23
-
24
- jobs:
25
- changes:
26
- runs-on: ubuntu-latest
27
- outputs:
28
- api: $\{{ steps.filter.outputs.api }}
29
- app: $\{{ steps.filter.outputs.app }}
30
- steps:
31
- - uses: actions/checkout@v4
32
- - uses: dorny/paths-filter@v3
33
- id: filter
34
- with:
35
- filters: |
36
- api:
37
- - 'notes-api/**'
38
- app:
39
- - 'notes-app/**'
40
-
41
- deploy-api:
42
- needs: changes
43
- if: needs.changes.outputs.api == 'true'
44
- runs-on: ubuntu-latest
45
- steps:
46
- - uses: actions/checkout@v4
47
-
48
- - name: Configure AWS credentials
49
- uses: aws-actions/configure-aws-credentials@v4
50
- with:
51
- role-to-assume: arn:aws:iam::{{accountId}}:role/github-actions-{{env}}
52
- aws-region: {{region}}
53
-
54
- - name: Login to ECR
55
- id: ecr-login
56
- uses: aws-actions/amazon-ecr-login@v2
57
-
58
- - name: Build and push Docker image
59
- env:
60
- ECR_REGISTRY: $\{{ steps.ecr-login.outputs.registry }}
61
- IMAGE_TAG: $\{{ github.sha }}
62
- run: |
63
- docker build --platform linux/arm64 \
64
- -t $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG \
65
- -t $ECR_REGISTRY/$ECR_REPOSITORY:latest \
66
- -f notes-api/docker/Dockerfile \
67
- notes-api/
68
- docker push $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
69
- docker push $ECR_REGISTRY/$ECR_REPOSITORY:latest
70
-
71
- - name: Deploy to ECS
72
- run: |
73
- aws ecs update-service \
74
- --cluster $ECS_CLUSTER \
75
- --service $ECS_SERVICE \
76
- --force-new-deployment
77
- aws ecs wait services-stable \
78
- --cluster $ECS_CLUSTER \
79
- --services $ECS_SERVICE
80
-
81
- deploy-app:
82
- needs: changes
83
- if: needs.changes.outputs.app == 'true'
84
- runs-on: ubuntu-latest
85
- steps:
86
- - uses: actions/checkout@v4
87
-
88
- - uses: pnpm/action-setup@v6
89
- with:
90
- version: 10.15.0
91
-
92
- - uses: actions/setup-node@v6
93
- with:
94
- node-version: 22
95
- package-manager-cache: false
96
-
97
- - name: Install and build
98
- working-directory: notes-app
99
- run: |
100
- pnpm install --frozen-lockfile
101
- pnpm build
102
-
103
- - name: Configure AWS credentials
104
- uses: aws-actions/configure-aws-credentials@v4
105
- with:
106
- role-to-assume: arn:aws:iam::{{accountId}}:role/github-actions-{{env}}
107
- aws-region: {{region}}
108
-
109
- - name: Deploy to S3
110
- working-directory: notes-app
111
- run: aws s3 sync dist/ s3://$S3_BUCKET --delete
112
-
113
- - name: Invalidate CloudFront
114
- run: |
115
- aws cloudfront create-invalidation \
116
- --distribution-id $CLOUDFRONT_DISTRIBUTION_ID \
117
- --paths "/*"