proagents 1.0.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.
Files changed (444) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +170 -0
  3. package/bin/proagents.js +90 -0
  4. package/lib/commands/feature.js +125 -0
  5. package/lib/commands/fix.js +60 -0
  6. package/lib/commands/help.js +76 -0
  7. package/lib/commands/init.js +64 -0
  8. package/lib/commands/status.js +91 -0
  9. package/lib/index.js +28 -0
  10. package/package.json +52 -0
  11. package/proagents/.learning/global/common-patterns.json +77 -0
  12. package/proagents/.learning/global/user-preferences.json +76 -0
  13. package/proagents/.learning/projects/example-project/corrections.json +99 -0
  14. package/proagents/.learning/projects/example-project/feedback.json +109 -0
  15. package/proagents/.learning/projects/example-project/metrics.json +101 -0
  16. package/proagents/.learning/projects/example-project/patterns.json +102 -0
  17. package/proagents/.learning/schemas/README.md +48 -0
  18. package/proagents/.learning/schemas/corrections-schema.json +100 -0
  19. package/proagents/.learning/schemas/feedback-schema.json +144 -0
  20. package/proagents/.learning/schemas/metrics-schema.json +96 -0
  21. package/proagents/.learning/schemas/patterns-schema.json +82 -0
  22. package/proagents/.learning/schemas/project-patterns-schema.json +125 -0
  23. package/proagents/.learning/schemas/user-preferences-schema.json +136 -0
  24. package/proagents/GETTING-STARTED-STORY.md +708 -0
  25. package/proagents/README.md +99 -0
  26. package/proagents/WORKFLOW.md +1234 -0
  27. package/proagents/active-features/.gitkeep +0 -0
  28. package/proagents/active-features/README.md +176 -0
  29. package/proagents/active-features/_index.json +74 -0
  30. package/proagents/active-features/feature-user-auth/dependencies.json +81 -0
  31. package/proagents/active-features/feature-user-auth/files-modified.json +126 -0
  32. package/proagents/active-features/feature-user-auth/status.json +122 -0
  33. package/proagents/active-features/schemas/dependencies-schema.json +119 -0
  34. package/proagents/active-features/schemas/feature-schema.json +132 -0
  35. package/proagents/active-features/schemas/files-schema.json +100 -0
  36. package/proagents/active-features/schemas/index-schema.json +95 -0
  37. package/proagents/adr/README.md +302 -0
  38. package/proagents/adr/examples/api-versioning.md +297 -0
  39. package/proagents/adr/examples/database-choice.md +264 -0
  40. package/proagents/adr/template.md +273 -0
  41. package/proagents/ai-models/README.md +141 -0
  42. package/proagents/ai-models/cost-management.md +362 -0
  43. package/proagents/ai-models/fallbacks.md +342 -0
  44. package/proagents/ai-models/model-config.md +318 -0
  45. package/proagents/ai-models/task-routing.md +503 -0
  46. package/proagents/ai-training/README.md +155 -0
  47. package/proagents/ai-training/continuous-learning.md +413 -0
  48. package/proagents/ai-training/domain-knowledge.md +378 -0
  49. package/proagents/ai-training/pattern-learning.md +455 -0
  50. package/proagents/ai-training/training-data.md +337 -0
  51. package/proagents/ai-training/user-preferences.md +346 -0
  52. package/proagents/api-versioning/README.md +257 -0
  53. package/proagents/api-versioning/changelog-template.md +225 -0
  54. package/proagents/api-versioning/deprecation-workflow.md +470 -0
  55. package/proagents/api-versioning/versioning-strategy.md +291 -0
  56. package/proagents/approval-workflows/README.md +146 -0
  57. package/proagents/approval-workflows/approval-config.md +332 -0
  58. package/proagents/approval-workflows/approval-stages.md +503 -0
  59. package/proagents/approval-workflows/emergency-bypass.md +351 -0
  60. package/proagents/approval-workflows/examples.md +859 -0
  61. package/proagents/approval-workflows/notifications.md +320 -0
  62. package/proagents/automation/README.md +38 -0
  63. package/proagents/automation/ai-behavior-rules.md +339 -0
  64. package/proagents/automation/ai-prompt-injection.md +331 -0
  65. package/proagents/automation/auto-decisions.md +535 -0
  66. package/proagents/automation/decision-defaults.yaml +317 -0
  67. package/proagents/cache/README.md +110 -0
  68. package/proagents/cache/analysis-metadata.json +76 -0
  69. package/proagents/cache/conventions.json +125 -0
  70. package/proagents/cache/dependencies.json +85 -0
  71. package/proagents/cache/features.json +115 -0
  72. package/proagents/cache/patterns.json +105 -0
  73. package/proagents/cache/schemas/conventions-schema.json +138 -0
  74. package/proagents/cache/schemas/dependencies-schema.json +95 -0
  75. package/proagents/cache/schemas/features-schema.json +104 -0
  76. package/proagents/cache/schemas/metadata-schema.json +83 -0
  77. package/proagents/cache/schemas/patterns-schema.json +136 -0
  78. package/proagents/cache/schemas/structure-schema.json +72 -0
  79. package/proagents/cache/structure.json +109 -0
  80. package/proagents/changelog/2024/01/2024-01-10-api-url-config.md +41 -0
  81. package/proagents/changelog/2024/01/2024-01-12-login-bug-fix.md +69 -0
  82. package/proagents/changelog/2024/01/2024-01-15-user-auth-feature.md +99 -0
  83. package/proagents/changelog/CHANGELOG.md +82 -0
  84. package/proagents/changelog/README.md +327 -0
  85. package/proagents/changelog/entry-template.md +283 -0
  86. package/proagents/checklists/README.md +261 -0
  87. package/proagents/checklists/code-quality.md +137 -0
  88. package/proagents/checklists/code-review.md +148 -0
  89. package/proagents/checklists/pr-checklist.md +78 -0
  90. package/proagents/checklists/pre-deployment.md +132 -0
  91. package/proagents/checklists/pre-implementation.md +80 -0
  92. package/proagents/checklists/testing.md +120 -0
  93. package/proagents/cicd/README.md +338 -0
  94. package/proagents/cicd/azure-devops.md +267 -0
  95. package/proagents/cicd/github-actions.md +375 -0
  96. package/proagents/cicd/gitlab-ci.md +278 -0
  97. package/proagents/cicd/jenkins.md +317 -0
  98. package/proagents/cli/README.md +392 -0
  99. package/proagents/cli/commands-reference.md +893 -0
  100. package/proagents/cli/ide-integration.md +584 -0
  101. package/proagents/cli/shortcuts.md +394 -0
  102. package/proagents/cli/slash-commands.md +507 -0
  103. package/proagents/collaboration/README.md +143 -0
  104. package/proagents/collaboration/roles.md +248 -0
  105. package/proagents/collaboration/sessions.md +390 -0
  106. package/proagents/collaboration/sync.md +358 -0
  107. package/proagents/compliance/README.md +206 -0
  108. package/proagents/compliance/access-control.md +310 -0
  109. package/proagents/compliance/audit-logging.md +444 -0
  110. package/proagents/compliance/compliance-frameworks.md +429 -0
  111. package/proagents/compliance/reports.md +491 -0
  112. package/proagents/compliance/retention-policies.md +454 -0
  113. package/proagents/config/README.md +181 -0
  114. package/proagents/config/integrations/README.md +68 -0
  115. package/proagents/config/integrations/github.yaml +211 -0
  116. package/proagents/config/integrations/jira.yaml +144 -0
  117. package/proagents/config/integrations/linear.yaml +157 -0
  118. package/proagents/config/integrations/notion.yaml +203 -0
  119. package/proagents/config/integrations/slack.yaml +230 -0
  120. package/proagents/config/rules/README.md +73 -0
  121. package/proagents/config/rules/custom-rules.template.yaml +188 -0
  122. package/proagents/config/rules/validation-rules.template.yaml +177 -0
  123. package/proagents/config/standards/README.md +58 -0
  124. package/proagents/config/standards/architecture-rules.template.md +124 -0
  125. package/proagents/config/standards/coding-standards.template.md +107 -0
  126. package/proagents/config/standards/naming-conventions.template.md +114 -0
  127. package/proagents/config/standards/testing-standards.template.md +213 -0
  128. package/proagents/config/templates/README.md +74 -0
  129. package/proagents/config/templates/api-route.template.ts +142 -0
  130. package/proagents/config/templates/component.template.tsx +55 -0
  131. package/proagents/config/templates/hook.template.ts +93 -0
  132. package/proagents/config/templates/test.template.ts +171 -0
  133. package/proagents/config-versioning/README.md +120 -0
  134. package/proagents/config-versioning/changelog.md +300 -0
  135. package/proagents/config-versioning/rollback.md +283 -0
  136. package/proagents/config-versioning/versioning.md +330 -0
  137. package/proagents/contract-testing/README.md +223 -0
  138. package/proagents/contract-testing/contract-testing.md +614 -0
  139. package/proagents/contract-testing/pact-integration.md +507 -0
  140. package/proagents/contract-testing/schema-validation.md +565 -0
  141. package/proagents/cost/README.md +48 -0
  142. package/proagents/cost/cost-template.md +283 -0
  143. package/proagents/cost/estimation-framework.md +287 -0
  144. package/proagents/database/README.md +72 -0
  145. package/proagents/database/examples/001-create-users.sql +129 -0
  146. package/proagents/database/examples/002-add-preferences.sql +94 -0
  147. package/proagents/database/examples/003-add-index.sql +105 -0
  148. package/proagents/database/examples/004-rename-column.sql +122 -0
  149. package/proagents/database/examples/005-add-foreign-key.sql +142 -0
  150. package/proagents/database/examples/006-data-migration.sql +196 -0
  151. package/proagents/database/examples/007-drop-column.sql +163 -0
  152. package/proagents/database/examples/README.md +89 -0
  153. package/proagents/database/migration-workflow.md +478 -0
  154. package/proagents/database/rollback-scripts.md +487 -0
  155. package/proagents/database/safety-checks.md +447 -0
  156. package/proagents/dependency-management/README.md +140 -0
  157. package/proagents/dependency-management/automation.md +363 -0
  158. package/proagents/dependency-management/compatibility.md +319 -0
  159. package/proagents/dependency-management/security-scanning.md +413 -0
  160. package/proagents/dependency-management/update-policies.md +374 -0
  161. package/proagents/disaster-recovery/README.md +247 -0
  162. package/proagents/disaster-recovery/automation.md +366 -0
  163. package/proagents/disaster-recovery/backup-recovery.md +571 -0
  164. package/proagents/disaster-recovery/incident-response.md +565 -0
  165. package/proagents/disaster-recovery/rollback-procedures.md +499 -0
  166. package/proagents/disaster-recovery/runbooks.md +603 -0
  167. package/proagents/disaster-recovery/scenarios.md +892 -0
  168. package/proagents/disaster-recovery/testing.md +438 -0
  169. package/proagents/environments/README.md +244 -0
  170. package/proagents/environments/configuration.md +437 -0
  171. package/proagents/environments/promotion.md +434 -0
  172. package/proagents/environments/setup.md +420 -0
  173. package/proagents/examples/README.md +55 -0
  174. package/proagents/examples/backend-nodejs/README.md +188 -0
  175. package/proagents/examples/backend-nodejs/complete-conversation.md +601 -0
  176. package/proagents/examples/backend-nodejs/proagents.config.yaml +415 -0
  177. package/proagents/examples/backend-nodejs/workflow-example.md +909 -0
  178. package/proagents/examples/fullstack-nextjs/README.md +155 -0
  179. package/proagents/examples/fullstack-nextjs/complete-conversation.md +604 -0
  180. package/proagents/examples/fullstack-nextjs/proagents.config.yaml +287 -0
  181. package/proagents/examples/fullstack-nextjs/workflow-example.md +553 -0
  182. package/proagents/examples/mobile-react-native/README.md +171 -0
  183. package/proagents/examples/mobile-react-native/complete-conversation.md +825 -0
  184. package/proagents/examples/mobile-react-native/proagents.config.yaml +330 -0
  185. package/proagents/examples/mobile-react-native/workflow-example.md +723 -0
  186. package/proagents/examples/web-frontend-react/README.md +125 -0
  187. package/proagents/examples/web-frontend-react/complete-conversation.md +556 -0
  188. package/proagents/examples/web-frontend-react/proagents.config.yaml +183 -0
  189. package/proagents/examples/web-frontend-react/workflow-example.md +603 -0
  190. package/proagents/existing-projects/README.md +65 -0
  191. package/proagents/existing-projects/challenges.md +861 -0
  192. package/proagents/existing-projects/coexistence-mode.md +483 -0
  193. package/proagents/existing-projects/compatibility-assessment.md +541 -0
  194. package/proagents/existing-projects/gradual-adoption.md +515 -0
  195. package/proagents/existing-projects/migration-strategies.md +788 -0
  196. package/proagents/existing-projects/pattern-reconciliation.md +489 -0
  197. package/proagents/existing-projects/team-onboarding.md +617 -0
  198. package/proagents/existing-projects/technical-debt-handling.md +644 -0
  199. package/proagents/feature-flags/README.md +263 -0
  200. package/proagents/feature-flags/ab-testing.md +413 -0
  201. package/proagents/feature-flags/configuration.md +420 -0
  202. package/proagents/feature-flags/kill-switches.md +444 -0
  203. package/proagents/feature-flags/rollout-strategies.md +392 -0
  204. package/proagents/getting-started/README.md +60 -0
  205. package/proagents/getting-started/ai-training-setup.md +380 -0
  206. package/proagents/getting-started/ide-setup.md +195 -0
  207. package/proagents/getting-started/mcp-setup.md +239 -0
  208. package/proagents/getting-started/pm-integration.md +336 -0
  209. package/proagents/getting-started/prompt-engineering.md +478 -0
  210. package/proagents/getting-started/team-onboarding.md +236 -0
  211. package/proagents/git/README.md +68 -0
  212. package/proagents/git/branch-strategy.md +164 -0
  213. package/proagents/git/commit-conventions.md +241 -0
  214. package/proagents/git/pr-workflow.md +286 -0
  215. package/proagents/git/rollback-procedures.md +416 -0
  216. package/proagents/i18n/README.md +133 -0
  217. package/proagents/i18n/extraction.md +433 -0
  218. package/proagents/i18n/tms-integration.md +332 -0
  219. package/proagents/i18n/translation-workflow.md +413 -0
  220. package/proagents/i18n/validation.md +355 -0
  221. package/proagents/ide-integration/README.md +124 -0
  222. package/proagents/ide-integration/cline-config.md +429 -0
  223. package/proagents/ide-integration/continue-config.md +380 -0
  224. package/proagents/ide-integration/cursor-rules.md +280 -0
  225. package/proagents/ide-integration/github-copilot.md +384 -0
  226. package/proagents/ide-integration/windsurf-rules.md +314 -0
  227. package/proagents/integrations/README.md +97 -0
  228. package/proagents/integrations/pm/README.md +344 -0
  229. package/proagents/learning/README.md +136 -0
  230. package/proagents/learning/adaptation.md +305 -0
  231. package/proagents/learning/data-collection.md +283 -0
  232. package/proagents/learning/implementation-guide.md +865 -0
  233. package/proagents/learning/reports.md +306 -0
  234. package/proagents/logging/README.md +276 -0
  235. package/proagents/logging/aggregation.md +475 -0
  236. package/proagents/logging/log-levels.md +376 -0
  237. package/proagents/logging/sensitive-data.md +423 -0
  238. package/proagents/logging/structured-logging.md +406 -0
  239. package/proagents/mcp/README.md +133 -0
  240. package/proagents/mcp/context-providers.md +442 -0
  241. package/proagents/mcp/server-config.md +306 -0
  242. package/proagents/mcp/tools-definition.md +513 -0
  243. package/proagents/metrics/README.md +174 -0
  244. package/proagents/metrics/code-quality-kpis.md +461 -0
  245. package/proagents/metrics/deployment-metrics.md +517 -0
  246. package/proagents/metrics/developer-productivity.md +368 -0
  247. package/proagents/metrics/learning-effectiveness.md +478 -0
  248. package/proagents/migrations/README.md +77 -0
  249. package/proagents/migrations/from-claude-projects.md +312 -0
  250. package/proagents/migrations/from-cursor-rules.md +345 -0
  251. package/proagents/migrations/from-custom-workflows.md +410 -0
  252. package/proagents/monitoring/README.md +308 -0
  253. package/proagents/monitoring/alerting.md +449 -0
  254. package/proagents/monitoring/dashboards.md +454 -0
  255. package/proagents/monitoring/health-checks.md +436 -0
  256. package/proagents/monitoring/metrics.md +434 -0
  257. package/proagents/multi-project/README.md +170 -0
  258. package/proagents/multi-project/coordinated-deploy.md +510 -0
  259. package/proagents/multi-project/cross-project-deps.md +395 -0
  260. package/proagents/multi-project/unified-changelog.md +477 -0
  261. package/proagents/multi-project/walkthroughs/monorepo-setup.md +787 -0
  262. package/proagents/multi-project/workspace-config.md +408 -0
  263. package/proagents/notifications/README.md +151 -0
  264. package/proagents/notifications/channels.md +457 -0
  265. package/proagents/notifications/preferences.md +415 -0
  266. package/proagents/notifications/routing.md +449 -0
  267. package/proagents/notifications/scheduling.md +425 -0
  268. package/proagents/notifications/templates.md +446 -0
  269. package/proagents/offline-mode/README.md +145 -0
  270. package/proagents/offline-mode/caching.md +344 -0
  271. package/proagents/offline-mode/offline-operations.md +312 -0
  272. package/proagents/offline-mode/queue-specifications.md +679 -0
  273. package/proagents/offline-mode/sync.md +475 -0
  274. package/proagents/parallel-features/README.md +85 -0
  275. package/proagents/parallel-features/conflict-detection.md +226 -0
  276. package/proagents/parallel-features/dependency-management.md +392 -0
  277. package/proagents/parallel-features/merge-coordination.md +506 -0
  278. package/proagents/parallel-features/tracking-system.md +416 -0
  279. package/proagents/patterns/README.md +305 -0
  280. package/proagents/patterns/api-errors.md +453 -0
  281. package/proagents/patterns/async-errors.md +521 -0
  282. package/proagents/patterns/error-types.md +437 -0
  283. package/proagents/patterns/ui-errors.md +595 -0
  284. package/proagents/performance/README.md +59 -0
  285. package/proagents/performance/bundle-analysis.md +375 -0
  286. package/proagents/performance/load-testing.md +563 -0
  287. package/proagents/performance/runtime-metrics.md +489 -0
  288. package/proagents/performance/web-vitals.md +425 -0
  289. package/proagents/plugins/README.md +139 -0
  290. package/proagents/plugins/creating-plugins.md +504 -0
  291. package/proagents/plugins/plugin-api.md +467 -0
  292. package/proagents/plugins/plugin-registry.md +276 -0
  293. package/proagents/pm-integration/README.md +151 -0
  294. package/proagents/pm-integration/asana.md +346 -0
  295. package/proagents/pm-integration/github-issues.md +308 -0
  296. package/proagents/pm-integration/gitlab-issues.md +482 -0
  297. package/proagents/pm-integration/jira.md +364 -0
  298. package/proagents/pm-integration/linear.md +409 -0
  299. package/proagents/pm-integration/notion.md +275 -0
  300. package/proagents/pm-integration/sync-config.md +533 -0
  301. package/proagents/pm-integration/trello.md +159 -0
  302. package/proagents/proagents.config.yaml +213 -0
  303. package/proagents/prompts/00-init-wizard.md +426 -0
  304. package/proagents/prompts/00-init.md +219 -0
  305. package/proagents/prompts/01-analysis.md +244 -0
  306. package/proagents/prompts/02-requirements.md +399 -0
  307. package/proagents/prompts/03-ui-design.md +493 -0
  308. package/proagents/prompts/04-planning.md +505 -0
  309. package/proagents/prompts/05-implementation.md +518 -0
  310. package/proagents/prompts/06-testing.md +620 -0
  311. package/proagents/prompts/06.5-code-review.md +512 -0
  312. package/proagents/prompts/07-documentation.md +673 -0
  313. package/proagents/prompts/08-deployment.md +539 -0
  314. package/proagents/prompts/09-rollback.md +554 -0
  315. package/proagents/prompts/README.md +51 -0
  316. package/proagents/prompts/accessibility/README.md +146 -0
  317. package/proagents/prompts/accessibility/aria.md +276 -0
  318. package/proagents/prompts/accessibility/audit.md +233 -0
  319. package/proagents/prompts/accessibility/keyboard.md +392 -0
  320. package/proagents/prompts/accessibility/wcag.md +189 -0
  321. package/proagents/prompts/debugging/README.md +51 -0
  322. package/proagents/prompts/debugging/error-analysis.md +385 -0
  323. package/proagents/prompts/debugging/performance-debug.md +381 -0
  324. package/proagents/prompts/debugging/systematic.md +270 -0
  325. package/proagents/prompts/performance/README.md +47 -0
  326. package/proagents/prompts/performance/analyze.md +265 -0
  327. package/proagents/prompts/performance/optimize.md +347 -0
  328. package/proagents/prompts/refactoring/README.md +51 -0
  329. package/proagents/prompts/refactoring/architecture.md +531 -0
  330. package/proagents/prompts/refactoring/code-smells.md +174 -0
  331. package/proagents/prompts/refactoring/patterns.md +516 -0
  332. package/proagents/prompts/security-audit/README.md +197 -0
  333. package/proagents/prompts/security-audit/code-review.md +260 -0
  334. package/proagents/prompts/security-audit/vulnerability-scan.md +288 -0
  335. package/proagents/reporting/README.md +158 -0
  336. package/proagents/reporting/dashboards.md +366 -0
  337. package/proagents/reporting/exports.md +524 -0
  338. package/proagents/reporting/quality-metrics.md +385 -0
  339. package/proagents/reporting/templates/README.md +56 -0
  340. package/proagents/reporting/templates/dashboard-config.json +187 -0
  341. package/proagents/reporting/templates/metrics-queries.md +427 -0
  342. package/proagents/reporting/templates/react-dashboard.tsx +544 -0
  343. package/proagents/reporting/templates/widgets.md +451 -0
  344. package/proagents/reporting/velocity-metrics.md +340 -0
  345. package/proagents/reverse-engineering/README.md +151 -0
  346. package/proagents/reverse-engineering/architecture-extraction.md +325 -0
  347. package/proagents/reverse-engineering/code-analysis.md +377 -0
  348. package/proagents/reverse-engineering/dependency-mapping.md +567 -0
  349. package/proagents/reverse-engineering/diagram-generation.md +586 -0
  350. package/proagents/reverse-engineering/documentation-generation.md +468 -0
  351. package/proagents/reverse-engineering/pattern-detection.md +569 -0
  352. package/proagents/reverse-engineering/quality-assessment.md +733 -0
  353. package/proagents/rules/README.md +179 -0
  354. package/proagents/rules/custom-rules-template.yaml +286 -0
  355. package/proagents/rules/custom-rules.md +754 -0
  356. package/proagents/rules/validation-rules-template.yaml +517 -0
  357. package/proagents/runbooks/README.md +219 -0
  358. package/proagents/runbooks/dependency-vulnerability.md +505 -0
  359. package/proagents/runbooks/incident-response.md +451 -0
  360. package/proagents/runbooks/performance-degradation.md +584 -0
  361. package/proagents/runbooks/production-debugging.md +489 -0
  362. package/proagents/scaffolding/README.md +64 -0
  363. package/proagents/scaffolding/nextjs/README.md +578 -0
  364. package/proagents/scaffolding/nextjs/templates/api-route.ts.template +185 -0
  365. package/proagents/scaffolding/nextjs/templates/page.tsx.template +109 -0
  366. package/proagents/scaffolding/nextjs/templates/server-action.ts.template +204 -0
  367. package/proagents/scaffolding/nodejs/README.md +558 -0
  368. package/proagents/scaffolding/nodejs/templates/controller.ts.template +167 -0
  369. package/proagents/scaffolding/nodejs/templates/repository.ts.template +155 -0
  370. package/proagents/scaffolding/nodejs/templates/service.ts.template +207 -0
  371. package/proagents/scaffolding/project-types.md +401 -0
  372. package/proagents/scaffolding/react/README.md +399 -0
  373. package/proagents/scaffolding/react/templates/component.tsx.template +88 -0
  374. package/proagents/scaffolding/react/templates/hook.ts.template +127 -0
  375. package/proagents/scaffolding/react/templates/service.ts.template +155 -0
  376. package/proagents/scaffolding/react/templates/test.tsx.template +149 -0
  377. package/proagents/scaffolding/react-native/README.md +476 -0
  378. package/proagents/scaffolding/react-native/templates/hook.ts.template +226 -0
  379. package/proagents/scaffolding/react-native/templates/screen.tsx.template +247 -0
  380. package/proagents/secrets/README.md +278 -0
  381. package/proagents/secrets/access-control.md +443 -0
  382. package/proagents/secrets/rotation.md +403 -0
  383. package/proagents/secrets/scanning.md +487 -0
  384. package/proagents/secrets/storage.md +394 -0
  385. package/proagents/security/README.md +71 -0
  386. package/proagents/security/owasp-checklist.md +390 -0
  387. package/proagents/security/sast-guide.md +473 -0
  388. package/proagents/security/security-report-template.md +343 -0
  389. package/proagents/security/vulnerability-scanning.md +329 -0
  390. package/proagents/slash-commands.json +161 -0
  391. package/proagents/standards/README.md +120 -0
  392. package/proagents/standards/architecture-patterns.md +728 -0
  393. package/proagents/standards/architecture-rules-template.md +489 -0
  394. package/proagents/standards/coding-standards-template.md +489 -0
  395. package/proagents/standards/examples/README.md +61 -0
  396. package/proagents/standards/examples/nodejs-api.md +560 -0
  397. package/proagents/standards/examples/react-nextjs.md +428 -0
  398. package/proagents/standards/naming-conventions-template.md +526 -0
  399. package/proagents/standards/override-system.md +717 -0
  400. package/proagents/standards/testing-standards-template.md +220 -0
  401. package/proagents/team/README.md +256 -0
  402. package/proagents/team/code-ownership.md +306 -0
  403. package/proagents/team/communication-templates.md +441 -0
  404. package/proagents/team/handoff-protocol.md +380 -0
  405. package/proagents/team/ide-setup/README.md +103 -0
  406. package/proagents/team/ide-setup/cursor.md +276 -0
  407. package/proagents/team/ide-setup/jetbrains.md +330 -0
  408. package/proagents/team/ide-setup/neovim.md +640 -0
  409. package/proagents/team/ide-setup/vscode.md +348 -0
  410. package/proagents/team/onboarding.md +278 -0
  411. package/proagents/templates/README.md +57 -0
  412. package/proagents/templates/code-review-report.md +255 -0
  413. package/proagents/templates/codebase-analysis-report.md +315 -0
  414. package/proagents/templates/deployment-checklist.md +277 -0
  415. package/proagents/templates/feature-requirements.md +142 -0
  416. package/proagents/templates/feature-status.md +231 -0
  417. package/proagents/templates/implementation-plan.md +373 -0
  418. package/proagents/templates/rollback-plan.md +331 -0
  419. package/proagents/templates/test-plan.md +336 -0
  420. package/proagents/templates/ui-specification.md +431 -0
  421. package/proagents/testing-standards/README.md +229 -0
  422. package/proagents/testing-standards/coverage-requirements.md +198 -0
  423. package/proagents/testing-standards/mocking-guidelines.md +478 -0
  424. package/proagents/testing-standards/test-naming.md +485 -0
  425. package/proagents/testing-standards/test-patterns.md +488 -0
  426. package/proagents/troubleshooting/README.md +730 -0
  427. package/proagents/troubleshooting/ai-issues.md +601 -0
  428. package/proagents/troubleshooting/workflow-issues.md +571 -0
  429. package/proagents/ui-integration/README.md +77 -0
  430. package/proagents/ui-integration/figma-guide.md +217 -0
  431. package/proagents/ui-integration/manual-export-guide.md +358 -0
  432. package/proagents/ui-integration/sketch-interpretation.md +471 -0
  433. package/proagents/webhooks/README.md +126 -0
  434. package/proagents/webhooks/endpoints.md +298 -0
  435. package/proagents/webhooks/events.md +316 -0
  436. package/proagents/webhooks/payloads.md +325 -0
  437. package/proagents/webhooks/reliability.md +363 -0
  438. package/proagents/webhooks/security.md +380 -0
  439. package/proagents/workflow-modes/README.md +136 -0
  440. package/proagents/workflow-modes/deferred-tracking.md +405 -0
  441. package/proagents/workflow-modes/entry-modes.md +397 -0
  442. package/proagents/workflow-modes/guardrails.md +405 -0
  443. package/proagents/workflow-modes/mode-detection.md +358 -0
  444. package/proagents/workflow-modes/mode-switching.md +372 -0
