@cherishxn/agent-scaffold 0.0.0-stage → 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 (659) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +71 -2
  3. package/THIRD_PARTY_NOTICES.md +14 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.js +100 -0
  6. package/dist/generate.d.ts +55 -0
  7. package/dist/generate.js +154 -0
  8. package/dist/model.d.ts +33 -0
  9. package/dist/model.js +24 -0
  10. package/dist/verify.d.ts +61 -0
  11. package/dist/verify.js +264 -0
  12. package/package.json +49 -4
  13. package/schemas/manifest.json +171 -0
  14. package/schemas/plan.json +164 -0
  15. package/schemas/result.json +97 -0
  16. package/schemas/spec.json +50 -0
  17. package/skills/scaffold-use/SKILL.md +6 -0
  18. package/templates/catalog.json +37 -0
  19. package/templates/next-fullstack-antd/.agents/skills/design-contract/SKILL.md +23 -0
  20. package/templates/next-fullstack-antd/.agents/skills/project-work/SKILL.md +8 -0
  21. package/templates/next-fullstack-antd/.claude/skills/design-contract/SKILL.md +23 -0
  22. package/templates/next-fullstack-antd/.claude/skills/project-work/SKILL.md +8 -0
  23. package/templates/next-fullstack-antd/.dockerignore +18 -0
  24. package/templates/next-fullstack-antd/.env.example +13 -0
  25. package/templates/next-fullstack-antd/.grok/skills/design-contract/SKILL.md +23 -0
  26. package/templates/next-fullstack-antd/.grok/skills/project-work/SKILL.md +8 -0
  27. package/templates/next-fullstack-antd/.scaffold-checks.json +7 -0
  28. package/templates/next-fullstack-antd/AGENTS.md +11 -0
  29. package/templates/next-fullstack-antd/CLAUDE.md +1 -0
  30. package/templates/next-fullstack-antd/DESIGN.md +208 -0
  31. package/templates/next-fullstack-antd/LICENSE +21 -0
  32. package/templates/next-fullstack-antd/README.md +55 -0
  33. package/templates/next-fullstack-antd/THIRD_PARTY_NOTICES.md +14 -0
  34. package/templates/next-fullstack-antd/compose.yaml +18 -0
  35. package/templates/next-fullstack-antd/design/guide.md +61 -0
  36. package/templates/next-fullstack-antd/design/layout.css +6 -0
  37. package/templates/next-fullstack-antd/design/structure.json +107 -0
  38. package/templates/next-fullstack-antd/design/tokens.json +171 -0
  39. package/templates/next-fullstack-antd/design/widgets.css +30 -0
  40. package/templates/next-fullstack-antd/design/widgets.json +233 -0
  41. package/templates/next-fullstack-antd/docs/PROJECT.md +9 -0
  42. package/templates/next-fullstack-antd/docs/api.d.ts +516 -0
  43. package/templates/next-fullstack-antd/docs/openapi.json +439 -0
  44. package/templates/next-fullstack-antd/gitignore.template +19 -0
  45. package/templates/next-fullstack-antd/licenses/fastapi.txt +21 -0
  46. package/templates/next-fullstack-antd/licenses/nest.txt +22 -0
  47. package/templates/next-fullstack-antd/licenses/next.txt +21 -0
  48. package/templates/next-fullstack-antd/licenses/shadcn.txt +21 -0
  49. package/templates/next-fullstack-antd/licenses/sources.json +27 -0
  50. package/templates/next-fullstack-antd/licenses/spring.txt +202 -0
  51. package/templates/next-fullstack-antd/package-lock.json +440 -0
  52. package/templates/next-fullstack-antd/package.json +21 -0
  53. package/templates/next-fullstack-antd/playwright.config.ts +3 -0
  54. package/templates/next-fullstack-antd/project.json +8 -0
  55. package/templates/next-fullstack-antd/scripts/design-coverage.mjs +20 -0
  56. package/templates/next-fullstack-antd/scripts/design-next-cleanup.mjs +13 -0
  57. package/templates/next-fullstack-antd/scripts/design-verify.mjs +154 -0
  58. package/templates/next-fullstack-antd/scripts/design.mjs +108 -0
  59. package/templates/next-fullstack-antd/scripts/project.mjs +118 -0
  60. package/templates/next-fullstack-antd/tests/contract.spec.ts +47 -0
  61. package/templates/next-fullstack-antd/tests/design/harness.tsx +63 -0
  62. package/templates/next-fullstack-antd/tests/ui.spec.ts +61 -0
  63. package/templates/next-fullstack-antd/web/Dockerfile +12 -0
  64. package/templates/next-fullstack-antd/web/app/api/auth/login/route.ts +1 -0
  65. package/templates/next-fullstack-antd/web/app/api/auth/logout/route.ts +1 -0
  66. package/templates/next-fullstack-antd/web/app/api/auth/me/route.ts +1 -0
  67. package/templates/next-fullstack-antd/web/app/api/health/route.ts +1 -0
  68. package/templates/next-fullstack-antd/web/app/api/records/[id]/route.ts +5 -0
  69. package/templates/next-fullstack-antd/web/app/api/records/route.ts +3 -0
  70. package/templates/next-fullstack-antd/web/app/layout.tsx +5 -0
  71. package/templates/next-fullstack-antd/web/app/page.tsx +2 -0
  72. package/templates/next-fullstack-antd/web/eslint.config.mjs +3 -0
  73. package/templates/next-fullstack-antd/web/lib/api.ts +35 -0
  74. package/templates/next-fullstack-antd/web/lib/auth.ts +10 -0
  75. package/templates/next-fullstack-antd/web/lib/db.ts +3 -0
  76. package/templates/next-fullstack-antd/web/lib/session.test.ts +15 -0
  77. package/templates/next-fullstack-antd/web/lib/validation.test.ts +3 -0
  78. package/templates/next-fullstack-antd/web/lib/validation.ts +5 -0
  79. package/templates/next-fullstack-antd/web/next-env.d.ts +7 -0
  80. package/templates/next-fullstack-antd/web/next.config.ts +3 -0
  81. package/templates/next-fullstack-antd/web/package.json +35 -0
  82. package/templates/next-fullstack-antd/web/pnpm-lock.yaml +3756 -0
  83. package/templates/next-fullstack-antd/web/pnpm-workspace.yaml +7 -0
  84. package/templates/next-fullstack-antd/web/prisma/migrations/202610190001_initial/migration.sql +99 -0
  85. package/templates/next-fullstack-antd/web/prisma/migrations/migration_lock.toml +1 -0
  86. package/templates/next-fullstack-antd/web/prisma/schema.prisma +72 -0
  87. package/templates/next-fullstack-antd/web/scripts/seed.ts +4 -0
  88. package/templates/next-fullstack-antd/web/src/App.tsx +29 -0
  89. package/templates/next-fullstack-antd/web/src/design-layout.css +7 -0
  90. package/templates/next-fullstack-antd/web/src/design-runtime.json +511 -0
  91. package/templates/next-fullstack-antd/web/src/design-tokens.css +168 -0
  92. package/templates/next-fullstack-antd/web/src/design-widgets.css +31 -0
  93. package/templates/next-fullstack-antd/web/src/structure-view.tsx +16 -0
  94. package/templates/next-fullstack-antd/web/src/styles.css +3 -0
  95. package/templates/next-fullstack-antd/web/src/ui.tsx +30 -0
  96. package/templates/next-fullstack-antd/web/src/widget-icon.tsx +5 -0
  97. package/templates/next-fullstack-antd/web/src/widget-types.ts +13 -0
  98. package/templates/next-fullstack-antd/web/src/workspace-model.ts +85 -0
  99. package/templates/next-fullstack-antd/web/tsconfig.json +42 -0
  100. package/templates/next-fullstack-antd/web/vitest.config.ts +2 -0
  101. package/templates/next-fullstack-shadcn/.agents/skills/design-contract/SKILL.md +23 -0
  102. package/templates/next-fullstack-shadcn/.agents/skills/project-work/SKILL.md +8 -0
  103. package/templates/next-fullstack-shadcn/.claude/skills/design-contract/SKILL.md +23 -0
  104. package/templates/next-fullstack-shadcn/.claude/skills/project-work/SKILL.md +8 -0
  105. package/templates/next-fullstack-shadcn/.dockerignore +18 -0
  106. package/templates/next-fullstack-shadcn/.env.example +13 -0
  107. package/templates/next-fullstack-shadcn/.grok/skills/design-contract/SKILL.md +23 -0
  108. package/templates/next-fullstack-shadcn/.grok/skills/project-work/SKILL.md +8 -0
  109. package/templates/next-fullstack-shadcn/.scaffold-checks.json +7 -0
  110. package/templates/next-fullstack-shadcn/AGENTS.md +11 -0
  111. package/templates/next-fullstack-shadcn/CLAUDE.md +1 -0
  112. package/templates/next-fullstack-shadcn/DESIGN.md +208 -0
  113. package/templates/next-fullstack-shadcn/LICENSE +21 -0
  114. package/templates/next-fullstack-shadcn/README.md +55 -0
  115. package/templates/next-fullstack-shadcn/THIRD_PARTY_NOTICES.md +14 -0
  116. package/templates/next-fullstack-shadcn/compose.yaml +18 -0
  117. package/templates/next-fullstack-shadcn/design/guide.md +61 -0
  118. package/templates/next-fullstack-shadcn/design/layout.css +6 -0
  119. package/templates/next-fullstack-shadcn/design/structure.json +107 -0
  120. package/templates/next-fullstack-shadcn/design/tokens.json +171 -0
  121. package/templates/next-fullstack-shadcn/design/widgets.css +30 -0
  122. package/templates/next-fullstack-shadcn/design/widgets.json +233 -0
  123. package/templates/next-fullstack-shadcn/docs/PROJECT.md +9 -0
  124. package/templates/next-fullstack-shadcn/docs/api.d.ts +516 -0
  125. package/templates/next-fullstack-shadcn/docs/openapi.json +439 -0
  126. package/templates/next-fullstack-shadcn/gitignore.template +19 -0
  127. package/templates/next-fullstack-shadcn/licenses/fastapi.txt +21 -0
  128. package/templates/next-fullstack-shadcn/licenses/nest.txt +22 -0
  129. package/templates/next-fullstack-shadcn/licenses/next.txt +21 -0
  130. package/templates/next-fullstack-shadcn/licenses/shadcn.txt +21 -0
  131. package/templates/next-fullstack-shadcn/licenses/sources.json +27 -0
  132. package/templates/next-fullstack-shadcn/licenses/spring.txt +202 -0
  133. package/templates/next-fullstack-shadcn/package-lock.json +440 -0
  134. package/templates/next-fullstack-shadcn/package.json +21 -0
  135. package/templates/next-fullstack-shadcn/playwright.config.ts +3 -0
  136. package/templates/next-fullstack-shadcn/project.json +8 -0
  137. package/templates/next-fullstack-shadcn/scripts/design-coverage.mjs +20 -0
  138. package/templates/next-fullstack-shadcn/scripts/design-next-cleanup.mjs +13 -0
  139. package/templates/next-fullstack-shadcn/scripts/design-verify.mjs +154 -0
  140. package/templates/next-fullstack-shadcn/scripts/design.mjs +108 -0
  141. package/templates/next-fullstack-shadcn/scripts/project.mjs +118 -0
  142. package/templates/next-fullstack-shadcn/tests/contract.spec.ts +47 -0
  143. package/templates/next-fullstack-shadcn/tests/design/harness.tsx +63 -0
  144. package/templates/next-fullstack-shadcn/tests/ui.spec.ts +61 -0
  145. package/templates/next-fullstack-shadcn/web/Dockerfile +12 -0
  146. package/templates/next-fullstack-shadcn/web/app/api/auth/login/route.ts +1 -0
  147. package/templates/next-fullstack-shadcn/web/app/api/auth/logout/route.ts +1 -0
  148. package/templates/next-fullstack-shadcn/web/app/api/auth/me/route.ts +1 -0
  149. package/templates/next-fullstack-shadcn/web/app/api/health/route.ts +1 -0
  150. package/templates/next-fullstack-shadcn/web/app/api/records/[id]/route.ts +5 -0
  151. package/templates/next-fullstack-shadcn/web/app/api/records/route.ts +3 -0
  152. package/templates/next-fullstack-shadcn/web/app/layout.tsx +4 -0
  153. package/templates/next-fullstack-shadcn/web/app/page.tsx +2 -0
  154. package/templates/next-fullstack-shadcn/web/eslint.config.mjs +3 -0
  155. package/templates/next-fullstack-shadcn/web/lib/api.ts +35 -0
  156. package/templates/next-fullstack-shadcn/web/lib/auth.ts +10 -0
  157. package/templates/next-fullstack-shadcn/web/lib/db.ts +3 -0
  158. package/templates/next-fullstack-shadcn/web/lib/session.test.ts +15 -0
  159. package/templates/next-fullstack-shadcn/web/lib/validation.test.ts +3 -0
  160. package/templates/next-fullstack-shadcn/web/lib/validation.ts +5 -0
  161. package/templates/next-fullstack-shadcn/web/next-env.d.ts +7 -0
  162. package/templates/next-fullstack-shadcn/web/next.config.ts +3 -0
  163. package/templates/next-fullstack-shadcn/web/package.json +39 -0
  164. package/templates/next-fullstack-shadcn/web/pnpm-lock.yaml +3286 -0
  165. package/templates/next-fullstack-shadcn/web/pnpm-workspace.yaml +7 -0
  166. package/templates/next-fullstack-shadcn/web/postcss.config.mjs +1 -0
  167. package/templates/next-fullstack-shadcn/web/prisma/migrations/202610190001_initial/migration.sql +99 -0
  168. package/templates/next-fullstack-shadcn/web/prisma/migrations/migration_lock.toml +1 -0
  169. package/templates/next-fullstack-shadcn/web/prisma/schema.prisma +72 -0
  170. package/templates/next-fullstack-shadcn/web/scripts/seed.ts +4 -0
  171. package/templates/next-fullstack-shadcn/web/src/App.tsx +30 -0
  172. package/templates/next-fullstack-shadcn/web/src/design-layout.css +7 -0
  173. package/templates/next-fullstack-shadcn/web/src/design-runtime.json +511 -0
  174. package/templates/next-fullstack-shadcn/web/src/design-tokens.css +168 -0
  175. package/templates/next-fullstack-shadcn/web/src/design-widgets.css +31 -0
  176. package/templates/next-fullstack-shadcn/web/src/structure-view.tsx +16 -0
  177. package/templates/next-fullstack-shadcn/web/src/styles.css +3 -0
  178. package/templates/next-fullstack-shadcn/web/src/tailwind.css +2 -0
  179. package/templates/next-fullstack-shadcn/web/src/ui.tsx +13 -0
  180. package/templates/next-fullstack-shadcn/web/src/widget-icon.tsx +5 -0
  181. package/templates/next-fullstack-shadcn/web/src/widget-types.ts +13 -0
  182. package/templates/next-fullstack-shadcn/web/src/workspace-model.ts +85 -0
  183. package/templates/next-fullstack-shadcn/web/tsconfig.json +42 -0
  184. package/templates/next-fullstack-shadcn/web/vitest.config.ts +2 -0
  185. package/templates/react-fastapi-antd/.agents/skills/design-contract/SKILL.md +23 -0
  186. package/templates/react-fastapi-antd/.agents/skills/project-work/SKILL.md +8 -0
  187. package/templates/react-fastapi-antd/.claude/skills/design-contract/SKILL.md +23 -0
  188. package/templates/react-fastapi-antd/.claude/skills/project-work/SKILL.md +8 -0
  189. package/templates/react-fastapi-antd/.dockerignore +18 -0
  190. package/templates/react-fastapi-antd/.env.example +13 -0
  191. package/templates/react-fastapi-antd/.grok/skills/design-contract/SKILL.md +23 -0
  192. package/templates/react-fastapi-antd/.grok/skills/project-work/SKILL.md +8 -0
  193. package/templates/react-fastapi-antd/.scaffold-checks.json +7 -0
  194. package/templates/react-fastapi-antd/AGENTS.md +11 -0
  195. package/templates/react-fastapi-antd/CLAUDE.md +1 -0
  196. package/templates/react-fastapi-antd/DESIGN.md +208 -0
  197. package/templates/react-fastapi-antd/LICENSE +21 -0
  198. package/templates/react-fastapi-antd/README.md +55 -0
  199. package/templates/react-fastapi-antd/THIRD_PARTY_NOTICES.md +14 -0
  200. package/templates/react-fastapi-antd/backend/.python-version +1 -0
  201. package/templates/react-fastapi-antd/backend/Dockerfile +10 -0
  202. package/templates/react-fastapi-antd/backend/alembic.ini +3 -0
  203. package/templates/react-fastapi-antd/backend/app/__init__.py +0 -0
  204. package/templates/react-fastapi-antd/backend/app/core/__init__.py +0 -0
  205. package/templates/react-fastapi-antd/backend/app/core/security.py +25 -0
  206. package/templates/react-fastapi-antd/backend/app/db.py +11 -0
  207. package/templates/react-fastapi-antd/backend/app/main.py +146 -0
  208. package/templates/react-fastapi-antd/backend/app/models.py +21 -0
  209. package/templates/react-fastapi-antd/backend/app/seed.py +21 -0
  210. package/templates/react-fastapi-antd/backend/migrations/env.py +9 -0
  211. package/templates/react-fastapi-antd/backend/migrations/versions/0001_initial.py +18 -0
  212. package/templates/react-fastapi-antd/backend/pyproject.toml +16 -0
  213. package/templates/react-fastapi-antd/backend/tests/test_api.py +27 -0
  214. package/templates/react-fastapi-antd/backend/uv.lock +1085 -0
  215. package/templates/react-fastapi-antd/compose.yaml +18 -0
  216. package/templates/react-fastapi-antd/design/guide.md +61 -0
  217. package/templates/react-fastapi-antd/design/layout.css +6 -0
  218. package/templates/react-fastapi-antd/design/structure.json +107 -0
  219. package/templates/react-fastapi-antd/design/tokens.json +171 -0
  220. package/templates/react-fastapi-antd/design/widgets.css +30 -0
  221. package/templates/react-fastapi-antd/design/widgets.json +233 -0
  222. package/templates/react-fastapi-antd/docs/PROJECT.md +9 -0
  223. package/templates/react-fastapi-antd/docs/api.d.ts +516 -0
  224. package/templates/react-fastapi-antd/docs/openapi.json +439 -0
  225. package/templates/react-fastapi-antd/gitignore.template +19 -0
  226. package/templates/react-fastapi-antd/licenses/fastapi.txt +21 -0
  227. package/templates/react-fastapi-antd/licenses/nest.txt +22 -0
  228. package/templates/react-fastapi-antd/licenses/next.txt +21 -0
  229. package/templates/react-fastapi-antd/licenses/shadcn.txt +21 -0
  230. package/templates/react-fastapi-antd/licenses/sources.json +27 -0
  231. package/templates/react-fastapi-antd/licenses/spring.txt +202 -0
  232. package/templates/react-fastapi-antd/package-lock.json +440 -0
  233. package/templates/react-fastapi-antd/package.json +21 -0
  234. package/templates/react-fastapi-antd/playwright.config.ts +3 -0
  235. package/templates/react-fastapi-antd/project.json +8 -0
  236. package/templates/react-fastapi-antd/scripts/design-coverage.mjs +20 -0
  237. package/templates/react-fastapi-antd/scripts/design-next-cleanup.mjs +13 -0
  238. package/templates/react-fastapi-antd/scripts/design-verify.mjs +154 -0
  239. package/templates/react-fastapi-antd/scripts/design.mjs +108 -0
  240. package/templates/react-fastapi-antd/scripts/project.mjs +118 -0
  241. package/templates/react-fastapi-antd/tests/contract.spec.ts +47 -0
  242. package/templates/react-fastapi-antd/tests/design/harness.tsx +63 -0
  243. package/templates/react-fastapi-antd/tests/ui.spec.ts +61 -0
  244. package/templates/react-fastapi-antd/web/bun.lock +442 -0
  245. package/templates/react-fastapi-antd/web/eslint.config.mjs +3 -0
  246. package/templates/react-fastapi-antd/web/index.html +1 -0
  247. package/templates/react-fastapi-antd/web/package.json +28 -0
  248. package/templates/react-fastapi-antd/web/src/App.tsx +29 -0
  249. package/templates/react-fastapi-antd/web/src/design-layout.css +7 -0
  250. package/templates/react-fastapi-antd/web/src/design-runtime.json +511 -0
  251. package/templates/react-fastapi-antd/web/src/design-tokens.css +168 -0
  252. package/templates/react-fastapi-antd/web/src/design-widgets.css +31 -0
  253. package/templates/react-fastapi-antd/web/src/main.tsx +6 -0
  254. package/templates/react-fastapi-antd/web/src/structure-view.tsx +16 -0
  255. package/templates/react-fastapi-antd/web/src/styles.css +3 -0
  256. package/templates/react-fastapi-antd/web/src/ui.tsx +30 -0
  257. package/templates/react-fastapi-antd/web/src/widget-icon.tsx +5 -0
  258. package/templates/react-fastapi-antd/web/src/widget-types.ts +13 -0
  259. package/templates/react-fastapi-antd/web/src/workspace-model.ts +85 -0
  260. package/templates/react-fastapi-antd/web/tsconfig.json +22 -0
  261. package/templates/react-fastapi-antd/web/vite.config.ts +3 -0
  262. package/templates/react-fastapi-shadcn/.agents/skills/design-contract/SKILL.md +23 -0
  263. package/templates/react-fastapi-shadcn/.agents/skills/project-work/SKILL.md +8 -0
  264. package/templates/react-fastapi-shadcn/.claude/skills/design-contract/SKILL.md +23 -0
  265. package/templates/react-fastapi-shadcn/.claude/skills/project-work/SKILL.md +8 -0
  266. package/templates/react-fastapi-shadcn/.dockerignore +18 -0
  267. package/templates/react-fastapi-shadcn/.env.example +13 -0
  268. package/templates/react-fastapi-shadcn/.grok/skills/design-contract/SKILL.md +23 -0
  269. package/templates/react-fastapi-shadcn/.grok/skills/project-work/SKILL.md +8 -0
  270. package/templates/react-fastapi-shadcn/.scaffold-checks.json +7 -0
  271. package/templates/react-fastapi-shadcn/AGENTS.md +11 -0
  272. package/templates/react-fastapi-shadcn/CLAUDE.md +1 -0
  273. package/templates/react-fastapi-shadcn/DESIGN.md +208 -0
  274. package/templates/react-fastapi-shadcn/LICENSE +21 -0
  275. package/templates/react-fastapi-shadcn/README.md +55 -0
  276. package/templates/react-fastapi-shadcn/THIRD_PARTY_NOTICES.md +14 -0
  277. package/templates/react-fastapi-shadcn/backend/.python-version +1 -0
  278. package/templates/react-fastapi-shadcn/backend/Dockerfile +10 -0
  279. package/templates/react-fastapi-shadcn/backend/alembic.ini +3 -0
  280. package/templates/react-fastapi-shadcn/backend/app/__init__.py +0 -0
  281. package/templates/react-fastapi-shadcn/backend/app/core/__init__.py +0 -0
  282. package/templates/react-fastapi-shadcn/backend/app/core/security.py +25 -0
  283. package/templates/react-fastapi-shadcn/backend/app/db.py +11 -0
  284. package/templates/react-fastapi-shadcn/backend/app/main.py +146 -0
  285. package/templates/react-fastapi-shadcn/backend/app/models.py +21 -0
  286. package/templates/react-fastapi-shadcn/backend/app/seed.py +21 -0
  287. package/templates/react-fastapi-shadcn/backend/migrations/env.py +9 -0
  288. package/templates/react-fastapi-shadcn/backend/migrations/versions/0001_initial.py +18 -0
  289. package/templates/react-fastapi-shadcn/backend/pyproject.toml +16 -0
  290. package/templates/react-fastapi-shadcn/backend/tests/test_api.py +27 -0
  291. package/templates/react-fastapi-shadcn/backend/uv.lock +1085 -0
  292. package/templates/react-fastapi-shadcn/compose.yaml +18 -0
  293. package/templates/react-fastapi-shadcn/design/guide.md +61 -0
  294. package/templates/react-fastapi-shadcn/design/layout.css +6 -0
  295. package/templates/react-fastapi-shadcn/design/structure.json +107 -0
  296. package/templates/react-fastapi-shadcn/design/tokens.json +171 -0
  297. package/templates/react-fastapi-shadcn/design/widgets.css +30 -0
  298. package/templates/react-fastapi-shadcn/design/widgets.json +233 -0
  299. package/templates/react-fastapi-shadcn/docs/PROJECT.md +9 -0
  300. package/templates/react-fastapi-shadcn/docs/api.d.ts +516 -0
  301. package/templates/react-fastapi-shadcn/docs/openapi.json +439 -0
  302. package/templates/react-fastapi-shadcn/gitignore.template +19 -0
  303. package/templates/react-fastapi-shadcn/licenses/fastapi.txt +21 -0
  304. package/templates/react-fastapi-shadcn/licenses/nest.txt +22 -0
  305. package/templates/react-fastapi-shadcn/licenses/next.txt +21 -0
  306. package/templates/react-fastapi-shadcn/licenses/shadcn.txt +21 -0
  307. package/templates/react-fastapi-shadcn/licenses/sources.json +27 -0
  308. package/templates/react-fastapi-shadcn/licenses/spring.txt +202 -0
  309. package/templates/react-fastapi-shadcn/package-lock.json +440 -0
  310. package/templates/react-fastapi-shadcn/package.json +21 -0
  311. package/templates/react-fastapi-shadcn/playwright.config.ts +3 -0
  312. package/templates/react-fastapi-shadcn/project.json +8 -0
  313. package/templates/react-fastapi-shadcn/scripts/design-coverage.mjs +20 -0
  314. package/templates/react-fastapi-shadcn/scripts/design-next-cleanup.mjs +13 -0
  315. package/templates/react-fastapi-shadcn/scripts/design-verify.mjs +154 -0
  316. package/templates/react-fastapi-shadcn/scripts/design.mjs +108 -0
  317. package/templates/react-fastapi-shadcn/scripts/project.mjs +118 -0
  318. package/templates/react-fastapi-shadcn/tests/contract.spec.ts +47 -0
  319. package/templates/react-fastapi-shadcn/tests/design/harness.tsx +63 -0
  320. package/templates/react-fastapi-shadcn/tests/ui.spec.ts +61 -0
  321. package/templates/react-fastapi-shadcn/web/bun.lock +413 -0
  322. package/templates/react-fastapi-shadcn/web/eslint.config.mjs +3 -0
  323. package/templates/react-fastapi-shadcn/web/index.html +1 -0
  324. package/templates/react-fastapi-shadcn/web/package.json +33 -0
  325. package/templates/react-fastapi-shadcn/web/src/App.tsx +30 -0
  326. package/templates/react-fastapi-shadcn/web/src/design-layout.css +7 -0
  327. package/templates/react-fastapi-shadcn/web/src/design-runtime.json +511 -0
  328. package/templates/react-fastapi-shadcn/web/src/design-tokens.css +168 -0
  329. package/templates/react-fastapi-shadcn/web/src/design-widgets.css +31 -0
  330. package/templates/react-fastapi-shadcn/web/src/main.tsx +6 -0
  331. package/templates/react-fastapi-shadcn/web/src/structure-view.tsx +16 -0
  332. package/templates/react-fastapi-shadcn/web/src/styles.css +3 -0
  333. package/templates/react-fastapi-shadcn/web/src/tailwind.css +2 -0
  334. package/templates/react-fastapi-shadcn/web/src/ui.tsx +13 -0
  335. package/templates/react-fastapi-shadcn/web/src/widget-icon.tsx +5 -0
  336. package/templates/react-fastapi-shadcn/web/src/widget-types.ts +13 -0
  337. package/templates/react-fastapi-shadcn/web/src/workspace-model.ts +85 -0
  338. package/templates/react-fastapi-shadcn/web/tsconfig.json +22 -0
  339. package/templates/react-fastapi-shadcn/web/vite.config.ts +4 -0
  340. package/templates/react-nest-antd/.agents/skills/design-contract/SKILL.md +23 -0
  341. package/templates/react-nest-antd/.agents/skills/project-work/SKILL.md +8 -0
  342. package/templates/react-nest-antd/.claude/skills/design-contract/SKILL.md +23 -0
  343. package/templates/react-nest-antd/.claude/skills/project-work/SKILL.md +8 -0
  344. package/templates/react-nest-antd/.dockerignore +18 -0
  345. package/templates/react-nest-antd/.env.example +13 -0
  346. package/templates/react-nest-antd/.grok/skills/design-contract/SKILL.md +23 -0
  347. package/templates/react-nest-antd/.grok/skills/project-work/SKILL.md +8 -0
  348. package/templates/react-nest-antd/.scaffold-checks.json +7 -0
  349. package/templates/react-nest-antd/AGENTS.md +11 -0
  350. package/templates/react-nest-antd/CLAUDE.md +1 -0
  351. package/templates/react-nest-antd/DESIGN.md +208 -0
  352. package/templates/react-nest-antd/LICENSE +21 -0
  353. package/templates/react-nest-antd/README.md +55 -0
  354. package/templates/react-nest-antd/THIRD_PARTY_NOTICES.md +14 -0
  355. package/templates/react-nest-antd/backend/Dockerfile +12 -0
  356. package/templates/react-nest-antd/backend/eslint.config.mjs +3 -0
  357. package/templates/react-nest-antd/backend/jest.config.cjs +1 -0
  358. package/templates/react-nest-antd/backend/package.json +40 -0
  359. package/templates/react-nest-antd/backend/pnpm-lock.yaml +5165 -0
  360. package/templates/react-nest-antd/backend/pnpm-workspace.yaml +6 -0
  361. package/templates/react-nest-antd/backend/prisma/migrations/202610190001_initial/migration.sql +3 -0
  362. package/templates/react-nest-antd/backend/prisma/migrations/migration_lock.toml +1 -0
  363. package/templates/react-nest-antd/backend/prisma/schema.prisma +25 -0
  364. package/templates/react-nest-antd/backend/scripts/seed.ts +4 -0
  365. package/templates/react-nest-antd/backend/src/app.module.ts +43 -0
  366. package/templates/react-nest-antd/backend/src/main.ts +6 -0
  367. package/templates/react-nest-antd/backend/src/password.ts +3 -0
  368. package/templates/react-nest-antd/backend/src/validation.ts +7 -0
  369. package/templates/react-nest-antd/backend/test/api.test.ts +25 -0
  370. package/templates/react-nest-antd/backend/tsconfig.build.json +15 -0
  371. package/templates/react-nest-antd/backend/tsconfig.json +17 -0
  372. package/templates/react-nest-antd/compose.yaml +18 -0
  373. package/templates/react-nest-antd/design/guide.md +61 -0
  374. package/templates/react-nest-antd/design/layout.css +6 -0
  375. package/templates/react-nest-antd/design/structure.json +107 -0
  376. package/templates/react-nest-antd/design/tokens.json +171 -0
  377. package/templates/react-nest-antd/design/widgets.css +30 -0
  378. package/templates/react-nest-antd/design/widgets.json +233 -0
  379. package/templates/react-nest-antd/docs/PROJECT.md +9 -0
  380. package/templates/react-nest-antd/docs/api.d.ts +516 -0
  381. package/templates/react-nest-antd/docs/openapi.json +439 -0
  382. package/templates/react-nest-antd/gitignore.template +19 -0
  383. package/templates/react-nest-antd/licenses/fastapi.txt +21 -0
  384. package/templates/react-nest-antd/licenses/nest.txt +22 -0
  385. package/templates/react-nest-antd/licenses/next.txt +21 -0
  386. package/templates/react-nest-antd/licenses/shadcn.txt +21 -0
  387. package/templates/react-nest-antd/licenses/sources.json +27 -0
  388. package/templates/react-nest-antd/licenses/spring.txt +202 -0
  389. package/templates/react-nest-antd/package-lock.json +440 -0
  390. package/templates/react-nest-antd/package.json +21 -0
  391. package/templates/react-nest-antd/playwright.config.ts +3 -0
  392. package/templates/react-nest-antd/project.json +8 -0
  393. package/templates/react-nest-antd/scripts/design-coverage.mjs +20 -0
  394. package/templates/react-nest-antd/scripts/design-next-cleanup.mjs +13 -0
  395. package/templates/react-nest-antd/scripts/design-verify.mjs +154 -0
  396. package/templates/react-nest-antd/scripts/design.mjs +108 -0
  397. package/templates/react-nest-antd/scripts/project.mjs +118 -0
  398. package/templates/react-nest-antd/tests/contract.spec.ts +47 -0
  399. package/templates/react-nest-antd/tests/design/harness.tsx +63 -0
  400. package/templates/react-nest-antd/tests/ui.spec.ts +61 -0
  401. package/templates/react-nest-antd/web/eslint.config.mjs +3 -0
  402. package/templates/react-nest-antd/web/index.html +1 -0
  403. package/templates/react-nest-antd/web/package.json +28 -0
  404. package/templates/react-nest-antd/web/pnpm-lock.yaml +2215 -0
  405. package/templates/react-nest-antd/web/src/App.tsx +29 -0
  406. package/templates/react-nest-antd/web/src/design-layout.css +7 -0
  407. package/templates/react-nest-antd/web/src/design-runtime.json +511 -0
  408. package/templates/react-nest-antd/web/src/design-tokens.css +168 -0
  409. package/templates/react-nest-antd/web/src/design-widgets.css +31 -0
  410. package/templates/react-nest-antd/web/src/main.tsx +6 -0
  411. package/templates/react-nest-antd/web/src/structure-view.tsx +16 -0
  412. package/templates/react-nest-antd/web/src/styles.css +3 -0
  413. package/templates/react-nest-antd/web/src/ui.tsx +30 -0
  414. package/templates/react-nest-antd/web/src/widget-icon.tsx +5 -0
  415. package/templates/react-nest-antd/web/src/widget-types.ts +13 -0
  416. package/templates/react-nest-antd/web/src/workspace-model.ts +85 -0
  417. package/templates/react-nest-antd/web/tsconfig.json +22 -0
  418. package/templates/react-nest-antd/web/vite.config.ts +3 -0
  419. package/templates/react-nest-shadcn/.agents/skills/design-contract/SKILL.md +23 -0
  420. package/templates/react-nest-shadcn/.agents/skills/project-work/SKILL.md +8 -0
  421. package/templates/react-nest-shadcn/.claude/skills/design-contract/SKILL.md +23 -0
  422. package/templates/react-nest-shadcn/.claude/skills/project-work/SKILL.md +8 -0
  423. package/templates/react-nest-shadcn/.dockerignore +18 -0
  424. package/templates/react-nest-shadcn/.env.example +13 -0
  425. package/templates/react-nest-shadcn/.grok/skills/design-contract/SKILL.md +23 -0
  426. package/templates/react-nest-shadcn/.grok/skills/project-work/SKILL.md +8 -0
  427. package/templates/react-nest-shadcn/.scaffold-checks.json +7 -0
  428. package/templates/react-nest-shadcn/AGENTS.md +11 -0
  429. package/templates/react-nest-shadcn/CLAUDE.md +1 -0
  430. package/templates/react-nest-shadcn/DESIGN.md +208 -0
  431. package/templates/react-nest-shadcn/LICENSE +21 -0
  432. package/templates/react-nest-shadcn/README.md +55 -0
  433. package/templates/react-nest-shadcn/THIRD_PARTY_NOTICES.md +14 -0
  434. package/templates/react-nest-shadcn/backend/Dockerfile +12 -0
  435. package/templates/react-nest-shadcn/backend/eslint.config.mjs +3 -0
  436. package/templates/react-nest-shadcn/backend/jest.config.cjs +1 -0
  437. package/templates/react-nest-shadcn/backend/package.json +40 -0
  438. package/templates/react-nest-shadcn/backend/pnpm-lock.yaml +5165 -0
  439. package/templates/react-nest-shadcn/backend/pnpm-workspace.yaml +6 -0
  440. package/templates/react-nest-shadcn/backend/prisma/migrations/202610190001_initial/migration.sql +3 -0
  441. package/templates/react-nest-shadcn/backend/prisma/migrations/migration_lock.toml +1 -0
  442. package/templates/react-nest-shadcn/backend/prisma/schema.prisma +25 -0
  443. package/templates/react-nest-shadcn/backend/scripts/seed.ts +4 -0
  444. package/templates/react-nest-shadcn/backend/src/app.module.ts +43 -0
  445. package/templates/react-nest-shadcn/backend/src/main.ts +6 -0
  446. package/templates/react-nest-shadcn/backend/src/password.ts +3 -0
  447. package/templates/react-nest-shadcn/backend/src/validation.ts +7 -0
  448. package/templates/react-nest-shadcn/backend/test/api.test.ts +25 -0
  449. package/templates/react-nest-shadcn/backend/tsconfig.build.json +15 -0
  450. package/templates/react-nest-shadcn/backend/tsconfig.json +17 -0
  451. package/templates/react-nest-shadcn/compose.yaml +18 -0
  452. package/templates/react-nest-shadcn/design/guide.md +61 -0
  453. package/templates/react-nest-shadcn/design/layout.css +6 -0
  454. package/templates/react-nest-shadcn/design/structure.json +107 -0
  455. package/templates/react-nest-shadcn/design/tokens.json +171 -0
  456. package/templates/react-nest-shadcn/design/widgets.css +30 -0
  457. package/templates/react-nest-shadcn/design/widgets.json +233 -0
  458. package/templates/react-nest-shadcn/docs/PROJECT.md +9 -0
  459. package/templates/react-nest-shadcn/docs/api.d.ts +516 -0
  460. package/templates/react-nest-shadcn/docs/openapi.json +439 -0
  461. package/templates/react-nest-shadcn/gitignore.template +19 -0
  462. package/templates/react-nest-shadcn/licenses/fastapi.txt +21 -0
  463. package/templates/react-nest-shadcn/licenses/nest.txt +22 -0
  464. package/templates/react-nest-shadcn/licenses/next.txt +21 -0
  465. package/templates/react-nest-shadcn/licenses/shadcn.txt +21 -0
  466. package/templates/react-nest-shadcn/licenses/sources.json +27 -0
  467. package/templates/react-nest-shadcn/licenses/spring.txt +202 -0
  468. package/templates/react-nest-shadcn/package-lock.json +440 -0
  469. package/templates/react-nest-shadcn/package.json +21 -0
  470. package/templates/react-nest-shadcn/playwright.config.ts +3 -0
  471. package/templates/react-nest-shadcn/project.json +8 -0
  472. package/templates/react-nest-shadcn/scripts/design-coverage.mjs +20 -0
  473. package/templates/react-nest-shadcn/scripts/design-next-cleanup.mjs +13 -0
  474. package/templates/react-nest-shadcn/scripts/design-verify.mjs +154 -0
  475. package/templates/react-nest-shadcn/scripts/design.mjs +108 -0
  476. package/templates/react-nest-shadcn/scripts/project.mjs +118 -0
  477. package/templates/react-nest-shadcn/tests/contract.spec.ts +47 -0
  478. package/templates/react-nest-shadcn/tests/design/harness.tsx +63 -0
  479. package/templates/react-nest-shadcn/tests/ui.spec.ts +61 -0
  480. package/templates/react-nest-shadcn/web/eslint.config.mjs +3 -0
  481. package/templates/react-nest-shadcn/web/index.html +1 -0
  482. package/templates/react-nest-shadcn/web/package.json +33 -0
  483. package/templates/react-nest-shadcn/web/pnpm-lock.yaml +1788 -0
  484. package/templates/react-nest-shadcn/web/src/App.tsx +30 -0
  485. package/templates/react-nest-shadcn/web/src/design-layout.css +7 -0
  486. package/templates/react-nest-shadcn/web/src/design-runtime.json +511 -0
  487. package/templates/react-nest-shadcn/web/src/design-tokens.css +168 -0
  488. package/templates/react-nest-shadcn/web/src/design-widgets.css +31 -0
  489. package/templates/react-nest-shadcn/web/src/main.tsx +6 -0
  490. package/templates/react-nest-shadcn/web/src/structure-view.tsx +16 -0
  491. package/templates/react-nest-shadcn/web/src/styles.css +3 -0
  492. package/templates/react-nest-shadcn/web/src/tailwind.css +2 -0
  493. package/templates/react-nest-shadcn/web/src/ui.tsx +13 -0
  494. package/templates/react-nest-shadcn/web/src/widget-icon.tsx +5 -0
  495. package/templates/react-nest-shadcn/web/src/widget-types.ts +13 -0
  496. package/templates/react-nest-shadcn/web/src/workspace-model.ts +85 -0
  497. package/templates/react-nest-shadcn/web/tsconfig.json +22 -0
  498. package/templates/react-nest-shadcn/web/vite.config.ts +4 -0
  499. package/templates/react-spring-antd/.agents/skills/design-contract/SKILL.md +23 -0
  500. package/templates/react-spring-antd/.agents/skills/project-work/SKILL.md +8 -0
  501. package/templates/react-spring-antd/.claude/skills/design-contract/SKILL.md +23 -0
  502. package/templates/react-spring-antd/.claude/skills/project-work/SKILL.md +8 -0
  503. package/templates/react-spring-antd/.dockerignore +18 -0
  504. package/templates/react-spring-antd/.env.example +13 -0
  505. package/templates/react-spring-antd/.grok/skills/design-contract/SKILL.md +23 -0
  506. package/templates/react-spring-antd/.grok/skills/project-work/SKILL.md +8 -0
  507. package/templates/react-spring-antd/.scaffold-checks.json +7 -0
  508. package/templates/react-spring-antd/AGENTS.md +11 -0
  509. package/templates/react-spring-antd/CLAUDE.md +1 -0
  510. package/templates/react-spring-antd/DESIGN.md +208 -0
  511. package/templates/react-spring-antd/LICENSE +21 -0
  512. package/templates/react-spring-antd/README.md +55 -0
  513. package/templates/react-spring-antd/THIRD_PARTY_NOTICES.md +14 -0
  514. package/templates/react-spring-antd/backend/.mvn/wrapper/maven-wrapper.properties +3 -0
  515. package/templates/react-spring-antd/backend/Dockerfile +11 -0
  516. package/templates/react-spring-antd/backend/mvnw +295 -0
  517. package/templates/react-spring-antd/backend/pom.xml +15 -0
  518. package/templates/react-spring-antd/backend/src/main/java/dev/scaffold/app/Api.java +38 -0
  519. package/templates/react-spring-antd/backend/src/main/java/dev/scaffold/app/AppUser.java +11 -0
  520. package/templates/react-spring-antd/backend/src/main/java/dev/scaffold/app/Application.java +7 -0
  521. package/templates/react-spring-antd/backend/src/main/java/dev/scaffold/app/Errors.java +13 -0
  522. package/templates/react-spring-antd/backend/src/main/java/dev/scaffold/app/PersonalRecord.java +15 -0
  523. package/templates/react-spring-antd/backend/src/main/java/dev/scaffold/app/Records.java +14 -0
  524. package/templates/react-spring-antd/backend/src/main/java/dev/scaffold/app/Security.java +28 -0
  525. package/templates/react-spring-antd/backend/src/main/java/dev/scaffold/app/Seed.java +13 -0
  526. package/templates/react-spring-antd/backend/src/main/java/dev/scaffold/app/Users.java +5 -0
  527. package/templates/react-spring-antd/backend/src/main/resources/application.properties +17 -0
  528. package/templates/react-spring-antd/backend/src/main/resources/db/migration/V1__initial.sql +3 -0
  529. package/templates/react-spring-antd/backend/src/main/resources/openapi.json +439 -0
  530. package/templates/react-spring-antd/backend/src/test/java/dev/scaffold/app/ApiTest.java +28 -0
  531. package/templates/react-spring-antd/backend/src/test/java/dev/scaffold/app/SessionExpiryTest.java +37 -0
  532. package/templates/react-spring-antd/compose.yaml +18 -0
  533. package/templates/react-spring-antd/design/guide.md +61 -0
  534. package/templates/react-spring-antd/design/layout.css +6 -0
  535. package/templates/react-spring-antd/design/structure.json +107 -0
  536. package/templates/react-spring-antd/design/tokens.json +171 -0
  537. package/templates/react-spring-antd/design/widgets.css +30 -0
  538. package/templates/react-spring-antd/design/widgets.json +233 -0
  539. package/templates/react-spring-antd/docs/PROJECT.md +9 -0
  540. package/templates/react-spring-antd/docs/api.d.ts +516 -0
  541. package/templates/react-spring-antd/docs/openapi.json +439 -0
  542. package/templates/react-spring-antd/gitignore.template +19 -0
  543. package/templates/react-spring-antd/licenses/fastapi.txt +21 -0
  544. package/templates/react-spring-antd/licenses/nest.txt +22 -0
  545. package/templates/react-spring-antd/licenses/next.txt +21 -0
  546. package/templates/react-spring-antd/licenses/shadcn.txt +21 -0
  547. package/templates/react-spring-antd/licenses/sources.json +27 -0
  548. package/templates/react-spring-antd/licenses/spring.txt +202 -0
  549. package/templates/react-spring-antd/package-lock.json +440 -0
  550. package/templates/react-spring-antd/package.json +21 -0
  551. package/templates/react-spring-antd/playwright.config.ts +3 -0
  552. package/templates/react-spring-antd/project.json +8 -0
  553. package/templates/react-spring-antd/scripts/design-coverage.mjs +20 -0
  554. package/templates/react-spring-antd/scripts/design-next-cleanup.mjs +13 -0
  555. package/templates/react-spring-antd/scripts/design-verify.mjs +154 -0
  556. package/templates/react-spring-antd/scripts/design.mjs +108 -0
  557. package/templates/react-spring-antd/scripts/project.mjs +118 -0
  558. package/templates/react-spring-antd/tests/contract.spec.ts +47 -0
  559. package/templates/react-spring-antd/tests/design/harness.tsx +63 -0
  560. package/templates/react-spring-antd/tests/ui.spec.ts +61 -0
  561. package/templates/react-spring-antd/web/eslint.config.mjs +3 -0
  562. package/templates/react-spring-antd/web/index.html +1 -0
  563. package/templates/react-spring-antd/web/package.json +28 -0
  564. package/templates/react-spring-antd/web/pnpm-lock.yaml +2215 -0
  565. package/templates/react-spring-antd/web/src/App.tsx +29 -0
  566. package/templates/react-spring-antd/web/src/design-layout.css +7 -0
  567. package/templates/react-spring-antd/web/src/design-runtime.json +511 -0
  568. package/templates/react-spring-antd/web/src/design-tokens.css +168 -0
  569. package/templates/react-spring-antd/web/src/design-widgets.css +31 -0
  570. package/templates/react-spring-antd/web/src/main.tsx +6 -0
  571. package/templates/react-spring-antd/web/src/structure-view.tsx +16 -0
  572. package/templates/react-spring-antd/web/src/styles.css +3 -0
  573. package/templates/react-spring-antd/web/src/ui.tsx +30 -0
  574. package/templates/react-spring-antd/web/src/widget-icon.tsx +5 -0
  575. package/templates/react-spring-antd/web/src/widget-types.ts +13 -0
  576. package/templates/react-spring-antd/web/src/workspace-model.ts +85 -0
  577. package/templates/react-spring-antd/web/tsconfig.json +22 -0
  578. package/templates/react-spring-antd/web/vite.config.ts +3 -0
  579. package/templates/react-spring-shadcn/.agents/skills/design-contract/SKILL.md +23 -0
  580. package/templates/react-spring-shadcn/.agents/skills/project-work/SKILL.md +8 -0
  581. package/templates/react-spring-shadcn/.claude/skills/design-contract/SKILL.md +23 -0
  582. package/templates/react-spring-shadcn/.claude/skills/project-work/SKILL.md +8 -0
  583. package/templates/react-spring-shadcn/.dockerignore +18 -0
  584. package/templates/react-spring-shadcn/.env.example +13 -0
  585. package/templates/react-spring-shadcn/.grok/skills/design-contract/SKILL.md +23 -0
  586. package/templates/react-spring-shadcn/.grok/skills/project-work/SKILL.md +8 -0
  587. package/templates/react-spring-shadcn/.scaffold-checks.json +7 -0
  588. package/templates/react-spring-shadcn/AGENTS.md +11 -0
  589. package/templates/react-spring-shadcn/CLAUDE.md +1 -0
  590. package/templates/react-spring-shadcn/DESIGN.md +208 -0
  591. package/templates/react-spring-shadcn/LICENSE +21 -0
  592. package/templates/react-spring-shadcn/README.md +55 -0
  593. package/templates/react-spring-shadcn/THIRD_PARTY_NOTICES.md +14 -0
  594. package/templates/react-spring-shadcn/backend/.mvn/wrapper/maven-wrapper.properties +3 -0
  595. package/templates/react-spring-shadcn/backend/Dockerfile +11 -0
  596. package/templates/react-spring-shadcn/backend/mvnw +295 -0
  597. package/templates/react-spring-shadcn/backend/pom.xml +15 -0
  598. package/templates/react-spring-shadcn/backend/src/main/java/dev/scaffold/app/Api.java +38 -0
  599. package/templates/react-spring-shadcn/backend/src/main/java/dev/scaffold/app/AppUser.java +11 -0
  600. package/templates/react-spring-shadcn/backend/src/main/java/dev/scaffold/app/Application.java +7 -0
  601. package/templates/react-spring-shadcn/backend/src/main/java/dev/scaffold/app/Errors.java +13 -0
  602. package/templates/react-spring-shadcn/backend/src/main/java/dev/scaffold/app/PersonalRecord.java +15 -0
  603. package/templates/react-spring-shadcn/backend/src/main/java/dev/scaffold/app/Records.java +14 -0
  604. package/templates/react-spring-shadcn/backend/src/main/java/dev/scaffold/app/Security.java +28 -0
  605. package/templates/react-spring-shadcn/backend/src/main/java/dev/scaffold/app/Seed.java +13 -0
  606. package/templates/react-spring-shadcn/backend/src/main/java/dev/scaffold/app/Users.java +5 -0
  607. package/templates/react-spring-shadcn/backend/src/main/resources/application.properties +17 -0
  608. package/templates/react-spring-shadcn/backend/src/main/resources/db/migration/V1__initial.sql +3 -0
  609. package/templates/react-spring-shadcn/backend/src/main/resources/openapi.json +439 -0
  610. package/templates/react-spring-shadcn/backend/src/test/java/dev/scaffold/app/ApiTest.java +28 -0
  611. package/templates/react-spring-shadcn/backend/src/test/java/dev/scaffold/app/SessionExpiryTest.java +37 -0
  612. package/templates/react-spring-shadcn/compose.yaml +18 -0
  613. package/templates/react-spring-shadcn/design/guide.md +61 -0
  614. package/templates/react-spring-shadcn/design/layout.css +6 -0
  615. package/templates/react-spring-shadcn/design/structure.json +107 -0
  616. package/templates/react-spring-shadcn/design/tokens.json +171 -0
  617. package/templates/react-spring-shadcn/design/widgets.css +30 -0
  618. package/templates/react-spring-shadcn/design/widgets.json +233 -0
  619. package/templates/react-spring-shadcn/docs/PROJECT.md +9 -0
  620. package/templates/react-spring-shadcn/docs/api.d.ts +516 -0
  621. package/templates/react-spring-shadcn/docs/openapi.json +439 -0
  622. package/templates/react-spring-shadcn/gitignore.template +19 -0
  623. package/templates/react-spring-shadcn/licenses/fastapi.txt +21 -0
  624. package/templates/react-spring-shadcn/licenses/nest.txt +22 -0
  625. package/templates/react-spring-shadcn/licenses/next.txt +21 -0
  626. package/templates/react-spring-shadcn/licenses/shadcn.txt +21 -0
  627. package/templates/react-spring-shadcn/licenses/sources.json +27 -0
  628. package/templates/react-spring-shadcn/licenses/spring.txt +202 -0
  629. package/templates/react-spring-shadcn/package-lock.json +440 -0
  630. package/templates/react-spring-shadcn/package.json +21 -0
  631. package/templates/react-spring-shadcn/playwright.config.ts +3 -0
  632. package/templates/react-spring-shadcn/project.json +8 -0
  633. package/templates/react-spring-shadcn/scripts/design-coverage.mjs +20 -0
  634. package/templates/react-spring-shadcn/scripts/design-next-cleanup.mjs +13 -0
  635. package/templates/react-spring-shadcn/scripts/design-verify.mjs +154 -0
  636. package/templates/react-spring-shadcn/scripts/design.mjs +108 -0
  637. package/templates/react-spring-shadcn/scripts/project.mjs +118 -0
  638. package/templates/react-spring-shadcn/tests/contract.spec.ts +47 -0
  639. package/templates/react-spring-shadcn/tests/design/harness.tsx +63 -0
  640. package/templates/react-spring-shadcn/tests/ui.spec.ts +61 -0
  641. package/templates/react-spring-shadcn/web/eslint.config.mjs +3 -0
  642. package/templates/react-spring-shadcn/web/index.html +1 -0
  643. package/templates/react-spring-shadcn/web/package.json +33 -0
  644. package/templates/react-spring-shadcn/web/pnpm-lock.yaml +1788 -0
  645. package/templates/react-spring-shadcn/web/src/App.tsx +30 -0
  646. package/templates/react-spring-shadcn/web/src/design-layout.css +7 -0
  647. package/templates/react-spring-shadcn/web/src/design-runtime.json +511 -0
  648. package/templates/react-spring-shadcn/web/src/design-tokens.css +168 -0
  649. package/templates/react-spring-shadcn/web/src/design-widgets.css +31 -0
  650. package/templates/react-spring-shadcn/web/src/main.tsx +6 -0
  651. package/templates/react-spring-shadcn/web/src/structure-view.tsx +16 -0
  652. package/templates/react-spring-shadcn/web/src/styles.css +3 -0
  653. package/templates/react-spring-shadcn/web/src/tailwind.css +2 -0
  654. package/templates/react-spring-shadcn/web/src/ui.tsx +13 -0
  655. package/templates/react-spring-shadcn/web/src/widget-icon.tsx +5 -0
  656. package/templates/react-spring-shadcn/web/src/widget-types.ts +13 -0
  657. package/templates/react-spring-shadcn/web/src/workspace-model.ts +85 -0
  658. package/templates/react-spring-shadcn/web/tsconfig.json +22 -0
  659. package/templates/react-spring-shadcn/web/vite.config.ts +4 -0
