dk-harness 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +267 -0
  3. package/bin/dk-harness +206 -0
  4. package/package.json +36 -0
  5. package/templates/next-axum-monorepo/.eslintrc.js +13 -0
  6. package/templates/next-axum-monorepo/.github/workflows/ci.yml +92 -0
  7. package/templates/next-axum-monorepo/.gitleaks.toml +5 -0
  8. package/templates/next-axum-monorepo/.prettierignore +7 -0
  9. package/templates/next-axum-monorepo/.prettierrc +11 -0
  10. package/templates/next-axum-monorepo/AGENTS.md +35 -0
  11. package/templates/next-axum-monorepo/ARCHITECTURE.md +58 -0
  12. package/templates/next-axum-monorepo/README.md +45 -0
  13. package/templates/next-axum-monorepo/apps/axum/Cargo.lock +1041 -0
  14. package/templates/next-axum-monorepo/apps/axum/Cargo.toml +12 -0
  15. package/templates/next-axum-monorepo/apps/axum/deny.toml +13 -0
  16. package/templates/next-axum-monorepo/apps/axum/src/api/mod.rs +1 -0
  17. package/templates/next-axum-monorepo/apps/axum/src/api/router.rs +53 -0
  18. package/templates/next-axum-monorepo/apps/axum/src/core/config.rs +17 -0
  19. package/templates/next-axum-monorepo/apps/axum/src/core/mod.rs +1 -0
  20. package/templates/next-axum-monorepo/apps/axum/src/domain/health.rs +22 -0
  21. package/templates/next-axum-monorepo/apps/axum/src/domain/mod.rs +1 -0
  22. package/templates/next-axum-monorepo/apps/axum/src/lib.rs +6 -0
  23. package/templates/next-axum-monorepo/apps/axum/src/main.rs +15 -0
  24. package/templates/next-axum-monorepo/apps/web/app/favicon.ico +0 -0
  25. package/templates/next-axum-monorepo/apps/web/app/layout.tsx +43 -0
  26. package/templates/next-axum-monorepo/apps/web/app/page.tsx +19 -0
  27. package/templates/next-axum-monorepo/apps/web/biome.json +16 -0
  28. package/templates/next-axum-monorepo/apps/web/components/.gitkeep +0 -0
  29. package/templates/next-axum-monorepo/apps/web/components/theme-provider.tsx +71 -0
  30. package/templates/next-axum-monorepo/apps/web/components.json +23 -0
  31. package/templates/next-axum-monorepo/apps/web/dependency-cruiser.cjs +66 -0
  32. package/templates/next-axum-monorepo/apps/web/eslint.config.js +4 -0
  33. package/templates/next-axum-monorepo/apps/web/hooks/.gitkeep +0 -0
  34. package/templates/next-axum-monorepo/apps/web/knip.json +17 -0
  35. package/templates/next-axum-monorepo/apps/web/lib/.gitkeep +0 -0
  36. package/templates/next-axum-monorepo/apps/web/lighthouserc.json +23 -0
  37. package/templates/next-axum-monorepo/apps/web/next-env.d.ts +6 -0
  38. package/templates/next-axum-monorepo/apps/web/next.config.mjs +6 -0
  39. package/templates/next-axum-monorepo/apps/web/package.json +46 -0
  40. package/templates/next-axum-monorepo/apps/web/playwright.config.ts +18 -0
  41. package/templates/next-axum-monorepo/apps/web/postcss.config.mjs +1 -0
  42. package/templates/next-axum-monorepo/apps/web/skills-lock.json +15 -0
  43. package/templates/next-axum-monorepo/apps/web/tests/e2e/smoke.spec.ts +13 -0
  44. package/templates/next-axum-monorepo/apps/web/tests/unit/page.test.tsx +16 -0
  45. package/templates/next-axum-monorepo/apps/web/tsconfig.json +23 -0
  46. package/templates/next-axum-monorepo/apps/web/vitest.config.ts +13 -0
  47. package/templates/next-axum-monorepo/apps/web/vitest.setup.ts +1 -0
  48. package/templates/next-axum-monorepo/docs/DESIGN.md +10 -0
  49. package/templates/next-axum-monorepo/docs/FRONTEND.md +26 -0
  50. package/templates/next-axum-monorepo/docs/PLANS.md +25 -0
  51. package/templates/next-axum-monorepo/docs/PRODUCT_SENSE.md +11 -0
  52. package/templates/next-axum-monorepo/docs/QUALITY_SCORE.md +16 -0
  53. package/templates/next-axum-monorepo/docs/RELIABILITY.md +39 -0
  54. package/templates/next-axum-monorepo/docs/SECURITY.md +16 -0
  55. package/templates/next-axum-monorepo/docs/design-docs/core-beliefs.md +6 -0
  56. package/templates/next-axum-monorepo/docs/design-docs/included-skills.md +16 -0
  57. package/templates/next-axum-monorepo/docs/design-docs/index.md +6 -0
  58. package/templates/next-axum-monorepo/docs/exec-plans/active/.gitkeep +1 -0
  59. package/templates/next-axum-monorepo/docs/exec-plans/completed/.gitkeep +1 -0
  60. package/templates/next-axum-monorepo/docs/exec-plans/repeated-work.md +15 -0
  61. package/templates/next-axum-monorepo/docs/exec-plans/tech-debt-tracker.md +3 -0
  62. package/templates/next-axum-monorepo/docs/generated/db-schema.md +3 -0
  63. package/templates/next-axum-monorepo/docs/product-specs/index.md +5 -0
  64. package/templates/next-axum-monorepo/docs/product-specs/new-user-onboarding.md +12 -0
  65. package/templates/next-axum-monorepo/docs/references/design-system-reference-llms.txt +13 -0
  66. package/templates/next-axum-monorepo/justfile +36 -0
  67. package/templates/next-axum-monorepo/lefthook.yml +8 -0
  68. package/templates/next-axum-monorepo/mise.toml +5 -0
  69. package/templates/next-axum-monorepo/package.json +41 -0
  70. package/templates/next-axum-monorepo/packages/eslint-config/README.md +3 -0
  71. package/templates/next-axum-monorepo/packages/eslint-config/base.js +32 -0
  72. package/templates/next-axum-monorepo/packages/eslint-config/next.js +51 -0
  73. package/templates/next-axum-monorepo/packages/eslint-config/package.json +26 -0
  74. package/templates/next-axum-monorepo/packages/eslint-config/react-internal.js +41 -0
  75. package/templates/next-axum-monorepo/packages/typescript-config/README.md +3 -0
  76. package/templates/next-axum-monorepo/packages/typescript-config/base.json +20 -0
  77. package/templates/next-axum-monorepo/packages/typescript-config/nextjs.json +13 -0
  78. package/templates/next-axum-monorepo/packages/typescript-config/package.json +9 -0
  79. package/templates/next-axum-monorepo/packages/typescript-config/react-library.json +8 -0
  80. package/templates/next-axum-monorepo/packages/ui/components.json +23 -0
  81. package/templates/next-axum-monorepo/packages/ui/dependency-cruiser.cjs +100 -0
  82. package/templates/next-axum-monorepo/packages/ui/eslint.config.js +4 -0
  83. package/templates/next-axum-monorepo/packages/ui/package.json +49 -0
  84. package/templates/next-axum-monorepo/packages/ui/postcss.config.mjs +6 -0
  85. package/templates/next-axum-monorepo/packages/ui/src/config/.gitkeep +1 -0
  86. package/templates/next-axum-monorepo/packages/ui/src/providers/.gitkeep +1 -0
  87. package/templates/next-axum-monorepo/packages/ui/src/repo/.gitkeep +1 -0
  88. package/templates/next-axum-monorepo/packages/ui/src/runtime/hooks/.gitkeep +1 -0
  89. package/templates/next-axum-monorepo/packages/ui/src/runtime/utils.ts +6 -0
  90. package/templates/next-axum-monorepo/packages/ui/src/service/.gitkeep +1 -0
  91. package/templates/next-axum-monorepo/packages/ui/src/styles/globals.css +129 -0
  92. package/templates/next-axum-monorepo/packages/ui/src/types/.gitkeep +1 -0
  93. package/templates/next-axum-monorepo/packages/ui/src/ui/button.tsx +65 -0
  94. package/templates/next-axum-monorepo/packages/ui/src/utils/.gitkeep +1 -0
  95. package/templates/next-axum-monorepo/packages/ui/tsconfig.json +10 -0
  96. package/templates/next-axum-monorepo/packages/ui/tsconfig.lint.json +8 -0
  97. package/templates/next-axum-monorepo/pnpm-lock.yaml +12402 -0
  98. package/templates/next-axum-monorepo/pnpm-workspace.yaml +3 -0
  99. package/templates/next-axum-monorepo/renovate.json +6 -0
  100. package/templates/next-axum-monorepo/scripts/check-rust-layers.mjs +149 -0
  101. package/templates/next-axum-monorepo/skills-lock.json +30 -0
  102. package/templates/next-axum-monorepo/tsconfig.json +4 -0
  103. package/templates/next-axum-monorepo/turbo.json +27 -0
  104. package/templates/next-fastapi-monorepo/.eslintrc.js +13 -0
  105. package/templates/next-fastapi-monorepo/.github/workflows/ci.yml +92 -0
  106. package/templates/next-fastapi-monorepo/.gitleaks.toml +5 -0
  107. package/templates/next-fastapi-monorepo/.prettierignore +7 -0
  108. package/templates/next-fastapi-monorepo/.prettierrc +11 -0
  109. package/templates/next-fastapi-monorepo/AGENTS.md +35 -0
  110. package/templates/next-fastapi-monorepo/ARCHITECTURE.md +55 -0
  111. package/templates/next-fastapi-monorepo/README.md +65 -0
  112. package/templates/next-fastapi-monorepo/apps/api/.python-version +1 -0
  113. package/templates/next-fastapi-monorepo/apps/api/README.md +17 -0
  114. package/templates/next-fastapi-monorepo/apps/api/app/__init__.py +1 -0
  115. package/templates/next-fastapi-monorepo/apps/api/app/api/__init__.py +2 -0
  116. package/templates/next-fastapi-monorepo/apps/api/app/api/routes.py +16 -0
  117. package/templates/next-fastapi-monorepo/apps/api/app/core/__init__.py +2 -0
  118. package/templates/next-fastapi-monorepo/apps/api/app/core/config.py +11 -0
  119. package/templates/next-fastapi-monorepo/apps/api/app/domain/__init__.py +2 -0
  120. package/templates/next-fastapi-monorepo/apps/api/app/domain/health.py +7 -0
  121. package/templates/next-fastapi-monorepo/apps/api/app/main.py +8 -0
  122. package/templates/next-fastapi-monorepo/apps/api/package.json +14 -0
  123. package/templates/next-fastapi-monorepo/apps/api/pyproject.toml +54 -0
  124. package/templates/next-fastapi-monorepo/apps/api/tests/test_main.py +27 -0
  125. package/templates/next-fastapi-monorepo/apps/api/uv.lock +1797 -0
  126. package/templates/next-fastapi-monorepo/apps/web/app/favicon.ico +0 -0
  127. package/templates/next-fastapi-monorepo/apps/web/app/layout.tsx +43 -0
  128. package/templates/next-fastapi-monorepo/apps/web/app/page.tsx +19 -0
  129. package/templates/next-fastapi-monorepo/apps/web/biome.json +16 -0
  130. package/templates/next-fastapi-monorepo/apps/web/components/.gitkeep +0 -0
  131. package/templates/next-fastapi-monorepo/apps/web/components/theme-provider.tsx +71 -0
  132. package/templates/next-fastapi-monorepo/apps/web/components.json +23 -0
  133. package/templates/next-fastapi-monorepo/apps/web/dependency-cruiser.cjs +66 -0
  134. package/templates/next-fastapi-monorepo/apps/web/eslint.config.js +4 -0
  135. package/templates/next-fastapi-monorepo/apps/web/hooks/.gitkeep +0 -0
  136. package/templates/next-fastapi-monorepo/apps/web/knip.json +17 -0
  137. package/templates/next-fastapi-monorepo/apps/web/lib/.gitkeep +0 -0
  138. package/templates/next-fastapi-monorepo/apps/web/lighthouserc.json +23 -0
  139. package/templates/next-fastapi-monorepo/apps/web/next-env.d.ts +6 -0
  140. package/templates/next-fastapi-monorepo/apps/web/next.config.mjs +6 -0
  141. package/templates/next-fastapi-monorepo/apps/web/package.json +46 -0
  142. package/templates/next-fastapi-monorepo/apps/web/playwright.config.ts +18 -0
  143. package/templates/next-fastapi-monorepo/apps/web/postcss.config.mjs +1 -0
  144. package/templates/next-fastapi-monorepo/apps/web/skills-lock.json +40 -0
  145. package/templates/next-fastapi-monorepo/apps/web/tests/e2e/smoke.spec.ts +13 -0
  146. package/templates/next-fastapi-monorepo/apps/web/tests/unit/page.test.tsx +16 -0
  147. package/templates/next-fastapi-monorepo/apps/web/tsconfig.json +23 -0
  148. package/templates/next-fastapi-monorepo/apps/web/vitest.config.ts +13 -0
  149. package/templates/next-fastapi-monorepo/apps/web/vitest.setup.ts +1 -0
  150. package/templates/next-fastapi-monorepo/docs/DESIGN.md +10 -0
  151. package/templates/next-fastapi-monorepo/docs/FRONTEND.md +26 -0
  152. package/templates/next-fastapi-monorepo/docs/PLANS.md +25 -0
  153. package/templates/next-fastapi-monorepo/docs/PRODUCT_SENSE.md +11 -0
  154. package/templates/next-fastapi-monorepo/docs/QUALITY_SCORE.md +16 -0
  155. package/templates/next-fastapi-monorepo/docs/RELIABILITY.md +38 -0
  156. package/templates/next-fastapi-monorepo/docs/SECURITY.md +15 -0
  157. package/templates/next-fastapi-monorepo/docs/design-docs/core-beliefs.md +6 -0
  158. package/templates/next-fastapi-monorepo/docs/design-docs/included-skills.md +13 -0
  159. package/templates/next-fastapi-monorepo/docs/design-docs/index.md +6 -0
  160. package/templates/next-fastapi-monorepo/docs/exec-plans/active/.gitkeep +1 -0
  161. package/templates/next-fastapi-monorepo/docs/exec-plans/completed/.gitkeep +1 -0
  162. package/templates/next-fastapi-monorepo/docs/exec-plans/repeated-work.md +15 -0
  163. package/templates/next-fastapi-monorepo/docs/exec-plans/tech-debt-tracker.md +3 -0
  164. package/templates/next-fastapi-monorepo/docs/generated/db-schema.md +3 -0
  165. package/templates/next-fastapi-monorepo/docs/product-specs/index.md +5 -0
  166. package/templates/next-fastapi-monorepo/docs/product-specs/new-user-onboarding.md +12 -0
  167. package/templates/next-fastapi-monorepo/docs/references/design-system-reference-llms.txt +13 -0
  168. package/templates/next-fastapi-monorepo/docs/references/uv-llms.txt +7 -0
  169. package/templates/next-fastapi-monorepo/justfile +31 -0
  170. package/templates/next-fastapi-monorepo/lefthook.yml +8 -0
  171. package/templates/next-fastapi-monorepo/mise.toml +6 -0
  172. package/templates/next-fastapi-monorepo/package.json +41 -0
  173. package/templates/next-fastapi-monorepo/packages/eslint-config/README.md +3 -0
  174. package/templates/next-fastapi-monorepo/packages/eslint-config/base.js +32 -0
  175. package/templates/next-fastapi-monorepo/packages/eslint-config/next.js +51 -0
  176. package/templates/next-fastapi-monorepo/packages/eslint-config/package.json +26 -0
  177. package/templates/next-fastapi-monorepo/packages/eslint-config/react-internal.js +41 -0
  178. package/templates/next-fastapi-monorepo/packages/typescript-config/README.md +3 -0
  179. package/templates/next-fastapi-monorepo/packages/typescript-config/base.json +20 -0
  180. package/templates/next-fastapi-monorepo/packages/typescript-config/nextjs.json +13 -0
  181. package/templates/next-fastapi-monorepo/packages/typescript-config/package.json +9 -0
  182. package/templates/next-fastapi-monorepo/packages/typescript-config/react-library.json +8 -0
  183. package/templates/next-fastapi-monorepo/packages/ui/components.json +23 -0
  184. package/templates/next-fastapi-monorepo/packages/ui/dependency-cruiser.cjs +100 -0
  185. package/templates/next-fastapi-monorepo/packages/ui/eslint.config.js +4 -0
  186. package/templates/next-fastapi-monorepo/packages/ui/package.json +49 -0
  187. package/templates/next-fastapi-monorepo/packages/ui/postcss.config.mjs +6 -0
  188. package/templates/next-fastapi-monorepo/packages/ui/src/config/.gitkeep +1 -0
  189. package/templates/next-fastapi-monorepo/packages/ui/src/providers/.gitkeep +1 -0
  190. package/templates/next-fastapi-monorepo/packages/ui/src/repo/.gitkeep +1 -0
  191. package/templates/next-fastapi-monorepo/packages/ui/src/runtime/hooks/.gitkeep +1 -0
  192. package/templates/next-fastapi-monorepo/packages/ui/src/runtime/utils.ts +6 -0
  193. package/templates/next-fastapi-monorepo/packages/ui/src/service/.gitkeep +1 -0
  194. package/templates/next-fastapi-monorepo/packages/ui/src/styles/globals.css +129 -0
  195. package/templates/next-fastapi-monorepo/packages/ui/src/types/.gitkeep +1 -0
  196. package/templates/next-fastapi-monorepo/packages/ui/src/ui/button.tsx +65 -0
  197. package/templates/next-fastapi-monorepo/packages/ui/src/utils/.gitkeep +1 -0
  198. package/templates/next-fastapi-monorepo/packages/ui/tsconfig.json +10 -0
  199. package/templates/next-fastapi-monorepo/packages/ui/tsconfig.lint.json +8 -0
  200. package/templates/next-fastapi-monorepo/pnpm-lock.yaml +12404 -0
  201. package/templates/next-fastapi-monorepo/pnpm-workspace.yaml +3 -0
  202. package/templates/next-fastapi-monorepo/renovate.json +6 -0
  203. package/templates/next-fastapi-monorepo/tsconfig.json +4 -0
  204. package/templates/next-fastapi-monorepo/turbo.json +27 -0
  205. package/templates/next-monorepo/.eslintrc.js +13 -0
  206. package/templates/next-monorepo/.github/workflows/ci.yml +76 -0
  207. package/templates/next-monorepo/.gitleaks.toml +5 -0
  208. package/templates/next-monorepo/.prettierignore +7 -0
  209. package/templates/next-monorepo/.prettierrc +11 -0
  210. package/templates/next-monorepo/AGENTS.md +35 -0
  211. package/templates/next-monorepo/ARCHITECTURE.md +67 -0
  212. package/templates/next-monorepo/README.md +45 -0
  213. package/templates/next-monorepo/apps/web/app/favicon.ico +0 -0
  214. package/templates/next-monorepo/apps/web/app/layout.tsx +43 -0
  215. package/templates/next-monorepo/apps/web/app/page.tsx +19 -0
  216. package/templates/next-monorepo/apps/web/biome.json +16 -0
  217. package/templates/next-monorepo/apps/web/components/.gitkeep +0 -0
  218. package/templates/next-monorepo/apps/web/components/theme-provider.tsx +71 -0
  219. package/templates/next-monorepo/apps/web/components.json +23 -0
  220. package/templates/next-monorepo/apps/web/dependency-cruiser.cjs +66 -0
  221. package/templates/next-monorepo/apps/web/eslint.config.js +4 -0
  222. package/templates/next-monorepo/apps/web/hooks/.gitkeep +0 -0
  223. package/templates/next-monorepo/apps/web/knip.json +17 -0
  224. package/templates/next-monorepo/apps/web/lib/.gitkeep +0 -0
  225. package/templates/next-monorepo/apps/web/lighthouserc.json +23 -0
  226. package/templates/next-monorepo/apps/web/next-env.d.ts +6 -0
  227. package/templates/next-monorepo/apps/web/next.config.mjs +6 -0
  228. package/templates/next-monorepo/apps/web/package.json +46 -0
  229. package/templates/next-monorepo/apps/web/playwright.config.ts +18 -0
  230. package/templates/next-monorepo/apps/web/postcss.config.mjs +1 -0
  231. package/templates/next-monorepo/apps/web/skills-lock.json +40 -0
  232. package/templates/next-monorepo/apps/web/tests/e2e/smoke.spec.ts +13 -0
  233. package/templates/next-monorepo/apps/web/tests/unit/page.test.tsx +16 -0
  234. package/templates/next-monorepo/apps/web/tsconfig.json +23 -0
  235. package/templates/next-monorepo/apps/web/vitest.config.ts +13 -0
  236. package/templates/next-monorepo/apps/web/vitest.setup.ts +1 -0
  237. package/templates/next-monorepo/docs/DESIGN.md +11 -0
  238. package/templates/next-monorepo/docs/FRONTEND.md +32 -0
  239. package/templates/next-monorepo/docs/PLANS.md +25 -0
  240. package/templates/next-monorepo/docs/PRODUCT_SENSE.md +11 -0
  241. package/templates/next-monorepo/docs/QUALITY_SCORE.md +18 -0
  242. package/templates/next-monorepo/docs/RELIABILITY.md +37 -0
  243. package/templates/next-monorepo/docs/SECURITY.md +14 -0
  244. package/templates/next-monorepo/docs/design-docs/core-beliefs.md +6 -0
  245. package/templates/next-monorepo/docs/design-docs/included-skills.md +13 -0
  246. package/templates/next-monorepo/docs/design-docs/index.md +6 -0
  247. package/templates/next-monorepo/docs/exec-plans/active/.gitkeep +1 -0
  248. package/templates/next-monorepo/docs/exec-plans/completed/.gitkeep +1 -0
  249. package/templates/next-monorepo/docs/exec-plans/repeated-work.md +15 -0
  250. package/templates/next-monorepo/docs/exec-plans/tech-debt-tracker.md +3 -0
  251. package/templates/next-monorepo/docs/generated/db-schema.md +3 -0
  252. package/templates/next-monorepo/docs/product-specs/index.md +5 -0
  253. package/templates/next-monorepo/docs/product-specs/new-user-onboarding.md +12 -0
  254. package/templates/next-monorepo/docs/references/design-system-reference-llms.txt +13 -0
  255. package/templates/next-monorepo/justfile +26 -0
  256. package/templates/next-monorepo/lefthook.yml +8 -0
  257. package/templates/next-monorepo/mise.toml +4 -0
  258. package/templates/next-monorepo/package.json +41 -0
  259. package/templates/next-monorepo/packages/eslint-config/README.md +3 -0
  260. package/templates/next-monorepo/packages/eslint-config/base.js +32 -0
  261. package/templates/next-monorepo/packages/eslint-config/next.js +51 -0
  262. package/templates/next-monorepo/packages/eslint-config/package.json +26 -0
  263. package/templates/next-monorepo/packages/eslint-config/react-internal.js +41 -0
  264. package/templates/next-monorepo/packages/typescript-config/README.md +3 -0
  265. package/templates/next-monorepo/packages/typescript-config/base.json +20 -0
  266. package/templates/next-monorepo/packages/typescript-config/nextjs.json +13 -0
  267. package/templates/next-monorepo/packages/typescript-config/package.json +9 -0
  268. package/templates/next-monorepo/packages/typescript-config/react-library.json +8 -0
  269. package/templates/next-monorepo/packages/ui/components.json +23 -0
  270. package/templates/next-monorepo/packages/ui/dependency-cruiser.cjs +100 -0
  271. package/templates/next-monorepo/packages/ui/eslint.config.js +4 -0
  272. package/templates/next-monorepo/packages/ui/package.json +49 -0
  273. package/templates/next-monorepo/packages/ui/postcss.config.mjs +6 -0
  274. package/templates/next-monorepo/packages/ui/src/config/.gitkeep +1 -0
  275. package/templates/next-monorepo/packages/ui/src/providers/.gitkeep +1 -0
  276. package/templates/next-monorepo/packages/ui/src/repo/.gitkeep +1 -0
  277. package/templates/next-monorepo/packages/ui/src/runtime/hooks/.gitkeep +1 -0
  278. package/templates/next-monorepo/packages/ui/src/runtime/utils.ts +6 -0
  279. package/templates/next-monorepo/packages/ui/src/service/.gitkeep +1 -0
  280. package/templates/next-monorepo/packages/ui/src/styles/globals.css +129 -0
  281. package/templates/next-monorepo/packages/ui/src/types/.gitkeep +1 -0
  282. package/templates/next-monorepo/packages/ui/src/ui/button.tsx +65 -0
  283. package/templates/next-monorepo/packages/ui/src/utils/.gitkeep +1 -0
  284. package/templates/next-monorepo/packages/ui/tsconfig.json +10 -0
  285. package/templates/next-monorepo/packages/ui/tsconfig.lint.json +8 -0
  286. package/templates/next-monorepo/pnpm-lock.yaml +12402 -0
  287. package/templates/next-monorepo/pnpm-workspace.yaml +3 -0
  288. package/templates/next-monorepo/renovate.json +6 -0
  289. package/templates/next-monorepo/tsconfig.json +4 -0
  290. package/templates/next-monorepo/turbo.json +27 -0
  291. package/templates/registry.json +22 -0