@@ -0,0 +1,558 @@
1
+ # Node.js (Backend/API) Scaffold
2
+
3
+ Project structure and configuration for Node.js backend applications.
4
+
5
+ ---
6
+
7
+ ## Directory Structure
8
+
9
+ ```
10
+ project-root/
11
+ ├── src/
12
+ │ ├── controllers/ # Request handlers
13
+ │ │ ├── authController.ts
14
+ │ │ ├── userController.ts
15
+ │ │ └── index.ts
16
+ │ │
17
+ │ ├── services/ # Business logic
18
+ │ │ ├── authService.ts
19
+ │ │ ├── userService.ts
20
+ │ │ └── index.ts
21
+ │ │
22
+ │ ├── models/ # Data models (Prisma/TypeORM)
23
+ │ │ ├── user.model.ts
24
+ │ │ └── index.ts
25
+ │ │
26
+ │ ├── routes/ # Route definitions
27
+ │ │ ├── auth.routes.ts
28
+ │ │ ├── user.routes.ts
29
+ │ │ └── index.ts
30
+ │ │
31
+ │ ├── middleware/ # Express middleware
32
+ │ │ ├── auth.middleware.ts
33
+ │ │ ├── error.middleware.ts
34
+ │ │ ├── validation.middleware.ts
35
+ │ │ └── index.ts
36
+ │ │
37
+ │ ├── validators/ # Request validation (Zod)
38
+ │ │ ├── auth.validator.ts
39
+ │ │ ├── user.validator.ts
40
+ │ │ └── index.ts
41
+ │ │
42
+ │ ├── utils/ # Utility functions
43
+ │ │ ├── helpers.ts
44
+ │ │ ├── logger.ts
45
+ │ │ ├── response.ts
46
+ │ │ └── index.ts
47
+ │ │
48
+ │ ├── types/ # TypeScript types
49
+ │ │ ├── express.d.ts
50
+ │ │ ├── api.types.ts
51
+ │ │ └── index.ts
52
+ │ │
53
+ │ ├── config/ # Configuration
54
+ │ │ ├── env.ts
55
+ │ │ ├── database.ts
56
+ │ │ └── index.ts
57
+ │ │
58
+ │ ├── app.ts # Express app setup
59
+ │ └── server.ts # Server entry point
60
+
61
+ ├── prisma/ # Prisma schema and migrations
62
+ │ ├── schema.prisma
63
+ │ └── migrations/
64
+
65
+ ├── tests/ # Test files
66
+ │ ├── setup.ts
67
+ │ ├── utils.ts
68
+ │ ├── unit/
69
+ │ └── integration/
70
+
71
+ ├── docs/ # API documentation
72
+ │ └── openapi.yaml
73
+
74
+ ├── scripts/ # Utility scripts
75
+ │ ├── seed.ts
76
+ │ └── migrate.ts
77
+
78
+ ├── .husky/ # Git hooks
79
+
80
+ ├── proagents/ # ProAgents configuration
81
+
82
+ ├── Dockerfile
83
+ ├── docker-compose.yml
84
+ ├── package.json
85
+ ├── tsconfig.json
86
+ ├── jest.config.js
87
+ ├── eslint.config.js
88
+ ├── prettier.config.js
89
+ └── proagents.config.yaml
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Configuration Files
95
+
96
+ ### package.json
97
+ ```json
98
+ {
99
+ "name": "{{project-name}}",
100
+ "version": "0.1.0",
101
+ "private": true,
102
+ "type": "module",
103
+ "scripts": {
104
+ "dev": "tsx watch src/server.ts",
105
+ "build": "tsc",
106
+ "start": "node dist/server.js",
107
+ "test": "jest",
108
+ "test:coverage": "jest --coverage",
109
+ "test:watch": "jest --watch",
110
+ "lint": "eslint src/",
111
+ "lint:fix": "eslint src/ --fix",
112
+ "format": "prettier --write src/",
113
+ "type-check": "tsc --noEmit",
114
+ "db:generate": "prisma generate",
115
+ "db:migrate": "prisma migrate dev",
116
+ "db:push": "prisma db push",
117
+ "db:seed": "tsx prisma/seed.ts",
118
+ "db:studio": "prisma studio",
119
+ "prepare": "husky install"
120
+ },
121
+ "dependencies": {
122
+ "express": "^4.18.0",
123
+ "@prisma/client": "^5.7.0",
124
+ "zod": "^3.22.0",
125
+ "bcryptjs": "^2.4.3",
126
+ "jsonwebtoken": "^9.0.0",
127
+ "cors": "^2.8.0",
128
+ "helmet": "^7.1.0",
129
+ "morgan": "^1.10.0",
130
+ "dotenv": "^16.3.0",
131
+ "winston": "^3.11.0",
132
+ "express-rate-limit": "^7.1.0"
133
+ },
134
+ "devDependencies": {
135
+ "@types/express": "^4.17.0",
136
+ "@types/node": "^20.10.0",
137
+ "@types/bcryptjs": "^2.4.0",
138
+ "@types/jsonwebtoken": "^9.0.0",
139
+ "@types/cors": "^2.8.0",
140
+ "@types/morgan": "^1.9.0",
141
+ "typescript": "^5.3.0",
142
+ "tsx": "^4.6.0",
143
+ "prisma": "^5.7.0",
144
+ "jest": "^29.7.0",
145
+ "@types/jest": "^29.5.0",
146
+ "ts-jest": "^29.1.0",
147
+ "supertest": "^6.3.0",
148
+ "@types/supertest": "^6.0.0",
149
+ "eslint": "^8.55.0",
150
+ "prettier": "^3.1.0",
151
+ "husky": "^8.0.0",
152
+ "@commitlint/cli": "^18.4.0",
153
+ "@commitlint/config-conventional": "^18.4.0"
154
+ }
155
+ }
156
+ ```
157
+
158
+ ### tsconfig.json
159
+ ```json
160
+ {
161
+ "compilerOptions": {
162
+ "target": "ES2022",
163
+ "module": "NodeNext",
164
+ "moduleResolution": "NodeNext",
165
+ "lib": ["ES2022"],
166
+ "outDir": "./dist",
167
+ "rootDir": "./src",
168
+ "strict": true,
169
+ "esModuleInterop": true,
170
+ "skipLibCheck": true,
171
+ "forceConsistentCasingInFileNames": true,
172
+ "resolveJsonModule": true,
173
+ "declaration": true,
174
+ "declarationMap": true,
175
+ "sourceMap": true,
176
+ "baseUrl": ".",
177
+ "paths": {
178
+ "@/*": ["src/*"],
179
+ "@controllers/*": ["src/controllers/*"],
180
+ "@services/*": ["src/services/*"],
181
+ "@models/*": ["src/models/*"],
182
+ "@routes/*": ["src/routes/*"],
183
+ "@middleware/*": ["src/middleware/*"],
184
+ "@validators/*": ["src/validators/*"],
185
+ "@utils/*": ["src/utils/*"],
186
+ "@config/*": ["src/config/*"],
187
+ "@types/*": ["src/types/*"]
188
+ }
189
+ },
190
+ "include": ["src/**/*"],
191
+ "exclude": ["node_modules", "dist", "tests"]
192
+ }
193
+ ```
194
+
195
+ ### prisma/schema.prisma
196
+ ```prisma
197
+ generator client {
198
+ provider = "prisma-client-js"
199
+ }
200
+
201
+ datasource db {
202
+ provider = "postgresql"
203
+ url = env("DATABASE_URL")
204
+ }
205
+
206
+ model User {
207
+ id String @id @default(uuid())
208
+ email String @unique
209
+ password String
210
+ name String?
211
+ role Role @default(USER)
212
+ createdAt DateTime @default(now())
213
+ updatedAt DateTime @updatedAt
214
+
215
+ @@map("users")
216
+ }
217
+
218
+ enum Role {
219
+ USER
220
+ ADMIN
221
+ }
222
+ ```
223
+
224
+ ---
225
+
226
+ ## Starter Files
227
+
228
+ ### src/server.ts
229
+ ```typescript
230
+ import { app } from './app.js';
231
+ import { env } from './config/env.js';
232
+ import { logger } from './utils/logger.js';
233
+
234
+ const PORT = env.PORT || 3000;
235
+
236
+ app.listen(PORT, () => {
237
+ logger.info(`Server running on port ${PORT}`);
238
+ logger.info(`Environment: ${env.NODE_ENV}`);
239
+ });
240
+ ```
241
+
242
+ ### src/app.ts
243
+ ```typescript
244
+ import express from 'express';
245
+ import cors from 'cors';
246
+ import helmet from 'helmet';
247
+ import morgan from 'morgan';
248
+ import { routes } from './routes/index.js';
249
+ import { errorMiddleware } from './middleware/error.middleware.js';
250
+ import { notFoundMiddleware } from './middleware/notFound.middleware.js';
251
+
252
+ const app = express();
253
+
254
+ // Security middleware
255
+ app.use(helmet());
256
+ app.use(cors());
257
+
258
+ // Body parsing
259
+ app.use(express.json());
260
+ app.use(express.urlencoded({ extended: true }));
261
+
262
+ // Logging
263
+ app.use(morgan('combined'));
264
+
265
+ // Health check
266
+ app.get('/health', (req, res) => {
267
+ res.json({ status: 'ok', timestamp: new Date().toISOString() });
268
+ });
269
+
270
+ // API routes
271
+ app.use('/api', routes);
272
+
273
+ // Error handling
274
+ app.use(notFoundMiddleware);
275
+ app.use(errorMiddleware);
276
+
277
+ export { app };
278
+ ```
279
+
280
+ ### src/routes/index.ts
281
+ ```typescript
282
+ import { Router } from 'express';
283
+ import { authRoutes } from './auth.routes.js';
284
+ import { userRoutes } from './user.routes.js';
285
+
286
+ const router = Router();
287
+
288
+ router.use('/auth', authRoutes);
289
+ router.use('/users', userRoutes);
290
+
291
+ export { router as routes };
292
+ ```
293
+
294
+ ### src/routes/auth.routes.ts
295
+ ```typescript
296
+ import { Router } from 'express';
297
+ import { authController } from '../controllers/authController.js';
298
+ import { validate } from '../middleware/validation.middleware.js';
299
+ import { loginSchema, registerSchema } from '../validators/auth.validator.js';
300
+
301
+ const router = Router();
302
+
303
+ router.post('/register', validate(registerSchema), authController.register);
304
+ router.post('/login', validate(loginSchema), authController.login);
305
+ router.post('/refresh', authController.refresh);
306
+ router.post('/logout', authController.logout);
307
+
308
+ export { router as authRoutes };
309
+ ```
310
+
311
+ ### src/controllers/authController.ts
312
+ ```typescript
313
+ import type { Request, Response, NextFunction } from 'express';
314
+ import { authService } from '../services/authService.js';
315
+ import { sendSuccess, sendError } from '../utils/response.js';
316
+
317
+ export const authController = {
318
+ async register(req: Request, res: Response, next: NextFunction) {
319
+ try {
320
+ const result = await authService.register(req.body);
321
+ sendSuccess(res, result, 'User registered successfully', 201);
322
+ } catch (error) {
323
+ next(error);
324
+ }
325
+ },
326
+
327
+ async login(req: Request, res: Response, next: NextFunction) {
328
+ try {
329
+ const result = await authService.login(req.body);
330
+ sendSuccess(res, result, 'Login successful');
331
+ } catch (error) {
332
+ next(error);
333
+ }
334
+ },
335
+
336
+ async refresh(req: Request, res: Response, next: NextFunction) {
337
+ try {
338
+ const result = await authService.refresh(req.body.refreshToken);
339
+ sendSuccess(res, result, 'Token refreshed');
340
+ } catch (error) {
341
+ next(error);
342
+ }
343
+ },
344
+
345
+ async logout(req: Request, res: Response, next: NextFunction) {
346
+ try {
347
+ await authService.logout(req.body.refreshToken);
348
+ sendSuccess(res, null, 'Logged out successfully');
349
+ } catch (error) {
350
+ next(error);
351
+ }
352
+ },
353
+ };
354
+ ```
355
+
356
+ ### src/validators/auth.validator.ts
357
+ ```typescript
358
+ import { z } from 'zod';
359
+
360
+ export const registerSchema = z.object({
361
+ body: z.object({
362
+ email: z.string().email('Invalid email address'),
363
+ password: z.string().min(8, 'Password must be at least 8 characters'),
364
+ name: z.string().min(2, 'Name must be at least 2 characters').optional(),
365
+ }),
366
+ });
367
+
368
+ export const loginSchema = z.object({
369
+ body: z.object({
370
+ email: z.string().email('Invalid email address'),
371
+ password: z.string().min(1, 'Password is required'),
372
+ }),
373
+ });
374
+
375
+ export type RegisterInput = z.infer<typeof registerSchema>['body'];
376
+ export type LoginInput = z.infer<typeof loginSchema>['body'];
377
+ ```
378
+
379
+ ### src/middleware/error.middleware.ts
380
+ ```typescript
381
+ import type { Request, Response, NextFunction } from 'express';
382
+ import { logger } from '../utils/logger.js';
383
+
384
+ export class AppError extends Error {
385
+ statusCode: number;
386
+ isOperational: boolean;
387
+
388
+ constructor(message: string, statusCode: number) {
389
+ super(message);
390
+ this.statusCode = statusCode;
391
+ this.isOperational = true;
392
+
393
+ Error.captureStackTrace(this, this.constructor);
394
+ }
395
+ }
396
+
397
+ export function errorMiddleware(
398
+ err: Error | AppError,
399
+ req: Request,
400
+ res: Response,
401
+ next: NextFunction
402
+ ) {
403
+ logger.error('Error:', err);
404
+
405
+ if (err instanceof AppError) {
406
+ return res.status(err.statusCode).json({
407
+ success: false,
408
+ message: err.message,
409
+ });
410
+ }
411
+
412
+ // Unknown error
413
+ res.status(500).json({
414
+ success: false,
415
+ message: 'Internal server error',
416
+ });
417
+ }
418
+ ```
419
+
420
+ ### src/config/env.ts
421
+ ```typescript
422
+ import { z } from 'zod';
423
+ import dotenv from 'dotenv';
424
+
425
+ dotenv.config();
426
+
427
+ const envSchema = z.object({
428
+ NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
429
+ PORT: z.string().default('3000'),
430
+ DATABASE_URL: z.string(),
431
+ JWT_SECRET: z.string(),
432
+ JWT_EXPIRES_IN: z.string().default('15m'),
433
+ JWT_REFRESH_EXPIRES_IN: z.string().default('7d'),
434
+ });
435
+
436
+ export const env = envSchema.parse(process.env);
437
+ ```
438
+
439
+ ---
440
+
441
+ ## ProAgents Configuration
442
+
443
+ ### proagents.config.yaml (Node.js-specific)
444
+ ```yaml
445
+ project:
446
+ name: "{{project-name}}"
447
+ type: "backend"
448
+ framework: "express"
449
+ language: "typescript"
450
+ api_style: "rest"
451
+
452
+ phases:
453
+ analysis:
454
+ enabled: true
455
+ focus:
456
+ - "route-structure"
457
+ - "middleware-patterns"
458
+ - "database-models"
459
+ ui_design:
460
+ enabled: false
461
+ api_design:
462
+ enabled: true
463
+ specification: "openapi"
464
+ database:
465
+ enabled: true
466
+ orm: "prisma"
467
+ testing:
468
+ coverage_target: 80
469
+ types: ["unit", "integration"]
470
+ load_testing: true
471
+
472
+ patterns:
473
+ architecture: "layered" # or clean, hexagonal
474
+ controllers:
475
+ style: "object-methods"
476
+ async_handlers: true
477
+ services:
478
+ dependency_injection: false
479
+ validation:
480
+ library: "zod"
481
+ error_handling:
482
+ custom_errors: true
483
+ centralized: true
484
+ logging:
485
+ library: "winston"
486
+ format: "json"
487
+
488
+ testing:
489
+ framework: "jest"
490
+ http_client: "supertest"
491
+ database: "test-containers" # or in-memory
492
+
493
+ deployment:
494
+ target: "docker"
495
+ orchestration: "docker-compose" # or kubernetes
496
+ ci_cd: "github-actions"
497
+
498
+ documentation:
499
+ api_docs: "openapi"
500
+ auto_generate: true
501
+ ```
502
+
503
+ ---
504
+
505
+ ## API Route Template
506
+
507
+ When creating new routes:
508
+
509
+ ```
510
+ src/
511
+ ├── routes/resource.routes.ts
512
+ ├── controllers/resourceController.ts
513
+ ├── services/resourceService.ts
514
+ ├── validators/resource.validator.ts
515
+ └── models/resource.model.ts (if needed)
516
+ ```
517
+
518
+ ### Route File Template
519
+ ```typescript
520
+ import { Router } from 'express';
521
+ import { resourceController } from '../controllers/resourceController.js';
522
+ import { authMiddleware } from '../middleware/auth.middleware.js';
523
+ import { validate } from '../middleware/validation.middleware.js';
524
+ import {
525
+ createResourceSchema,
526
+ updateResourceSchema,
527
+ } from '../validators/resource.validator.js';
528
+
529
+ const router = Router();
530
+
531
+ // Public routes
532
+ router.get('/', resourceController.getAll);
533
+ router.get('/:id', resourceController.getById);
534
+
535
+ // Protected routes
536
+ router.use(authMiddleware);
537
+ router.post('/', validate(createResourceSchema), resourceController.create);
538
+ router.put('/:id', validate(updateResourceSchema), resourceController.update);
539
+ router.delete('/:id', resourceController.delete);
540
+
541
+ export { router as resourceRoutes };
542
+ ```
543
+
544
+ ---
545
+
546
+ ## Slash Commands (Node.js-specific)
547
+
548
+ | Command | Description |
549
+ |---------|-------------|
550
+ | `/route [name]` | Generate new route + controller + service |
551
+ | `/controller [name]` | Generate controller |
552
+ | `/service [name]` | Generate service |
553
+ | `/middleware [name]` | Generate middleware |
554
+ | `/validator [name]` | Generate Zod validator |
555
+ | `/model [name]` | Generate Prisma model |
556
+ | `/migrate` | Run database migrations |
557
+ | `/seed` | Run database seeding |
558
+ | `/docs` | Generate OpenAPI docs |
@@ -0,0 +1,167 @@
1
+ /**
2
+ * {{ControllerName}} Controller
3
+ *
4
+ * {{description}}
5
+ *
6
+ * Routes: /api/{{route}}
7
+ */
8
+
9
+ import { Request, Response, NextFunction } from 'express';
10
+ import { z } from 'zod';
11
+ import { {{ServiceName}} } from '../services/{{serviceName}}.service';
12
+ import { AppError } from '../utils/errors';
13
+ import { asyncHandler } from '../utils/asyncHandler';
14
+
15
+ // ============================================================================
16
+ // Validation Schemas
17
+ // ============================================================================
18
+
19
+ const create{{EntityName}}Schema = z.object({
20
+ name: z.string().min(1).max(255),
21
+ description: z.string().optional(),
22
+ email: z.string().email().optional(),
23
+ });
24
+
25
+ const update{{EntityName}}Schema = create{{EntityName}}Schema.partial();
26
+
27
+ const querySchema = z.object({
28
+ page: z.coerce.number().int().positive().default(1),
29
+ limit: z.coerce.number().int().positive().max(100).default(10),
30
+ search: z.string().optional(),
31
+ sortBy: z.string().optional(),
32
+ sortOrder: z.enum(['asc', 'desc']).default('desc'),
33
+ });
34
+
35
+ const idSchema = z.object({
36
+ id: z.string().uuid(),
37
+ });
38
+
39
+ // ============================================================================
40
+ // Controller Class
41
+ // ============================================================================
42
+
43
+ export class {{ControllerName}} {
44
+ private service: {{ServiceName}};
45
+
46
+ constructor() {
47
+ this.service = new {{ServiceName}}();
48
+ }
49
+
50
+ // ==========================================================================
51
+ // GET /api/{{route}}
52
+ // ==========================================================================
53
+
54
+ /**
55
+ * Get all {{entityName}}s with pagination
56
+ */
57
+ getAll = asyncHandler(async (req: Request, res: Response) => {
58
+ const query = querySchema.parse(req.query);
59
+
60
+ const result = await this.service.findAll({
61
+ page: query.page,
62
+ limit: query.limit,
63
+ search: query.search,
64
+ sortBy: query.sortBy,
65
+ sortOrder: query.sortOrder,
66
+ });
67
+
68
+ res.json({
69
+ success: true,
70
+ data: result.data,
71
+ meta: {
72
+ page: result.page,
73
+ limit: result.limit,
74
+ total: result.total,
75
+ totalPages: result.totalPages,
76
+ },
77
+ });
78
+ });
79
+
80
+ // ==========================================================================
81
+ // GET /api/{{route}}/:id
82
+ // ==========================================================================
83
+
84
+ /**
85
+ * Get a single {{entityName}} by ID
86
+ */
87
+ getById = asyncHandler(async (req: Request, res: Response) => {
88
+ const { id } = idSchema.parse(req.params);
89
+
90
+ const item = await this.service.findById(id);
91
+
92
+ if (!item) {
93
+ throw new AppError('{{EntityName}} not found', 404);
94
+ }
95
+
96
+ res.json({
97
+ success: true,
98
+ data: item,
99
+ });
100
+ });
101
+
102
+ // ==========================================================================
103
+ // POST /api/{{route}}
104
+ // ==========================================================================
105
+
106
+ /**
107
+ * Create a new {{entityName}}
108
+ */
109
+ create = asyncHandler(async (req: Request, res: Response) => {
110
+ const data = create{{EntityName}}Schema.parse(req.body);
111
+
112
+ const item = await this.service.create(data);
113
+
114
+ res.status(201).json({
115
+ success: true,
116
+ data: item,
117
+ });
118
+ });
119
+
120
+ // ==========================================================================
121
+ // PUT /api/{{route}}/:id
122
+ // ==========================================================================
123
+
124
+ /**
125
+ * Update an existing {{entityName}}
126
+ */
127
+ update = asyncHandler(async (req: Request, res: Response) => {
128
+ const { id } = idSchema.parse(req.params);
129
+ const data = update{{EntityName}}Schema.parse(req.body);
130
+
131
+ const item = await this.service.update(id, data);
132
+
133
+ if (!item) {
134
+ throw new AppError('{{EntityName}} not found', 404);
135
+ }
136
+
137
+ res.json({
138
+ success: true,
139
+ data: item,
140
+ });
141
+ });
142
+
143
+ // ==========================================================================
144
+ // DELETE /api/{{route}}/:id
145
+ // ==========================================================================
146
+
147
+ /**
148
+ * Delete a {{entityName}}
149
+ */
150
+ delete = asyncHandler(async (req: Request, res: Response) => {
151
+ const { id } = idSchema.parse(req.params);
152
+
153
+ const deleted = await this.service.delete(id);
154
+
155
+ if (!deleted) {
156
+ throw new AppError('{{EntityName}} not found', 404);
157
+ }
158
+
159
+ res.status(204).send();
160
+ });
161
+ }
162
+
163
+ // ============================================================================
164
+ // Export Instance
165
+ // ============================================================================
166
+
167
+ export const {{camelCase controllerName}} = new {{ControllerName}}();