@@ -0,0 +1,208 @@
1
+ ---
2
+ version: "alpha"
3
+ name: "Scientific Workspace"
4
+ description: "从 CleerScience 提炼的通用深色科技视觉,适配可读、安静的工具型界面。"
5
+ colors:
6
+ primary: "#8fc3ff"
7
+ primary-hover: "#b5d8ff"
8
+ primary-active: "#69a9f3"
9
+ primary-text: "#02040a"
10
+ background: "#02040a"
11
+ text: "#f4f8ff"
12
+ surface: "#0b111d"
13
+ focus: "#8fc3ff"
14
+ border: "#283547"
15
+ brand: "#f4f8ff"
16
+ eyebrow: "#9baecb"
17
+ muted: "#a1afc3"
18
+ intro: "#b5c3d7"
19
+ panel-border: "#283547"
20
+ divider: "#202c3e"
21
+ record-text: "#f4f8ff"
22
+ record-meta: "#a1afc3"
23
+ record-hover: "#142237"
24
+ pagination-border: "#283547"
25
+ empty: "#a1afc3"
26
+ empty-heading: "#e2eeff"
27
+ success-background: "#102b25"
28
+ success-border: "#387c69"
29
+ success-text: "#a2e6cc"
30
+ error-background: "#311b24"
31
+ error-border: "#8f4c61"
32
+ error-text: "#ffbdcd"
33
+ footer-border: "#283547"
34
+ footer-text: "#a1afc3"
35
+ badge-border: "#435773"
36
+ badge-text: "#b5c3d7"
37
+ control-focus: "#8fc3ff"
38
+ control-border: "#657891"
39
+ control-background: "#080e18"
40
+ secondary-border: "#657891"
41
+ secondary-text: "#e2eeff"
42
+ secondary-hover: "#19283d"
43
+ danger-border: "#ad6578"
44
+ danger-background: "#311b24"
45
+ danger-text: "#ffbdcd"
46
+ danger-hover: "#472636"
47
+ typography:
48
+ body:
49
+ fontFamily: "Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,\"Segoe UI\",\"PingFang SC\",\"Hiragino Sans GB\",\"Microsoft YaHei\",sans-serif"
50
+ fontSize: "16px"
51
+ lineHeight: 1.65
52
+ h1:
53
+ fontSize: "36px"
54
+ lineHeight: 1.2
55
+ letterSpacing: "-0.03em"
56
+ fontWeight: 560
57
+ login-heading:
58
+ fontSize: "48px"
59
+ lineHeight: 1.15
60
+ fontWeight: 560
61
+ letterSpacing: "-0.03em"
62
+ h2:
63
+ fontSize: "20px"
64
+ lineHeight: 1.4
65
+ fontWeight: 580
66
+ letterSpacing: "-0.02em"
67
+ h3:
68
+ fontSize: "18px"
69
+ fontWeight: 600
70
+ lineHeight: 1.5
71
+ label:
72
+ fontSize: "14px"
73
+ fontWeight: 600
74
+ eyebrow:
75
+ fontSize: "11px"
76
+ fontWeight: 700
77
+ letterSpacing: "0.22em"
78
+ lineHeight: 1.5
79
+ button:
80
+ fontSize: "14px"
81
+ fontWeight: 600
82
+ lineHeight: "20px"
83
+ caption:
84
+ fontSize: "12px"
85
+ intro:
86
+ fontSize: "18px"
87
+ lineHeight: 1.8
88
+ mobile-heading:
89
+ fontSize: "32px"
90
+ lineHeight: 1.2
91
+ mobile-page-heading:
92
+ fontSize: "28px"
93
+ lineHeight: 1.25
94
+ rounded:
95
+ md: "0px"
96
+ panel: "0px"
97
+ full: "0px"
98
+ spacing:
99
+ s0: "0px"
100
+ s1: "1px"
101
+ s2: "2px"
102
+ s3: "3px"
103
+ s4: "4px"
104
+ s6: "6px"
105
+ s8: "8px"
106
+ s10: "10px"
107
+ s12: "12px"
108
+ s14: "14px"
109
+ s15: "15px"
110
+ s16: "16px"
111
+ s18: "18px"
112
+ s20: "20px"
113
+ s22: "22px"
114
+ s24: "24px"
115
+ s26: "26px"
116
+ s28: "28px"
117
+ s30: "30px"
118
+ s32: "32px"
119
+ s34: "34px"
120
+ s38: "38px"
121
+ s44: "44px"
122
+ s48: "48px"
123
+ s60: "60px"
124
+ s80: "80px"
125
+ s88: "88px"
126
+ shell-max: "1240px"
127
+ login-max: "1020px"
128
+ intro-max: "460px"
129
+ login-card-max: "430px"
130
+ list-min: "260px"
131
+ footer-reserve: "155px"
132
+ mobile-breakpoint: "760px"
133
+ control-min: "44px"
134
+ components:
135
+ button-primary:
136
+ backgroundColor: "{colors.primary}"
137
+ textColor: "{colors.primary-text}"
138
+ rounded: "{rounded.md}"
139
+ height: "{spacing.control-min}"
140
+ panel:
141
+ backgroundColor: "{colors.surface}"
142
+ padding: "{spacing.s26}"
143
+ rounded: "{rounded.panel}"
144
+ input:
145
+ rounded: "{rounded.md}"
146
+ ---
147
+
148
+ ## Overview
149
+
150
+ **Scientific Workspace**:从 [CleerScience 官网](https://cleerscience.com/) 提炼的通用深色科技视觉。以近黑蓝底、冷白文字、冰蓝重点、直角薄边框和清晰排版传达秩序;各组件库使用同一份视觉、控件和结构规格。它服务于登录、列表与编辑任务,不把科学品牌、产品名或营销文案带入生成项目。
151
+
152
+ 来源于 2026-10-20 对官网桌面 1440px 和手机 375px 的实际页面及计算样式观察。官网原值包括背景 #02040a、正文 #f4f8ff、冰蓝 #8fc3ff、0px 面板圆角;本模板沿用这些核心值。正文与控件对比度、实体表面、较小标题和 44px 以上操作尺寸是工具型界面的适配决定,并非官网原样复刻。背景视频、品牌标识、全屏叙事和科学插图不属于本模板。
153
+
154
+ **唯一编辑源**:`design/tokens.json`、`design/widgets.json`、`design/structure.json`、`design/guide.md` 及中立布局/控件样式。执行 `npm run design:sync` 生成本文件、design-tokens.css、design-layout.css、design-widgets.css、design-runtime.json,再执行 `npm run design:check`。不要直接修改派生产物;build/typecheck/lint 会拒绝漂移。YAML 是与组件库无关的有效 token;阴影等非标准字段在正文给出,避免伪装成官方 schema 字段。
155
+
156
+ ## Colors
157
+
158
+ 背景使用 `colors.background`,面板使用 `colors.surface`,输入区使用 `colors.control-background`。正文使用 `colors.text`,辅助说明使用 `colors.muted`,标题不降低透明度。不要把官网用于装饰的低透明度文字直接用于表单标签或必要说明。
159
+
160
+ `primary` 仅用于主要操作、当前选中项和可见焦点;按钮文字使用 `primary-text`,确保亮色按钮上的深色字可读。`primary-hover` / `primary-active` 表达交互状态。普通表面保持中性冷色,避免整页泛蓝或大面积发光。错误和成功使用各自的 background/border/text 组合,同时保留明确文字或状态角色。
161
+
162
+ 必要文字对比度至少 4.5:1,焦点与操作控件边界至少 3:1;装饰分隔线可以更弱。对比度必须按实际背景检查,不能只比较两个透明 token。新项目若改变主色,需重新验证文字、hover、active 和焦点,不仅替换一个十六进制值。
163
+
164
+ ## Typography
165
+
166
+ 一套无衬线字体贯穿全站:Inter 可用时优先,否则落到系统字体与 PingFang SC / Microsoft YaHei;不主动下载字体。中文正文 16px、行高 1.65,标签 14px,辅助信息 12px;避免将官网 11px 导航字直接当作表单正文。
167
+
168
+ 页面标题 36px、登录标题 48px,手机分别 28px/32px;h2 为 20px,h3 为 18px。标题使用 560–600 字重与轻微负字距,中文不采用官网展示标题的 -0.075em 压缩。`eyebrow` 用 11px、700 字重、0.22em 字距作短标签,不承载唯一操作说明。标题平衡换行,说明文字自然换行,长记录标题允许断行,账号单行省略。
169
+
170
+ 具体字号、字重与行高以 typography 为准。所有套件严格使用同一按钮字号 14px 与行高 20px;不要混用第二套展示字体。
171
+
172
+ ## Layout
173
+
174
+ 沿用工作空间的信息结构:顶栏、页面标题、记录列表与编辑区。桌面 shell-max 为 1240px,水平边距 32px;记录区两栏,登录页说明与表单两栏。面板间距 24px,桌面面板内边距 26px。避免为了科技感给每一行再套卡片。
175
+
176
+ 在 `spacing.mobile-breakpoint`(当前 760px)收为单列,水平边距 18px、面板内边距 20px。375px 不允许横向溢出;操作区允许自然增长,不用全屏固定高度压缩内容。布局 CSS 与媒体查询由同一 token 源生成。
177
+
178
+ 官网的超大留白、全屏分区与宽幅媒体可用于品牌落地页,但不是登录和 CRUD 页面默认规则。新增导航、统计卡或营销分区需要业务需求,不能由设计规范自行扩张功能。
179
+
180
+ ## Elevation & Depth
181
+
182
+ 面板首先依靠深浅表面和 1px 冷色边框分层;阴影为 `0 16px 48px rgba(0,0,0,0.18)`,来自 design/tokens.json 的 effects.panelShadow。控件边框比装饰分隔线更清晰。选中记录增加冰蓝侧线与背景变化,不只靠文字颜色。
183
+
184
+ 官网玻璃面板的 blur(14px) 和影像叠层可作为品牌页面参考;本工具使用实体表面保证阅读和性能,不全局加 backdrop-filter。禁止给每个按钮、输入框加辉光或重阴影。
185
+
186
+ ## Shapes
187
+
188
+ `rounded.md` 为 0px、`rounded.panel` 为 0px、`rounded.full` 为 0px:按钮、输入、面板和标签保持精确直角。`full` 是沿用的 token 名,在当前主题不代表胶囊。修改形状时同步组件 token;所有尺寸的圆角由套件显式绑定,避免库派生出另一种圆角。
189
+
190
+ 边框厚度通常为 1px。图标沿用所选组件库的简洁线性风格,保持光学尺寸一致;不复制官网 Logo 或专有插图。
191
+
192
+ ## Components
193
+
194
+ 主按钮:冰蓝填充、深色文字;secondary:深色表面与清晰描边;danger:暗红表面与浅红文字。按钮与单行输入高度 44px,保持键盘焦点。default/hover/active/focus/disabled/loading 与输入错误态由 design/widgets.json 定义,套件逐项翻译,不接受原生默认值偏差。颜色派生结果以共享 token 为准;图标使用同一份 SVG 几何,套件不得替换成近似图标。
195
+
196
+ 输入:深色底、冷白输入文字、可读 placeholder,标签始终可见。加载时禁用重复提交;错误后保留输入;空态说明下一步;记录正文以纯文本显示。删除需确认,退出清除当前编辑内容。控件自身焦点、输入和禁用状态由原生控件/套件管理;登录身份、校验、记录状态与请求隔离只在框架无关的 workspace-model 中实现。页面区块顺序和嵌套来自 design/structure.json,框架视图负责绑定。上述行为由业务实现与 Playwright 测试负责,设计文件不替代执行逻辑。
197
+
198
+ 动效只用于短暂状态反馈;遵循 150–250ms 的颜色/边框变化,不新增背景循环、滚动接管或入场延迟。`prefers-reduced-motion: reduce` 下取消非必要动画与过渡。品牌页面如果采用背景媒体,需静态后备、降低亮度、保障文字对比度,并单独验收性能。
199
+
200
+ ## Do's and Don'ts
201
+
202
+ - UI 开发前读本文件;设计修改先改源,再 sync/check,最后看浏览器真实结果。
203
+ - 复用冷色中性层级、单一字体、直角薄边框与有限强调色;保持所选 UI 库的一致性。
204
+ - 验证默认、hover、active、focus、disabled、loading、empty、error,以及键盘与 375px 布局。
205
+ - 不将来源网站的行业、品牌内容、低对比装饰字或全屏动效当成通用业务要求。
206
+ - 不给每个面板加玻璃、光晕或渐变;库默认值与规格不符时修改套件,不反向修改规范。
207
+ - 全量执行控件/页面比较:位置容差 ≤0.6 CSS px;颜色、圆角、图标几何零容差;必须覆盖 widgets.json 和 structure.json 的全部声明项。
208
+ - 不直接编辑生成文件,不把文档格式通过当成浏览器验收通过,不根据项目简介随机改变视觉。
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 qinchaomeishenmeshi
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,55 @@
1
+ ## 运行
2
+
3
+ 需要 Node.js 24、Docker 和该模板的运行时(见 project.json 与下方说明)。
4
+
5
+ ```bash
6
+ npm run setup
7
+ npm run dev
8
+ ```
9
+
10
+ `setup` 安装依赖,然后显式启动本地 PostgreSQL、迁移并创建 A/B 开发账号。首次生成随机密码,登录信息在 Git 忽略的 `.scaffold-local-credentials`;不是生产默认密码。已有 `.env` 时保留配置,请仅使用本地开发实例。
11
+
12
+ 默认数据库端口为 54329、API 为 8000、Web 为 5173(Next 为 3000)。首次 setup 可用 `POSTGRES_PORT`、`PORT`、`WEB_PORT` 环境变量指定空闲端口;后续沿用 `.env`。
13
+
14
+ 页面名称与简介来自根 project.json;英文名用于目录和工程标识。基础示例只包含个人记录功能,不因简介自动新增业务。
15
+
16
+ ## 验证
17
+
18
+ 安装依赖后,由已安装的 CLI 执行:
19
+
20
+ ```bash
21
+ scaffold doctor --dir . --json
22
+ scaffold verify --dir . --profile baseline --json
23
+ scaffold report --dir . --json
24
+ ```
25
+
26
+ verify 创建自己的临时 PostgreSQL 并注入连接,不使用开发 DATABASE_URL;完成后释放本次容器。单独运行项目命令时需要显式提供本地环境:
27
+
28
+ ```bash
29
+ node scripts/project.mjs typecheck
30
+ node scripts/project.mjs lint
31
+ node scripts/project.mjs build
32
+ node scripts/project.mjs test:native
33
+ node scripts/project.mjs test:api
34
+ node scripts/project.mjs test:e2e
35
+ node scripts/project.mjs api:generate
36
+ ```
37
+
38
+ 接口:docs/openapi.json;结构:docs/PROJECT.md;规则:AGENTS.md。按需运行 api:generate 更新 TypeScript 客户端类型,不在 verify 中修改源码。
39
+
40
+ ## 认证边界
41
+
42
+ JWT 模板只在浏览器内存保存 Token,页面刷新需重新登录;退出清除内存,不声称服务器撤销旧 JWT。Session 模板使用 HttpOnly Cookie 和同源写入校验,退出后 Session 失效。所有记录访问由服务端按当前用户过滤。
43
+
44
+ ## 容器构建
45
+
46
+ 按模板提供的 Dockerfile 构建,配置自己的数据库和秘密;构建与本地验证不代表生产部署或业务验收通过。不要把 `.env`、凭据文件或运行报告加入镜像/版本库。
47
+
48
+ ## 视觉设计
49
+
50
+ UI 开发前读根目录 DESIGN.md 和内置 design-contract Skill。`design/tokens.json`、`widgets.json`、`structure.json` 与公共 CSS 是组件库无关的设计源;`web/src/ui.tsx` 是所选组件库适配器;`workspace-model.ts` 管理业务。修改源后执行 `npm run design:sync`,再运行只读漂移检查 `npm run design:check` 和浏览器契约检查 `npm run design:verify`。后者临时创建测试入口,验证全部声明的组件状态及页面(桌面/移动端),输出 `reports/design-check/result.json`,结束后清理入口。需要已安装依赖及 Playwright Chromium。build/typecheck/lint 同样检查漂移。当前项目的 PASS 仅证明已选适配器;新增库须保持共享规范和业务不变,添加适配器、依赖及框架绑定,并在脚手架完整矩阵中复验。
51
+
52
+ ## 本模板
53
+
54
+ 技术栈:react-spring;UI:antd。需要 Java 17 + Maven Wrapper、pnpm(前端)。
55
+ 后端镜像:docker build backend;前端构建产物位于 web/dist,生产需要同源反向代理 /api 到后端。
@@ -0,0 +1,14 @@
1
+ # Template sources and licenses
2
+
3
+ Templates are maintained derivatives, not unmodified upstream distributions. Exact bundled files are hashed in templates/catalog.json; npm/uv/pnpm/Bun locks pin dependency resolution. Initialization is offline and never invokes upstream generators.
4
+
5
+ | Source | Fixed reference | Use / modifications | License |
6
+ | --- | --- | --- | --- |
7
+ | fastapi/full-stack-fastapi-template | b1125d8839482cb7bbae603ddc6d0081bf87532e | SQLModel/Alembic/JWT/pwdlib foundation; reduced accounts, replaced sample feature with owner-scoped records, retained Bun frontend | MIT, licenses/fastapi.txt |
8
+ | nestjs/typescript-starter | a122dea65cd0610ee205d7765ed46f9d73629141 | Nest module/bootstrap foundation; added Prisma, JWT/Guard, Jest/Supertest; no deployment tooling | MIT, licenses/nest.txt |
9
+ | Spring Initializr | starter.zip fetched 2026-10-19; Maven Wrapper and Java layout | Generator returned unresolved 4.1.1.RELEASE; parent adjusted to stable Maven Central 3.5.16, Session/JPA/Flyway/CRUD added | Apache-2.0 wrapper, licenses/spring.txt |
10
+ | create-next-app | npm 16.4.2 | Official App Router/TypeScript baseline; Better Auth + Prisma + records; no remote fonts | MIT, licenses/next.txt |
11
+ | shadcn/ui | Button/Input pattern, pinned source reference in licenses/sources.json | Adapted local CVA/Slot controls with Tailwind; retained copy ownership | MIT, licenses/shadcn.txt |
12
+ | Ant Design | npm 6.6.6 | Installed dependency; no copied source | MIT (package license) |
13
+
14
+ Package dependencies carry their own licenses. Generated apps include these notices; template authors must carry applicable notices when changing upstream-derived files. Names and marks remain their respective owners'.
@@ -0,0 +1,3 @@
1
+ wrapperVersion=3.3.4
2
+ distributionType=only-script
3
+ distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.10.0/apache-maven-3.10.0-bin.zip
@@ -0,0 +1,11 @@
1
+ FROM maven:3.9-eclipse-temurin-17 AS build
2
+ WORKDIR /app
3
+ COPY pom.xml ./
4
+ COPY src ./src
5
+ RUN mvn -q -DskipTests package
6
+ FROM eclipse-temurin:17-jre
7
+ WORKDIR /app
8
+ COPY --from=build /app/target/backend.jar ./backend.jar
9
+ ENV SERVER_ADDRESS=0.0.0.0
10
+ EXPOSE 8000
11
+ CMD ["java", "-jar", "backend.jar"]
@@ -0,0 +1,295 @@
1
+ #!/bin/sh
2
+ # ----------------------------------------------------------------------------
3
+ # Licensed to the Apache Software Foundation (ASF) under one
4
+ # or more contributor license agreements. See the NOTICE file
5
+ # distributed with this work for additional information
6
+ # regarding copyright ownership. The ASF licenses this file
7
+ # to you under the Apache License, Version 2.0 (the
8
+ # "License"); you may not use this file except in compliance
9
+ # with the License. You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing,
14
+ # software distributed under the License is distributed on an
15
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16
+ # KIND, either express or implied. See the License for the
17
+ # specific language governing permissions and limitations
18
+ # under the License.
19
+ # ----------------------------------------------------------------------------
20
+
21
+ # ----------------------------------------------------------------------------
22
+ # Apache Maven Wrapper startup batch script, version 3.3.4
23
+ #
24
+ # Optional ENV vars
25
+ # -----------------
26
+ # JAVA_HOME - location of a JDK home dir, required when download maven via java source
27
+ # MVNW_REPOURL - repo url base for downloading maven distribution
28
+ # MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven
29
+ # MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output
30
+ # ----------------------------------------------------------------------------
31
+
32
+ set -euf
33
+ [ "${MVNW_VERBOSE-}" != debug ] || set -x
34
+
35
+ # OS specific support.
36
+ native_path() { printf %s\\n "$1"; }
37
+ case "$(uname)" in
38
+ CYGWIN* | MINGW*)
39
+ [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")"
40
+ native_path() { cygpath --path --windows "$1"; }
41
+ ;;
42
+ esac
43
+
44
+ # set JAVACMD and JAVACCMD
45
+ set_java_home() {
46
+ # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched
47
+ if [ -n "${JAVA_HOME-}" ]; then
48
+ if [ -x "$JAVA_HOME/jre/sh/java" ]; then
49
+ # IBM's JDK on AIX uses strange locations for the executables
50
+ JAVACMD="$JAVA_HOME/jre/sh/java"
51
+ JAVACCMD="$JAVA_HOME/jre/sh/javac"
52
+ else
53
+ JAVACMD="$JAVA_HOME/bin/java"
54
+ JAVACCMD="$JAVA_HOME/bin/javac"
55
+
56
+ if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then
57
+ echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2
58
+ echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2
59
+ return 1
60
+ fi
61
+ fi
62
+ else
63
+ JAVACMD="$(
64
+ 'set' +e
65
+ 'unset' -f command 2>/dev/null
66
+ 'command' -v java
67
+ )" || :
68
+ JAVACCMD="$(
69
+ 'set' +e
70
+ 'unset' -f command 2>/dev/null
71
+ 'command' -v javac
72
+ )" || :
73
+
74
+ if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then
75
+ echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2
76
+ return 1
77
+ fi
78
+ fi
79
+ }
80
+
81
+ # hash string like Java String::hashCode
82
+ hash_string() {
83
+ str="${1:-}" h=0
84
+ while [ -n "$str" ]; do
85
+ char="${str%"${str#?}"}"
86
+ h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296))
87
+ str="${str#?}"
88
+ done
89
+ printf %x\\n $h
90
+ }
91
+
92
+ verbose() { :; }
93
+ [ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; }
94
+
95
+ die() {
96
+ printf %s\\n "$1" >&2
97
+ exit 1
98
+ }
99
+
100
+ trim() {
101
+ # MWRAPPER-139:
102
+ # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds.
103
+ # Needed for removing poorly interpreted newline sequences when running in more
104
+ # exotic environments such as mingw bash on Windows.
105
+ printf "%s" "${1}" | tr -d '[:space:]'
106
+ }
107
+
108
+ scriptDir="$(dirname "$0")"
109
+ scriptName="$(basename "$0")"
110
+
111
+ # parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties
112
+ while IFS="=" read -r key value; do
113
+ case "${key-}" in
114
+ distributionUrl) distributionUrl=$(trim "${value-}") ;;
115
+ distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;;
116
+ esac
117
+ done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties"
118
+ [ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties"
119
+
120
+ case "${distributionUrl##*/}" in
121
+ maven-mvnd-*bin.*)
122
+ MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/
123
+ case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in
124
+ *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;;
125
+ :Darwin*x86_64) distributionPlatform=darwin-amd64 ;;
126
+ :Darwin*arm64) distributionPlatform=darwin-aarch64 ;;
127
+ :Linux*x86_64*) distributionPlatform=linux-amd64 ;;
128
+ *)
129
+ echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2
130
+ distributionPlatform=linux-amd64
131
+ ;;
132
+ esac
133
+ distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip"
134
+ ;;
135
+ maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;;
136
+ *) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;;
137
+ esac
138
+
139
+ # apply MVNW_REPOURL and calculate MAVEN_HOME
140
+ # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-<version>,maven-mvnd-<version>-<platform>}/<hash>
141
+ [ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}"
142
+ distributionUrlName="${distributionUrl##*/}"
143
+ distributionUrlNameMain="${distributionUrlName%.*}"
144
+ distributionUrlNameMain="${distributionUrlNameMain%-bin}"
145
+ MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}"
146
+ MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")"
147
+
148
+ exec_maven() {
149
+ unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || :
150
+ exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD"
151
+ }
152
+
153
+ if [ -d "$MAVEN_HOME" ]; then
154
+ verbose "found existing MAVEN_HOME at $MAVEN_HOME"
155
+ exec_maven "$@"
156
+ fi
157
+
158
+ case "${distributionUrl-}" in
159
+ *?-bin.zip | *?maven-mvnd-?*-?*.zip) ;;
160
+ *) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;;
161
+ esac
162
+
163
+ # prepare tmp dir
164
+ if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then
165
+ clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; }
166
+ trap clean HUP INT TERM EXIT
167
+ else
168
+ die "cannot create temp dir"
169
+ fi
170
+
171
+ mkdir -p -- "${MAVEN_HOME%/*}"
172
+
173
+ # Download and Install Apache Maven
174
+ verbose "Couldn't find MAVEN_HOME, downloading and installing it ..."
175
+ verbose "Downloading from: $distributionUrl"
176
+ verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName"
177
+
178
+ # select .zip or .tar.gz
179
+ if ! command -v unzip >/dev/null; then
180
+ distributionUrl="${distributionUrl%.zip}.tar.gz"
181
+ distributionUrlName="${distributionUrl##*/}"
182
+ fi
183
+
184
+ # verbose opt
185
+ __MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR=''
186
+ [ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v
187
+
188
+ # normalize http auth
189
+ case "${MVNW_PASSWORD:+has-password}" in
190
+ '') MVNW_USERNAME='' MVNW_PASSWORD='' ;;
191
+ has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;;
192
+ esac
193
+
194
+ if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then
195
+ verbose "Found wget ... using wget"
196
+ wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl"
197
+ elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then
198
+ verbose "Found curl ... using curl"
199
+ curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl"
200
+ elif set_java_home; then
201
+ verbose "Falling back to use Java to download"
202
+ javaSource="$TMP_DOWNLOAD_DIR/Downloader.java"
203
+ targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName"
204
+ cat >"$javaSource" <<-END
205
+ public class Downloader extends java.net.Authenticator
206
+ {
207
+ protected java.net.PasswordAuthentication getPasswordAuthentication()
208
+ {
209
+ return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() );
210
+ }
211
+ public static void main( String[] args ) throws Exception
212
+ {
213
+ setDefault( new Downloader() );
214
+ java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() );
215
+ }
216
+ }
217
+ END
218
+ # For Cygwin/MinGW, switch paths to Windows format before running javac and java
219
+ verbose " - Compiling Downloader.java ..."
220
+ "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java"
221
+ verbose " - Running Downloader.java ..."
222
+ "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")"
223
+ fi
224
+
225
+ # If specified, validate the SHA-256 sum of the Maven distribution zip file
226
+ if [ -n "${distributionSha256Sum-}" ]; then
227
+ distributionSha256Result=false
228
+ if [ "$MVN_CMD" = mvnd.sh ]; then
229
+ echo "Checksum validation is not supported for maven-mvnd." >&2
230
+ echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
231
+ exit 1
232
+ elif command -v sha256sum >/dev/null; then
233
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then
234
+ distributionSha256Result=true
235
+ fi
236
+ elif command -v shasum >/dev/null; then
237
+ if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then
238
+ distributionSha256Result=true
239
+ fi
240
+ else
241
+ echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2
242
+ echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2
243
+ exit 1
244
+ fi
245
+ if [ $distributionSha256Result = false ]; then
246
+ echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2
247
+ echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2
248
+ exit 1
249
+ fi
250
+ fi
251
+
252
+ # unzip and move
253
+ if command -v unzip >/dev/null; then
254
+ unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip"
255
+ else
256
+ tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar"
257
+ fi
258
+
259
+ # Find the actual extracted directory name (handles snapshots where filename != directory name)
260
+ actualDistributionDir=""
261
+
262
+ # First try the expected directory name (for regular distributions)
263
+ if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then
264
+ if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then
265
+ actualDistributionDir="$distributionUrlNameMain"
266
+ fi
267
+ fi
268
+
269
+ # If not found, search for any directory with the Maven executable (for snapshots)
270
+ if [ -z "$actualDistributionDir" ]; then
271
+ # enable globbing to iterate over items
272
+ set +f
273
+ for dir in "$TMP_DOWNLOAD_DIR"/*; do
274
+ if [ -d "$dir" ]; then
275
+ if [ -f "$dir/bin/$MVN_CMD" ]; then
276
+ actualDistributionDir="$(basename "$dir")"
277
+ break
278
+ fi
279
+ fi
280
+ done
281
+ set -f
282
+ fi
283
+
284
+ if [ -z "$actualDistributionDir" ]; then
285
+ verbose "Contents of $TMP_DOWNLOAD_DIR:"
286
+ verbose "$(ls -la "$TMP_DOWNLOAD_DIR")"
287
+ die "Could not find Maven distribution directory in extracted archive"
288
+ fi
289
+
290
+ verbose "Found extracted Maven distribution directory: $actualDistributionDir"
291
+ printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url"
292
+ mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME"
293
+
294
+ clean || :
295
+ exec_maven "$@"
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
3
+ <modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.5.16</version><relativePath/></parent>
4
+ <groupId>dev.scaffold</groupId><artifactId>__NAME_EN__-api</artifactId><version>1.0.0</version><name>__NAME_EN__</name><description>Personal record application</description><properties><java.version>17</java.version><scaffold.reports>${project.build.directory}/surefire-reports</scaffold.reports><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
5
+ <dependencies>
6
+ <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
7
+ <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency>
8
+ <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency>
9
+ <dependency><groupId>org.flywaydb</groupId><artifactId>flyway-core</artifactId></dependency>
10
+ <dependency><groupId>org.flywaydb</groupId><artifactId>flyway-database-postgresql</artifactId></dependency>
11
+ <dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><scope>runtime</scope></dependency>
12
+ <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
13
+ <dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-test</artifactId><scope>test</scope></dependency>
14
+ </dependencies><build><finalName>backend</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><reportsDirectory>${scaffold.reports}</reportsDirectory></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
15
+ </project>