@@ -0,0 +1,18 @@
1
+ import { defineConfig, devices } from "@playwright/test"
2
+
3
+ export default defineConfig({
4
+ testDir: "./tests/e2e",
5
+ timeout: 30_000,
6
+ use: {
7
+ baseURL: "http://127.0.0.1:3000",
8
+ trace: "retain-on-failure",
9
+ },
10
+ projects: [
11
+ {
12
+ name: "chromium",
13
+ use: {
14
+ ...devices["Desktop Chrome"],
15
+ },
16
+ },
17
+ ],
18
+ })
@@ -0,0 +1 @@
1
+ export { default } from "@workspace/ui/postcss.config"
@@ -0,0 +1,40 @@
1
+ {
2
+ "version": 1,
3
+ "skills": {
4
+ "frontend-design": {
5
+ "source": "anthropics/skills",
6
+ "sourceType": "github",
7
+ "computedHash": "063a0e6448123cd359ad0044cc46b0e490cc7964d45ef4bb9fd842bd2ffbca67"
8
+ },
9
+ "shadcn": {
10
+ "source": "shadcn/ui",
11
+ "sourceType": "github",
12
+ "computedHash": "873c67922d80775a9fdf596db7964b579f0408c30ec6e3d11989f6055bbec89f"
13
+ },
14
+ "vercel-composition-patterns": {
15
+ "source": "vercel-labs/agent-skills",
16
+ "sourceType": "github",
17
+ "computedHash": "575757e3e25761c8c562d6e395d29f0b76c98b1273c0bd72d88e6ab1bc9c7d42"
18
+ },
19
+ "vercel-react-best-practices": {
20
+ "source": "vercel-labs/agent-skills",
21
+ "sourceType": "github",
22
+ "computedHash": "43ca6c197f8ec13055079da7053232d477068b03ca443f9ac1bc819b95cdd432"
23
+ },
24
+ "vercel-react-native-skills": {
25
+ "source": "vercel-labs/agent-skills",
26
+ "sourceType": "github",
27
+ "computedHash": "41d24eafa7c3d82e270439808f7cfbc4d51aeb2d14f2809a2267c16275784d06"
28
+ },
29
+ "vercel-react-view-transitions": {
30
+ "source": "vercel-labs/agent-skills",
31
+ "sourceType": "github",
32
+ "computedHash": "c8952fc9127fa0564d0cb71dccb4215a5608ac933b5831104f09173a97a46f85"
33
+ },
34
+ "web-design-guidelines": {
35
+ "source": "vercel-labs/agent-skills",
36
+ "sourceType": "github",
37
+ "computedHash": "f3bc47f890f42a44db1007ab390709ec368e4b8c089baee6b0007182236ac474"
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,13 @@
1
+ import AxeBuilder from "@axe-core/playwright"
2
+ import { expect, test } from "@playwright/test"
3
+
4
+ test("homepage smoke flow passes accessibility checks", async ({ page }) => {
5
+ await page.goto("/")
6
+
7
+ await expect(
8
+ page.getByRole("heading", { name: "Project ready!" }),
9
+ ).toBeVisible()
10
+
11
+ const results = await new AxeBuilder({ page }).analyze()
12
+ expect(results.violations).toEqual([])
13
+ })
@@ -0,0 +1,16 @@
1
+ import { render, screen } from "@testing-library/react"
2
+
3
+ import Page from "@/app/page"
4
+
5
+ describe("Page", () => {
6
+ it("renders the starter copy", () => {
7
+ render(<Page />)
8
+
9
+ expect(
10
+ screen.getByRole("heading", { name: "Project ready!" }),
11
+ ).toBeInTheDocument()
12
+ expect(
13
+ screen.getByText("You may now add components and start building."),
14
+ ).toBeInTheDocument()
15
+ })
16
+ })
@@ -0,0 +1,23 @@
1
+ {
2
+ "extends": "@workspace/typescript-config/nextjs.json",
3
+ "compilerOptions": {
4
+ "paths": {
5
+ "@/*": ["./*"],
6
+ "@workspace/ui/*": ["../../packages/ui/src/*"]
7
+ },
8
+ "types": ["vitest/globals"],
9
+ "plugins": [
10
+ {
11
+ "name": "next"
12
+ }
13
+ ]
14
+ },
15
+ "include": [
16
+ "next-env.d.ts",
17
+ "next.config.ts",
18
+ "**/*.ts",
19
+ "**/*.tsx",
20
+ ".next/types/**/*.ts"
21
+ ],
22
+ "exclude": ["node_modules"]
23
+ }
@@ -0,0 +1,13 @@
1
+ import react from "@vitejs/plugin-react"
2
+ import tsconfigPaths from "vite-tsconfig-paths"
3
+ import { defineConfig } from "vitest/config"
4
+
5
+ export default defineConfig({
6
+ plugins: [react(), tsconfigPaths()],
7
+ test: {
8
+ environment: "jsdom",
9
+ globals: true,
10
+ include: ["tests/unit/**/*.test.ts?(x)"],
11
+ setupFiles: ["./vitest.setup.ts"],
12
+ },
13
+ })
@@ -0,0 +1 @@
1
+ import "@testing-library/jest-dom/vitest"
@@ -0,0 +1,11 @@
1
+ # Design
2
+
3
+ Use this file as the entrypoint for design-oriented knowledge.
4
+
5
+ - Design document index: `design-docs/index.md`
6
+ - Core beliefs: `design-docs/core-beliefs.md`
7
+ - Included design and frontend skills: `design-docs/included-skills.md`
8
+ - Design-system references for agents: `references/design-system-reference-llms.txt`
9
+
10
+ The default starter is intentionally minimal.
11
+ Any major visual direction change should start with a short note in `design-docs/`.
@@ -0,0 +1,32 @@
1
+ # Frontend
2
+
3
+ ## Scope
4
+
5
+ This template is frontend-first.
6
+ Most product work will happen in `apps/web` and `packages/ui`.
7
+
8
+ ## Shared UI Package
9
+
10
+ Use these public paths from `@workspace/ui`:
11
+
12
+ - `@workspace/ui/ui/*` for shared rendering components
13
+ - `@workspace/ui/runtime/*` for runtime helpers
14
+ - `@workspace/ui/providers/*` for explicit cross-cutting boundaries
15
+
16
+ Do not reintroduce `components`, `hooks`, or `lib` as top-level shared package layers.
17
+
18
+ ## Component Workflow
19
+
20
+ Add shared primitives with:
21
+
22
+ ```bash
23
+ pnpm dlx shadcn@latest add button -c apps/web
24
+ ```
25
+
26
+ Generated shared components should land in `packages/ui/src/ui`.
27
+
28
+ ## App-Level Frontend Rules
29
+
30
+ - Keep app code aligned with the `app -> components -> hooks -> lib` constraints
31
+ - Prefer package imports over deep relative imports
32
+ - Re-run the affected lint and typecheck lanes before handoff
@@ -0,0 +1,25 @@
1
+ # Plans
2
+
3
+ Plans are first-class artifacts in this template.
4
+
5
+ ## Planning Model
6
+
7
+ - small, transient work may use a short local plan without a committed plan file
8
+ - complex or multi-step work should create an execution plan in `docs/exec-plans/active/`
9
+ - finished execution plans move to `docs/exec-plans/completed/`
10
+ - known cleanup and follow-up items live in `docs/exec-plans/tech-debt-tracker.md`
11
+ - repeated operational work belongs in `docs/exec-plans/repeated-work.md`
12
+
13
+ ## Required Sections For Execution Plans
14
+
15
+ Every execution plan in `active/` or `completed/` should include:
16
+
17
+ - `## Status`
18
+ - `## Scope`
19
+ - `## Steps`
20
+ - `## Progress Log`
21
+ - `## Decision Log`
22
+
23
+ ## Operating Rule
24
+
25
+ Execution plans, completed plans, and tech debt are all versioned and stored in the repository so agents can work without hidden external context.
@@ -0,0 +1,11 @@
1
+ # Product Sense
2
+
3
+ This starter is optimized for getting a new user from scaffold to confident first edit quickly.
4
+
5
+ The default experience should communicate:
6
+
7
+ - the project is wired correctly
8
+ - shared UI is available immediately
9
+ - the next step is to add product-specific components and flows
10
+
11
+ Detailed specs live in `product-specs/`.
@@ -0,0 +1,18 @@
1
+ # Quality Score
2
+
3
+ Use this rubric when reviewing the starter or changes to it.
4
+
5
+ ## High Quality Means
6
+
7
+ - architecture boundaries are mechanically enforced
8
+ - local commands and CI lanes are aligned
9
+ - the first-run experience is clear
10
+ - shared UI imports are easy to discover
11
+ - generated code has an obvious home
12
+
13
+ ## Red Flags
14
+
15
+ - hidden coupling across layers
16
+ - broken type paths after scaffolding
17
+ - docs that disagree with commands
18
+ - cross-cutting concerns bypassing `providers`
@@ -0,0 +1,37 @@
1
+ # Reliability
2
+
3
+ ## Local Commands
4
+
5
+ Run from the repository root:
6
+
7
+ ```bash
8
+ just install
9
+ pnpm dev
10
+ just lint
11
+ just typecheck
12
+ just test
13
+ just ux
14
+ just supply-chain
15
+ just ci
16
+ ```
17
+
18
+ ## Lane Responsibilities
19
+
20
+ - `just lint`: app lint plus shared UI dependency-layer checks
21
+ - `just typecheck`: TypeScript validation for `apps/web`
22
+ - `just test`: Vitest coverage for `apps/web`
23
+ - `just ux`: Playwright, axe, and Lighthouse for the running app
24
+ - `just supply-chain`: gitleaks, osv-scanner, and `pnpm audit`
25
+
26
+ ## CI
27
+
28
+ GitHub Actions uses four jobs in `.github/workflows/ci.yml`:
29
+
30
+ - `fast`
31
+ - `test`
32
+ - `ux`
33
+ - `supply-chain`
34
+
35
+ ## Doc Gardening
36
+
37
+ Doc gardening is a repeated manual task tracked in `docs/exec-plans/repeated-work.md`.
@@ -0,0 +1,14 @@
1
+ # Security
2
+
3
+ This starter focuses on basic supply-chain and secret hygiene.
4
+
5
+ ## Included Checks
6
+
7
+ - `gitleaks` for secret scanning
8
+ - `osv-scanner` for dependency vulnerability scanning
9
+ - `pnpm audit` for Node package alerts
10
+
11
+ ## Expectations
12
+
13
+ - do not commit secrets
14
+ - keep dependencies current
@@ -0,0 +1,6 @@
1
+ # Core Beliefs
2
+
3
+ - the starter should feel ready immediately after scaffold
4
+ - shared UI should be discoverable without hunting through the repo
5
+ - architecture rules should be machine-enforced, not social-only
6
+ - defaults should stay simple enough for agents and humans to extend safely
@@ -0,0 +1,13 @@
1
+ # Included Skills
2
+
3
+ The web app ships with design and frontend reference skills in `apps/web/skills-lock.json`.
4
+
5
+ - `frontend-design`
6
+ - `shadcn`
7
+ - `vercel-composition-patterns`
8
+ - `vercel-react-best-practices`
9
+ - `vercel-react-native-skills`
10
+ - `vercel-react-view-transitions`
11
+ - `web-design-guidelines`
12
+
13
+ Treat these as scaffolded defaults for UI and interaction work.
@@ -0,0 +1,6 @@
1
+ # Design Docs Index
2
+
3
+ - [Core Beliefs](./core-beliefs.md)
4
+ - [Included Skills](./included-skills.md)
5
+
6
+ Add new design notes here when the frontend or developer experience changes materially.
@@ -0,0 +1,15 @@
1
+ # Repeated Work
2
+
3
+ ## Doc Gardening
4
+
5
+ The knowledge base needs periodic manual gardening.
6
+
7
+ Repeat this work when template behavior, architecture rules, onboarding flow, or public commands change:
8
+
9
+ - review `AGENTS.md` and `ARCHITECTURE.md`
10
+ - review `docs/design-docs/`, `docs/product-specs/`, and `docs/references/`
11
+ - move stale execution plans from `active/` to `completed/`
12
+ - update `tech-debt-tracker.md` when cleanup work is discovered
13
+ - remove outdated or irrelevant references that no longer match the stack
14
+
15
+ This work is intentionally documented here rather than automated in CI.
@@ -0,0 +1,3 @@
1
+ # Tech Debt Tracker
2
+
3
+ This document should contain active cleanup items, follow-up work, and known template debt.
@@ -0,0 +1,3 @@
1
+ # DB Schema
2
+
3
+ This document should contain the current database schema snapshot when the template adds persistence.
@@ -0,0 +1,5 @@
1
+ # Product Specs Index
2
+
3
+ - [New User Onboarding](./new-user-onboarding.md)
4
+
5
+ Add product-specific specs here when the starter grows beyond the baseline onboarding flow.
@@ -0,0 +1,12 @@
1
+ # New User Onboarding
2
+
3
+ ## Goal
4
+
5
+ A newly scaffolded project should give a user confidence that the app is wired correctly within a minute.
6
+
7
+ ## Default Experience
8
+
9
+ - the home page renders without extra setup
10
+ - the shared button component is already usable
11
+ - dark mode can be toggled
12
+ - the next implementation step is obvious
@@ -0,0 +1,13 @@
1
+ This reference should contain only design-system facts for the shared UI package.
2
+
3
+ Current baseline:
4
+ - UI system: `shadcn`
5
+ - style preset: `radix-lyra`
6
+ - Tailwind base color: `neutral`
7
+ - CSS variables: enabled
8
+ - icon library: `lucide`
9
+ - theme tokens live in `packages/ui/src/styles/globals.css`
10
+ - the starter includes light and dark theme tokens using OKLCH color values
11
+ - the radius scale is derived from `--radius: 0.625rem`
12
+
13
+ Update this file when the component style, token set, icon set, or theming rules change.
@@ -0,0 +1,26 @@
1
+ set shell := ["bash", "-cu"]
2
+
3
+ install:
4
+ mise install
5
+ pnpm install --frozen-lockfile
6
+ pnpm exec playwright install chromium
7
+
8
+ lint:
9
+ pnpm --filter web lint
10
+ pnpm --dir packages/ui exec depcruise --config dependency-cruiser.cjs src
11
+
12
+ typecheck:
13
+ pnpm --filter web typecheck
14
+
15
+ test:
16
+ pnpm --filter web test
17
+
18
+ ux:
19
+ pnpm --filter web ux
20
+
21
+ supply-chain:
22
+ gitleaks dir . --config .gitleaks.toml
23
+ osv-scanner scan source -r .
24
+ pnpm audit --audit-level=high
25
+
26
+ ci: lint typecheck test ux supply-chain
@@ -0,0 +1,8 @@
1
+ pre-commit:
2
+ parallel: true
3
+ commands:
4
+ lint:
5
+ run: just lint
6
+ typecheck:
7
+ run: just typecheck
8
+
@@ -0,0 +1,4 @@
1
+ [tools]
2
+ node = "20"
3
+ pnpm = "9.15.9"
4
+
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "next-monorepo",
3
+ "version": "0.0.1",
4
+ "private": true,
5
+ "scripts": {
6
+ "build": "turbo build",
7
+ "dev": "turbo dev --filter=web",
8
+ "lint": "just lint",
9
+ "format": "pnpm --filter web format",
10
+ "typecheck": "just typecheck",
11
+ "test": "just test",
12
+ "ux": "just ux",
13
+ "supply-chain": "just supply-chain",
14
+ "ci": "just ci"
15
+ },
16
+ "devDependencies": {
17
+ "@axe-core/playwright": "^4.11.0",
18
+ "@biomejs/biome": "^1.9.4",
19
+ "@lhci/cli": "^0.15.1",
20
+ "@playwright/test": "^1.51.1",
21
+ "@testing-library/jest-dom": "^6.8.0",
22
+ "@testing-library/react": "^16.3.0",
23
+ "@vitejs/plugin-react": "^5.0.4",
24
+ "@workspace/eslint-config": "workspace:*",
25
+ "@workspace/typescript-config": "workspace:*",
26
+ "dependency-cruiser": "^17.1.0",
27
+ "jsdom": "^26.1.0",
28
+ "knip": "^5.44.4",
29
+ "prettier": "^3.8.1",
30
+ "prettier-plugin-tailwindcss": "^0.7.2",
31
+ "start-server-and-test": "^3.0.2",
32
+ "turbo": "^2.8.17",
33
+ "typescript": "5.9.3",
34
+ "vite-tsconfig-paths": "^5.1.4",
35
+ "vitest": "^3.2.4"
36
+ },
37
+ "packageManager": "pnpm@9.15.9",
38
+ "engines": {
39
+ "node": ">=20"
40
+ }
41
+ }
@@ -0,0 +1,3 @@
1
+ # `@workspace/eslint-config`
2
+
3
+ Shared eslint configuration for the workspace.
@@ -0,0 +1,32 @@
1
+ import js from "@eslint/js"
2
+ import eslintConfigPrettier from "eslint-config-prettier"
3
+ import onlyWarn from "eslint-plugin-only-warn"
4
+ import turboPlugin from "eslint-plugin-turbo"
5
+ import tseslint from "typescript-eslint"
6
+
7
+ /**
8
+ * A shared ESLint configuration for the repository.
9
+ *
10
+ * @type {import("eslint").Linter.Config}
11
+ * */
12
+ export const config = [
13
+ js.configs.recommended,
14
+ eslintConfigPrettier,
15
+ ...tseslint.configs.recommended,
16
+ {
17
+ plugins: {
18
+ turbo: turboPlugin,
19
+ },
20
+ rules: {
21
+ "turbo/no-undeclared-env-vars": "warn",
22
+ },
23
+ },
24
+ {
25
+ plugins: {
26
+ onlyWarn,
27
+ },
28
+ },
29
+ {
30
+ ignores: ["dist/**", ".next/**", "**/.turbo/**", "**/coverage/**"],
31
+ },
32
+ ]
@@ -0,0 +1,51 @@
1
+ import js from "@eslint/js"
2
+ import pluginNext from "@next/eslint-plugin-next"
3
+ import eslintConfigPrettier from "eslint-config-prettier"
4
+ import pluginReact from "eslint-plugin-react"
5
+ import pluginReactHooks from "eslint-plugin-react-hooks"
6
+ import globals from "globals"
7
+ import tseslint from "typescript-eslint"
8
+
9
+ import { config as baseConfig } from "./base.js"
10
+
11
+ /**
12
+ * A custom ESLint configuration for libraries that use Next.js.
13
+ *
14
+ * @type {import("eslint").Linter.Config}
15
+ * */
16
+ export const nextJsConfig = [
17
+ ...baseConfig,
18
+ js.configs.recommended,
19
+ eslintConfigPrettier,
20
+ ...tseslint.configs.recommended,
21
+ {
22
+ ...pluginReact.configs.flat.recommended,
23
+ languageOptions: {
24
+ ...pluginReact.configs.flat.recommended.languageOptions,
25
+ globals: {
26
+ ...globals.serviceworker,
27
+ },
28
+ },
29
+ },
30
+ {
31
+ plugins: {
32
+ "@next/next": pluginNext,
33
+ },
34
+ rules: {
35
+ ...pluginNext.configs.recommended.rules,
36
+ ...pluginNext.configs["core-web-vitals"].rules,
37
+ },
38
+ },
39
+ {
40
+ plugins: {
41
+ "react-hooks": pluginReactHooks,
42
+ },
43
+ settings: { react: { version: "detect" } },
44
+ rules: {
45
+ ...pluginReactHooks.configs.recommended.rules,
46
+ // React scope no longer necessary with new JSX transform.
47
+ "react/react-in-jsx-scope": "off",
48
+ "react/prop-types": "off",
49
+ },
50
+ },
51
+ ]
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@workspace/eslint-config",
3
+ "version": "0.0.0",
4
+ "type": "module",
5
+ "private": true,
6
+ "exports": {
7
+ "./base": "./base.js",
8
+ "./next-js": "./next.js",
9
+ "./react-internal": "./react-internal.js"
10
+ },
11
+ "devDependencies": {
12
+ "@eslint/js": "^9.39.2",
13
+ "@next/eslint-plugin-next": "^16.1.6",
14
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
15
+ "@typescript-eslint/parser": "^8.54.0",
16
+ "eslint": "^9.39.2",
17
+ "eslint-config-prettier": "^10.1.8",
18
+ "eslint-plugin-only-warn": "^1.1.0",
19
+ "eslint-plugin-react": "^7.37.5",
20
+ "eslint-plugin-react-hooks": "^7.0.1",
21
+ "eslint-plugin-turbo": "^2.8.1",
22
+ "globals": "^17.2.0",
23
+ "typescript": "^5.9.3",
24
+ "typescript-eslint": "^8.54.0"
25
+ }
26
+ }
@@ -0,0 +1,41 @@
1
+ import js from "@eslint/js"
2
+ import eslintConfigPrettier from "eslint-config-prettier"
3
+ import pluginReact from "eslint-plugin-react"
4
+ import pluginReactHooks from "eslint-plugin-react-hooks"
5
+ import globals from "globals"
6
+ import tseslint from "typescript-eslint"
7
+
8
+ import { config as baseConfig } from "./base.js"
9
+
10
+ /**
11
+ * A custom ESLint configuration for libraries that use React.
12
+ *
13
+ * @type {import("eslint").Linter.Config} */
14
+ export const config = [
15
+ ...baseConfig,
16
+ js.configs.recommended,
17
+ eslintConfigPrettier,
18
+ ...tseslint.configs.recommended,
19
+ pluginReact.configs.flat.recommended,
20
+ {
21
+ languageOptions: {
22
+ ...pluginReact.configs.flat.recommended.languageOptions,
23
+ globals: {
24
+ ...globals.serviceworker,
25
+ ...globals.browser,
26
+ },
27
+ },
28
+ },
29
+ {
30
+ plugins: {
31
+ "react-hooks": pluginReactHooks,
32
+ },
33
+ settings: { react: { version: "detect" } },
34
+ rules: {
35
+ ...pluginReactHooks.configs.recommended.rules,
36
+ // React scope no longer necessary with new JSX transform.
37
+ "react/react-in-jsx-scope": "off",
38
+ "react/prop-types": "off",
39
+ },
40
+ },
41
+ ]
@@ -0,0 +1,3 @@
1
+ # `@workspace/typescript-config`
2
+
3
+ Shared typescript configuration for the workspace.
@@ -0,0 +1,20 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/tsconfig",
3
+ "display": "Default",
4
+ "compilerOptions": {
5
+ "declaration": true,
6
+ "declarationMap": true,
7
+ "esModuleInterop": true,
8
+ "incremental": false,
9
+ "isolatedModules": true,
10
+ "lib": ["es2022", "DOM", "DOM.Iterable"],
11
+ "module": "NodeNext",
12
+ "moduleDetection": "force",
13
+ "moduleResolution": "NodeNext",
14
+ "noUncheckedIndexedAccess": true,
15
+ "resolveJsonModule": true,
16
+ "skipLibCheck": true,
17
+ "strict": true,
18
+ "target": "ES2022"
19
+ }
20
+ }