@stacksjs/defaults 0.70.206 → 0.70.208

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 (408) hide show
  1. package/TODO.md +21 -0
  2. package/ai/AGENTS.md +79 -0
  3. package/ai/README.md +45 -0
  4. package/ai/claude/launch.json +12 -0
  5. package/ai/skills/stacks-actions/SKILL.md +128 -0
  6. package/ai/skills/stacks-ai/SKILL.md +276 -0
  7. package/ai/skills/stacks-alias/SKILL.md +94 -0
  8. package/ai/skills/stacks-analytics/SKILL.md +91 -0
  9. package/ai/skills/stacks-api/SKILL.md +738 -0
  10. package/ai/skills/stacks-arrays/SKILL.md +277 -0
  11. package/ai/skills/stacks-auth/SKILL.md +422 -0
  12. package/ai/skills/stacks-auto-imports/SKILL.md +138 -0
  13. package/ai/skills/stacks-brandkit/SKILL.md +811 -0
  14. package/ai/skills/stacks-browse/SKILL.md +127 -0
  15. package/ai/skills/stacks-browse/scripts/browse.ts +492 -0
  16. package/ai/skills/stacks-browser/SKILL.md +145 -0
  17. package/ai/skills/stacks-buddy/SKILL.md +676 -0
  18. package/ai/skills/stacks-build/SKILL.md +163 -0
  19. package/ai/skills/stacks-cache/SKILL.md +125 -0
  20. package/ai/skills/stacks-calendar/SKILL.md +113 -0
  21. package/ai/skills/stacks-chat/SKILL.md +371 -0
  22. package/ai/skills/stacks-cli/SKILL.md +112 -0
  23. package/ai/skills/stacks-cloud/SKILL.md +192 -0
  24. package/ai/skills/stacks-cms/SKILL.md +217 -0
  25. package/ai/skills/stacks-collections/SKILL.md +82 -0
  26. package/ai/skills/stacks-commerce/SKILL.md +114 -0
  27. package/ai/skills/stacks-composables/SKILL.md +161 -0
  28. package/ai/skills/stacks-config/SKILL.md +144 -0
  29. package/ai/skills/stacks-configuration/SKILL.md +154 -0
  30. package/ai/skills/stacks-cron/SKILL.md +123 -0
  31. package/ai/skills/stacks-crosswind/SKILL.md +190 -0
  32. package/ai/skills/stacks-dashboard/SKILL.md +173 -0
  33. package/ai/skills/stacks-database/SKILL.md +286 -0
  34. package/ai/skills/stacks-datetime/SKILL.md +269 -0
  35. package/ai/skills/stacks-dependencies/SKILL.md +111 -0
  36. package/ai/skills/stacks-deploy/SKILL.md +102 -0
  37. package/ai/skills/stacks-design-brutalist/SKILL.md +110 -0
  38. package/ai/skills/stacks-design-minimalist/SKILL.md +115 -0
  39. package/ai/skills/stacks-design-output/SKILL.md +55 -0
  40. package/ai/skills/stacks-design-soft/SKILL.md +156 -0
  41. package/ai/skills/stacks-design-taste/SKILL.md +1012 -0
  42. package/ai/skills/stacks-design-taste-codex/SKILL.md +294 -0
  43. package/ai/skills/stacks-desktop/SKILL.md +78 -0
  44. package/ai/skills/stacks-development/SKILL.md +298 -0
  45. package/ai/skills/stacks-dns/SKILL.md +149 -0
  46. package/ai/skills/stacks-docs/SKILL.md +109 -0
  47. package/ai/skills/stacks-email/SKILL.md +236 -0
  48. package/ai/skills/stacks-enums/SKILL.md +100 -0
  49. package/ai/skills/stacks-env/SKILL.md +181 -0
  50. package/ai/skills/stacks-error-handling/SKILL.md +137 -0
  51. package/ai/skills/stacks-events/SKILL.md +228 -0
  52. package/ai/skills/stacks-faker/SKILL.md +158 -0
  53. package/ai/skills/stacks-git/SKILL.md +158 -0
  54. package/ai/skills/stacks-guard/SKILL.md +98 -0
  55. package/ai/skills/stacks-health/SKILL.md +75 -0
  56. package/ai/skills/stacks-http/SKILL.md +316 -0
  57. package/ai/skills/stacks-i18n/SKILL.md +198 -0
  58. package/ai/skills/stacks-image-to-code/SKILL.md +629 -0
  59. package/ai/skills/stacks-imagegen-mobile/SKILL.md +1474 -0
  60. package/ai/skills/stacks-imagegen-web/SKILL.md +998 -0
  61. package/ai/skills/stacks-investigate/SKILL.md +119 -0
  62. package/ai/skills/stacks-jobs/SKILL.md +136 -0
  63. package/ai/skills/stacks-lint/SKILL.md +184 -0
  64. package/ai/skills/stacks-listeners/SKILL.md +99 -0
  65. package/ai/skills/stacks-logging/SKILL.md +78 -0
  66. package/ai/skills/stacks-mail/SKILL.md +120 -0
  67. package/ai/skills/stacks-middleware/SKILL.md +249 -0
  68. package/ai/skills/stacks-migrations/SKILL.md +105 -0
  69. package/ai/skills/stacks-models/SKILL.md +267 -0
  70. package/ai/skills/stacks-new-feature/SKILL.md +206 -0
  71. package/ai/skills/stacks-notifications/SKILL.md +210 -0
  72. package/ai/skills/stacks-objects/SKILL.md +205 -0
  73. package/ai/skills/stacks-office-hours/SKILL.md +134 -0
  74. package/ai/skills/stacks-orm/SKILL.md +342 -0
  75. package/ai/skills/stacks-path/SKILL.md +118 -0
  76. package/ai/skills/stacks-payments/SKILL.md +373 -0
  77. package/ai/skills/stacks-plan-review/SKILL.md +152 -0
  78. package/ai/skills/stacks-plugins/SKILL.md +149 -0
  79. package/ai/skills/stacks-push/SKILL.md +376 -0
  80. package/ai/skills/stacks-query-builder/SKILL.md +128 -0
  81. package/ai/skills/stacks-queue/SKILL.md +559 -0
  82. package/ai/skills/stacks-realtime/SKILL.md +442 -0
  83. package/ai/skills/stacks-redesign/SKILL.md +182 -0
  84. package/ai/skills/stacks-registry/SKILL.md +58 -0
  85. package/ai/skills/stacks-repl/SKILL.md +80 -0
  86. package/ai/skills/stacks-retro/SKILL.md +122 -0
  87. package/ai/skills/stacks-review/SKILL.md +135 -0
  88. package/ai/skills/stacks-router/SKILL.md +231 -0
  89. package/ai/skills/stacks-routes/SKILL.md +105 -0
  90. package/ai/skills/stacks-scaffolding/SKILL.md +162 -0
  91. package/ai/skills/stacks-scheduler/SKILL.md +363 -0
  92. package/ai/skills/stacks-search-engine/SKILL.md +112 -0
  93. package/ai/skills/stacks-security/SKILL.md +129 -0
  94. package/ai/skills/stacks-security-audit/SKILL.md +128 -0
  95. package/ai/skills/stacks-server/SKILL.md +458 -0
  96. package/ai/skills/stacks-shell/SKILL.md +62 -0
  97. package/ai/skills/stacks-slug/SKILL.md +87 -0
  98. package/ai/skills/stacks-sms/SKILL.md +385 -0
  99. package/ai/skills/stacks-socials/SKILL.md +303 -0
  100. package/ai/skills/stacks-storage/SKILL.md +576 -0
  101. package/ai/skills/stacks-strings/SKILL.md +416 -0
  102. package/ai/skills/stacks-stx/SKILL.md +176 -0
  103. package/ai/skills/stacks-technical-diagrams/LICENSE +22 -0
  104. package/ai/skills/stacks-technical-diagrams/SKILL.md +290 -0
  105. package/ai/skills/stacks-technical-diagrams/agents/openai.yaml +4 -0
  106. package/ai/skills/stacks-technical-diagrams/assets/template.html +1252 -0
  107. package/ai/skills/stacks-technical-diagrams/bin/technical-diagrams.mjs +289 -0
  108. package/ai/skills/stacks-technical-diagrams/bunfig.toml +1 -0
  109. package/ai/skills/stacks-technical-diagrams/examples/agent-run.lifecycle.json +64 -0
  110. package/ai/skills/stacks-technical-diagrams/examples/agent-tool-call.workflow.json +88 -0
  111. package/ai/skills/stacks-technical-diagrams/examples/cache-miss-request.sequence.json +75 -0
  112. package/ai/skills/stacks-technical-diagrams/examples/product-analytics.dataflow.json +70 -0
  113. package/ai/skills/stacks-technical-diagrams/examples/web-app.architecture.json +41 -0
  114. package/ai/skills/stacks-technical-diagrams/renderers/architecture/grid.mjs +62 -0
  115. package/ai/skills/stacks-technical-diagrams/renderers/architecture/render-architecture.mjs +371 -0
  116. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/README.md +82 -0
  117. package/ai/skills/stacks-technical-diagrams/renderers/dataflow/render-dataflow.mjs +295 -0
  118. package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/README.md +91 -0
  119. package/ai/skills/stacks-technical-diagrams/renderers/lifecycle/render-lifecycle.mjs +384 -0
  120. package/ai/skills/stacks-technical-diagrams/renderers/sequence/README.md +84 -0
  121. package/ai/skills/stacks-technical-diagrams/renderers/sequence/render-sequence.mjs +257 -0
  122. package/ai/skills/stacks-technical-diagrams/renderers/shared/cli.mjs +42 -0
  123. package/ai/skills/stacks-technical-diagrams/renderers/shared/generated-validators.mjs +13 -0
  124. package/ai/skills/stacks-technical-diagrams/renderers/shared/geometry.mjs +230 -0
  125. package/ai/skills/stacks-technical-diagrams/renderers/shared/layout-report.mjs +40 -0
  126. package/ai/skills/stacks-technical-diagrams/renderers/shared/utils.mjs +88 -0
  127. package/ai/skills/stacks-technical-diagrams/renderers/shared/validator.mjs +40 -0
  128. package/ai/skills/stacks-technical-diagrams/renderers/workflow/README.md +103 -0
  129. package/ai/skills/stacks-technical-diagrams/renderers/workflow/render-workflow.mjs +481 -0
  130. package/ai/skills/stacks-technical-diagrams/schemas/README.md +68 -0
  131. package/ai/skills/stacks-technical-diagrams/schemas/architecture.schema.json +121 -0
  132. package/ai/skills/stacks-technical-diagrams/schemas/common.schema.json +43 -0
  133. package/ai/skills/stacks-technical-diagrams/schemas/dataflow.schema.json +221 -0
  134. package/ai/skills/stacks-technical-diagrams/schemas/lifecycle.schema.json +241 -0
  135. package/ai/skills/stacks-technical-diagrams/schemas/sequence.schema.json +186 -0
  136. package/ai/skills/stacks-technical-diagrams/schemas/workflow.schema.json +332 -0
  137. package/ai/skills/stacks-technical-diagrams/scripts/check-render-output.mjs +297 -0
  138. package/ai/skills/stacks-technical-diagrams/scripts/render-examples.mjs +28 -0
  139. package/ai/skills/stacks-testing/SKILL.md +129 -0
  140. package/ai/skills/stacks-tunnel/SKILL.md +125 -0
  141. package/ai/skills/stacks-types/SKILL.md +178 -0
  142. package/ai/skills/stacks-ui/SKILL.md +246 -0
  143. package/ai/skills/stacks-utils/SKILL.md +444 -0
  144. package/ai/skills/stacks-validation/SKILL.md +371 -0
  145. package/ai/skills/stacks-whois/SKILL.md +315 -0
  146. package/assets/world-map-data.ts +121 -0
  147. package/bootstrap.ts +114 -0
  148. package/docs/api-examples.md +46 -0
  149. package/docs/index.md +24 -0
  150. package/docs/markdown-examples.md +87 -0
  151. package/functions/analytics.ts +97 -0
  152. package/functions/api.ts +143 -0
  153. package/functions/auth.ts +208 -0
  154. package/functions/billing/payments.ts +149 -0
  155. package/functions/blog.ts +120 -0
  156. package/functions/cms/categorizables.ts +107 -0
  157. package/functions/cms/pages.ts +108 -0
  158. package/functions/cms/posts.ts +100 -0
  159. package/functions/cms/taggables.ts +102 -0
  160. package/functions/commerce/coupons.ts +128 -0
  161. package/functions/commerce/customers.ts +128 -0
  162. package/functions/commerce/gift-cards.ts +119 -0
  163. package/functions/commerce/orders.ts +112 -0
  164. package/functions/commerce/payments.ts +119 -0
  165. package/functions/commerce/products/categories.ts +123 -0
  166. package/functions/commerce/products/manufacturers.ts +123 -0
  167. package/functions/commerce/products/products.ts +123 -0
  168. package/functions/commerce/products/reviews.ts +123 -0
  169. package/functions/commerce/products/units.ts +123 -0
  170. package/functions/commerce/products/variants.ts +123 -0
  171. package/functions/commerce/shippings/delivery-routes.ts +123 -0
  172. package/functions/commerce/shippings/digital-deliveries.ts +119 -0
  173. package/functions/commerce/shippings/drivers.ts +123 -0
  174. package/functions/commerce/shippings/license-keys.ts +123 -0
  175. package/functions/commerce/shippings/shipping-methods.ts +123 -0
  176. package/functions/commerce/shippings/shipping-rates.ts +119 -0
  177. package/functions/commerce/shippings/shipping-zones.ts +119 -0
  178. package/functions/commerce/taxes.ts +119 -0
  179. package/functions/commerce/waitlist/products.ts +123 -0
  180. package/functions/commerce/waitlist/restaurants.ts +123 -0
  181. package/functions/craft.ts +107 -0
  182. package/functions/dashboard.ts +153 -0
  183. package/functions/inbox.ts +95 -0
  184. package/functions/jobs.ts +86 -0
  185. package/functions/monitoring/errors.ts +295 -0
  186. package/functions/queue.ts +111 -0
  187. package/functions/realtime/websockets.ts +96 -0
  188. package/functions/realtime.ts +52 -0
  189. package/functions/releases.ts +49 -0
  190. package/functions/search.ts +126 -0
  191. package/functions/toasts.ts +95 -0
  192. package/functions/uploads.ts +216 -0
  193. package/ide/.gitignore +4 -0
  194. package/ide/cursor/rules/auto-imports.mdc +574 -0
  195. package/ide/cursor/rules/code-style.mdc +12 -0
  196. package/ide/cursor/rules/documentation.mdc +9 -0
  197. package/ide/cursor/rules/error-handling-validation.mdc +11 -0
  198. package/ide/cursor/rules/key-conventions.mdc +11 -0
  199. package/ide/cursor/rules/project-structure.mdc +169 -0
  200. package/ide/cursor/rules/readme.mdc +318 -0
  201. package/ide/cursor/rules/syntax-formatting.mdc +9 -0
  202. package/ide/cursor/rules/testing.mdc +10 -0
  203. package/ide/cursor/rules/typescript.mdc +9 -0
  204. package/ide/cursor/rules/ui-styling.mdc +0 -0
  205. package/ide/dictionary.txt +397 -0
  206. package/ide/jetbrains/.fleet/settings.json +4 -0
  207. package/ide/jetbrains/.idea/.gitignore +5 -0
  208. package/ide/jetbrains/.idea/.name +1 -0
  209. package/ide/jetbrains/.idea/inspectionProfiles/Project_Default.xml +6 -0
  210. package/ide/jetbrains/.idea/jsLinters/eslint.xml +7 -0
  211. package/ide/jetbrains/.idea/modules.xml +8 -0
  212. package/ide/jetbrains/.idea/stacks.iml +22 -0
  213. package/ide/jetbrains/.idea/vcs.xml +6 -0
  214. package/ide/jetbrains/.idea/webResources.xml +14 -0
  215. package/ide/jetbrains/IntelliJ IDEA Global Settings +0 -0
  216. package/ide/jetbrains/installed.txt +4 -0
  217. package/ide/jetbrains/options/github-copilot.xml +5 -0
  218. package/ide/jetbrains/options/nodejs.xml +7 -0
  219. package/ide/jetbrains/options/templates.xml +124 -0
  220. package/ide/jetbrains/templates/JavaScript.xml +6 -0
  221. package/ide/jetbrains/templates/Stacks.xml +8 -0
  222. package/ide/vscode/.vscode/README.md +23 -0
  223. package/ide/vscode/.vscode/extensions.json +5 -0
  224. package/ide/vscode/.vscode/settings.json +176 -0
  225. package/ide/vscode/.vscode/stacks.code-snippets +181 -0
  226. package/ide/vscode/LICENSE.md +21 -0
  227. package/ide/vscode/README.md +36 -0
  228. package/ide/vscode/logo.png +0 -0
  229. package/ide/vscode/package.json +79 -0
  230. package/ide/zed/.zed/settings.json +139 -0
  231. package/lang/README.md +28 -0
  232. package/lang/de.yml +14 -0
  233. package/lang/en.yml +15 -0
  234. package/package.json +19 -3
  235. package/project/bootstrap +161 -0
  236. package/project/buddy +175 -0
  237. package/project/storage/framework/tsconfig.app.json +50 -0
  238. package/project/storage/framework/tsconfig.base.json +58 -0
  239. package/routes/core.ts +78 -0
  240. package/routes/dashboard-api.ts +233 -0
  241. package/routes/dashboard.ts +739 -0
  242. package/routes/email.ts +129 -0
  243. package/stores/[name].stx +16 -0
  244. package/stores/git.ts +71 -0
  245. package/stores/payment.ts +474 -0
  246. package/stores/queue.ts +43 -0
  247. package/stores/user.ts +29 -0
  248. package/stx-components-plugin.ts +25 -0
  249. package/styles/design-tokens.css +597 -0
  250. package/types/dashboard.ts +70 -0
  251. package/types/defaults.ts +438 -0
  252. package/vcs/github/CODE_OF_CONDUCT.md +83 -0
  253. package/vcs/github/CONTRIBUTING.md +187 -0
  254. package/vcs/github/EXPLANATIONS.md +41 -0
  255. package/vcs/github/FUNDING.yml +1 -0
  256. package/vcs/github/ISSUE_TEMPLATE/bug_report.yml +49 -0
  257. package/vcs/github/ISSUE_TEMPLATE/config.yml +10 -0
  258. package/vcs/github/ISSUE_TEMPLATE/feature_request.yml +44 -0
  259. package/vcs/github/SECURITY.md +70 -0
  260. package/vcs/github/renovate.json +5 -0
  261. package/vcs/github/stale.yml +14 -0
  262. package/vcs/github/workflows/README.md +16 -0
  263. package/vcs/github/workflows/ci.yml +114 -0
  264. package/vcs/github/workflows/export-size.yml +25 -0
  265. package/vcs/github/workflows/labeler.yml +13 -0
  266. package/vcs/github/workflows/release.yml +219 -0
  267. package/views/[...all].stx +8 -0
  268. package/views/about.md +3 -0
  269. package/views/auth/login.stx +1 -0
  270. package/views/auth/signup.stx +85 -0
  271. package/views/dashboard/.discovered-models.json +542 -0
  272. package/views/dashboard/AUDIT.md +904 -0
  273. package/views/dashboard/[...all].stx +89 -0
  274. package/views/dashboard/access-tokens/index.stx +177 -0
  275. package/views/dashboard/actions/index.stx +129 -0
  276. package/views/dashboard/analytics/blog/index.stx +356 -0
  277. package/views/dashboard/analytics/browsers/index.stx +263 -0
  278. package/views/dashboard/analytics/commerce/sales/index.stx +329 -0
  279. package/views/dashboard/analytics/commerce/web/index.stx +379 -0
  280. package/views/dashboard/analytics/countries/index.stx +289 -0
  281. package/views/dashboard/analytics/devices/index.stx +305 -0
  282. package/views/dashboard/analytics/events/index.stx +536 -0
  283. package/views/dashboard/analytics/index.stx +88 -0
  284. package/views/dashboard/analytics/marketing/index.stx +315 -0
  285. package/views/dashboard/analytics/pages/index.stx +271 -0
  286. package/views/dashboard/analytics/referrers/index.stx +319 -0
  287. package/views/dashboard/analytics/web/index.stx +356 -0
  288. package/views/dashboard/buddy/index.stx +198 -0
  289. package/views/dashboard/ci/index.stx +462 -0
  290. package/views/dashboard/cloud/index.stx +452 -0
  291. package/views/dashboard/commands/index.stx +295 -0
  292. package/views/dashboard/commerce/categories/index.stx +406 -0
  293. package/views/dashboard/commerce/coupons/index.stx +485 -0
  294. package/views/dashboard/commerce/customers/index.stx +410 -0
  295. package/views/dashboard/commerce/dashboard/index.stx +287 -0
  296. package/views/dashboard/commerce/delivery/delivery-routes.stx +305 -0
  297. package/views/dashboard/commerce/delivery/digital-delivery.stx +332 -0
  298. package/views/dashboard/commerce/delivery/drivers.stx +397 -0
  299. package/views/dashboard/commerce/delivery/index.stx +18 -0
  300. package/views/dashboard/commerce/delivery/license-keys.stx +380 -0
  301. package/views/dashboard/commerce/delivery/shipping-methods.stx +346 -0
  302. package/views/dashboard/commerce/delivery/shipping-rates.stx +338 -0
  303. package/views/dashboard/commerce/delivery/shipping-zones.stx +302 -0
  304. package/views/dashboard/commerce/delivery/tabs.ts +25 -0
  305. package/views/dashboard/commerce/gift-cards/index.stx +561 -0
  306. package/views/dashboard/commerce/manufacturers/index.stx +308 -0
  307. package/views/dashboard/commerce/orders/index.stx +247 -0
  308. package/views/dashboard/commerce/payments/index.stx +535 -0
  309. package/views/dashboard/commerce/pos/index.stx +653 -0
  310. package/views/dashboard/commerce/printers/devices/index.stx +273 -0
  311. package/views/dashboard/commerce/printers/receipts/index.stx +308 -0
  312. package/views/dashboard/commerce/products/detail.stx +563 -0
  313. package/views/dashboard/commerce/products/index.stx +370 -0
  314. package/views/dashboard/commerce/reviews/index.stx +656 -0
  315. package/views/dashboard/commerce/reviews/index.ts +0 -0
  316. package/views/dashboard/commerce/taxes/index.stx +377 -0
  317. package/views/dashboard/commerce/units/index.stx +317 -0
  318. package/views/dashboard/commerce/variants/index.stx +319 -0
  319. package/views/dashboard/commerce/waitlist/products.stx +942 -0
  320. package/views/dashboard/commerce/waitlist/restaurant.stx +1024 -0
  321. package/views/dashboard/components/index.stx +330 -0
  322. package/views/dashboard/composables/index.ts +19 -0
  323. package/views/dashboard/composables/useChart.ts +77 -0
  324. package/views/dashboard/composables/useNavigation.ts +99 -0
  325. package/views/dashboard/composables/useRole.ts +58 -0
  326. package/views/dashboard/composables/useTheme.ts +74 -0
  327. package/views/dashboard/content/authors/index.stx +171 -0
  328. package/views/dashboard/content/blog/index.stx +493 -0
  329. package/views/dashboard/content/categories/index.stx +169 -0
  330. package/views/dashboard/content/comments/index.stx +189 -0
  331. package/views/dashboard/content/dashboard.stx +383 -0
  332. package/views/dashboard/content/files/index.stx +706 -0
  333. package/views/dashboard/content/pages/index.stx +174 -0
  334. package/views/dashboard/content/posts/index.stx +269 -0
  335. package/views/dashboard/content/seo/index.stx +240 -0
  336. package/views/dashboard/content/tags/index.stx +167 -0
  337. package/views/dashboard/data/activity/index.stx +261 -0
  338. package/views/dashboard/data/dashboard/index.stx +116 -0
  339. package/views/dashboard/data/subscribers.stx +270 -0
  340. package/views/dashboard/data/teams.stx +275 -0
  341. package/views/dashboard/data/users.stx +279 -0
  342. package/views/dashboard/dependencies/index.stx +178 -0
  343. package/views/dashboard/deployments/[id].stx +234 -0
  344. package/views/dashboard/deployments/index.stx +9 -0
  345. package/views/dashboard/dns/index.stx +163 -0
  346. package/views/dashboard/environment/index.stx +283 -0
  347. package/views/dashboard/errors/index.stx +274 -0
  348. package/views/dashboard/forgot-password.stx +57 -0
  349. package/views/dashboard/functions/index.stx +159 -0
  350. package/views/dashboard/health/index.stx +248 -0
  351. package/views/dashboard/inbox/activity.stx +350 -0
  352. package/views/dashboard/inbox/index.stx +452 -0
  353. package/views/dashboard/inbox/settings.stx +290 -0
  354. package/views/dashboard/index.stx +252 -0
  355. package/views/dashboard/insights/index.stx +529 -0
  356. package/views/dashboard/jobs/[id].stx +430 -0
  357. package/views/dashboard/jobs/history.stx +222 -0
  358. package/views/dashboard/jobs/index.stx +214 -0
  359. package/views/dashboard/kanban/[id].stx +899 -0
  360. package/views/dashboard/kanban/index.stx +260 -0
  361. package/views/dashboard/layouts/default.stx +565 -0
  362. package/views/dashboard/layouts/guest.stx +10 -0
  363. package/views/dashboard/login.stx +48 -0
  364. package/views/dashboard/logs/index.stx +540 -0
  365. package/views/dashboard/mailboxes/index.stx +149 -0
  366. package/views/dashboard/management/permissions/index.stx +490 -0
  367. package/views/dashboard/marketing/campaigns/index.stx +604 -0
  368. package/views/dashboard/marketing/lists/index.stx +514 -0
  369. package/views/dashboard/marketing/reviews/index.stx +475 -0
  370. package/views/dashboard/marketing/social-posts/index.stx +560 -0
  371. package/views/dashboard/models/[model].stx +195 -0
  372. package/views/dashboard/models/index.stx +159 -0
  373. package/views/dashboard/monitoring/errors/index.stx +415 -0
  374. package/views/dashboard/notifications/dashboard.stx +383 -0
  375. package/views/dashboard/notifications/email.stx +336 -0
  376. package/views/dashboard/notifications/history.stx +373 -0
  377. package/views/dashboard/notifications/sms.stx +332 -0
  378. package/views/dashboard/packages/index.stx +195 -0
  379. package/views/dashboard/queries/[id].stx +381 -0
  380. package/views/dashboard/queries/history.stx +227 -0
  381. package/views/dashboard/queries/index.stx +335 -0
  382. package/views/dashboard/queries/slow.stx +318 -0
  383. package/views/dashboard/queue/index.stx +427 -0
  384. package/views/dashboard/realtime/index.stx +429 -0
  385. package/views/dashboard/register.stx +46 -0
  386. package/views/dashboard/releases/index.stx +389 -0
  387. package/views/dashboard/requests/index.stx +462 -0
  388. package/views/dashboard/serverless/index.stx +475 -0
  389. package/views/dashboard/servers/[id].stx +299 -0
  390. package/views/dashboard/servers/index.stx +483 -0
  391. package/views/dashboard/settings/billing.stx +50 -0
  392. package/views/dashboard/settings/index.stx +256 -0
  393. package/views/dashboard/settings/mail.stx +252 -0
  394. package/views/dashboard/stores/auth.ts +123 -0
  395. package/views/dashboard/stores/ci.ts +342 -0
  396. package/views/dashboard/stores/index.ts +129 -0
  397. package/views/dashboard/stores/kanban.ts +723 -0
  398. package/views/dashboard/stores/rbac.ts +350 -0
  399. package/views/dashboard/stx.config.ts +34 -0
  400. package/views/dashboard/teams/[id].stx +170 -0
  401. package/views/forum/category.stx +92 -0
  402. package/views/forum/index.stx +209 -0
  403. package/views/forum/new-topic.stx +113 -0
  404. package/views/forum/profile.stx +1 -0
  405. package/views/forum/topic.stx +143 -0
  406. package/views/hello-world/[name].stx +47 -0
  407. package/views/index.stx +21 -0
  408. package/views/system-tray/index.stx +147 -0
@@ -0,0 +1,298 @@
1
+ ---
2
+ name: stacks-development
3
+ description: Use when setting up or configuring the Stacks development environment — dev server, hot reload, development utilities, or IDE configuration. Covers the @stacksjs/development package, the dev server, CLI commands, reverse proxy, SSL, and dev workflow.
4
+ license: MIT
5
+ compatibility: Bun >= 1.3.0, TypeScript
6
+ allowed-tools: Read Edit Write Bash Grep Glob
7
+ ---
8
+
9
+ # Stacks Development
10
+
11
+ ## Key Paths
12
+ - Development package: `storage/framework/core/development/` (stub — exports `{}`)
13
+ - Dev server entry: `storage/framework/server/src/index.ts`
14
+ - Dev server utils: `storage/framework/server/src/utils.ts`
15
+ - Server build script: `storage/framework/server/build.ts`
16
+ - Dev action handlers: `storage/framework/core/actions/src/dev/`
17
+ - Buddy CLI dev commands: `storage/framework/core/buddy/src/commands/dev.ts`
18
+ - Preloader: `storage/framework/defaults/resources/plugins/preloader.ts`
19
+ - Port config: `config/ports.ts`
20
+ - STX config: `config/ui.ts`
21
+ - IDE defaults: `storage/framework/defaults/ide/`
22
+ - SSL setup: `storage/framework/core/actions/src/setup/ssl.ts`
23
+ - Bun config: `bunfig.toml`
24
+ - Dockerfile: `storage/framework/server/Dockerfile`
25
+
26
+ ## Source Files
27
+ ```
28
+ actions/src/dev/
29
+ ├── index.ts # Re-exports all run*DevServer() wrappers
30
+ ├── api.ts # API dev server (bun-router with CORS, port from config.ports.api)
31
+ ├── views.ts # Frontend dev server (bun-plugin-stx serve, .stx templates)
32
+ ├── dashboard.ts # Dashboard dev server (STX + native Craft window + config API)
33
+ ├── dashboard-utils.ts # Model discovery, sidebar config, icon map, waitForServer()
34
+ ├── docs.ts # Docs dev server (@stacksjs/bunpress, watch mode)
35
+ ├── components.ts # Components dev server (runs `bun run dev` in libs/components/vue)
36
+ ├── desktop.ts # Desktop dev server (runs `bun run dev` in framework/views/desktop)
37
+ └── system-tray.ts # System tray dev server (runs `bun run dev` in framework/system-tray)
38
+
39
+ server/
40
+ ├── src/
41
+ │ ├── index.ts # Production server entry (Bun.serve, WebSocket, queue worker mode)
42
+ │ └── utils.ts # cleanCopy(), useCustomOrDefaultServerConfig(), buildDockerImage()
43
+ ├── build.ts # Server build script (Bun.build for ESM, Docker image)
44
+ ├── dev # Shell script for running server via Docker with volume mounts
45
+ ├── Dockerfile # Multi-stage build: oven/bun:1.3.10, exposes port 3000
46
+ ├── package.json # stacks-server package
47
+ ├── tsconfig.docker.json
48
+ └── tsconfig.json
49
+
50
+ buddy/src/commands/
51
+ ├── dev.ts # All `buddy dev` subcommands
52
+ ├── build.ts # All `buddy build` subcommands
53
+ ├── setup.ts # `buddy setup` and `buddy setup:ssl`
54
+ ├── doctor.ts # `buddy doctor` health checks
55
+ └── maintenance.ts # `buddy down`, `buddy up`, `buddy status`
56
+ ```
57
+
58
+ ## Port Configuration (config/ports.ts)
59
+
60
+ ```typescript
61
+ {
62
+ frontend: env.PORT ?? 3000,
63
+ backend: env.PORT_BACKEND ?? 3001,
64
+ admin: env.PORT_ADMIN ?? 3002,
65
+ library: env.PORT_LIBRARY ?? 3003,
66
+ desktop: env.PORT_DESKTOP ?? 3004,
67
+ email: env.PORT_EMAIL ?? 3005,
68
+ docs: env.PORT_DOCS ?? 3006,
69
+ inspect: env.PORT_INSPECT ?? 3007,
70
+ api: env.PORT_API ?? 3008,
71
+ systemTray: env.PORT_SYSTEM_TRAY ?? 3009,
72
+ database: 3010,
73
+ }
74
+ ```
75
+
76
+ ## CLI Commands
77
+
78
+ ### Dev Server Commands
79
+ - `buddy dev` -- Start ALL dev servers in parallel (frontend, API, docs, dashboard + reverse proxy if custom domain)
80
+ - `buddy dev [server]` -- Start a specific server: `frontend`, `api`, `components`, `dashboard`, `desktop`, `system-tray`, `docs`
81
+ - `buddy dev -i` / `--interactive` -- Interactive prompt to choose which server to start
82
+ - `buddy dev --verbose` -- Show detailed output including proxy info and dependency logs
83
+ - `buddy dev:frontend` (aliases: `dev:pages`, `dev:views`) -- Frontend only
84
+ - `buddy dev:api` -- API server only
85
+ - `buddy dev:dashboard` (alias: `dev:admin`) -- Dashboard with native Craft window
86
+ - `buddy dev:docs` -- Documentation server only
87
+ - `buddy dev:components` -- Vue component library dev server
88
+ - `buddy dev:desktop` -- Desktop app dev server
89
+ - `buddy dev:system-tray` (alias: `dev:tray`) -- System tray dev server
90
+
91
+ ### Build Commands
92
+ - `buddy build` -- Build stacks framework (default when no option specified)
93
+ - `buddy build components` -- Build component libraries
94
+ - `buddy build docs` -- Build documentation site
95
+ - `buddy build server` (alias: `build:docker`) -- Build Docker server image
96
+ - `buddy build:core` -- Build Stacks core packages
97
+ - `buddy build:stacks` -- Build the full Stacks framework
98
+ - `buddy build:cli` -- Build Buddy CLI binary
99
+
100
+ ### Setup & Maintenance
101
+ - `buddy setup` (alias: `ensure`) -- Full project setup (pantry, deps, config)
102
+ - `buddy setup:ssl` (alias: `ssl:setup`) -- Generate and trust SSL certs for custom domain
103
+ - `buddy doctor` -- Health checks (Bun version, Node.js, package.json, .env, APP_KEY)
104
+ - `buddy fresh` -- Clean project + reinstall dependencies
105
+ - `buddy clean` -- Remove build artifacts via `cleanProject()`
106
+ - `buddy down` -- Maintenance mode (supports `--message`, `--secret`, `--retry`, `--allow`)
107
+ - `buddy up` -- Exit maintenance mode
108
+ - `buddy status` -- Check maintenance mode status
109
+
110
+ ## Dev Server Architecture
111
+
112
+ ### Unified Dev Server (`buddy dev` with no arguments)
113
+ When `buddy dev` runs without a specific server flag, `startDevelopmentServer()` in `dev.ts`:
114
+ 1. Reads port configuration from env vars (`PORT`, `PORT_API`, `PORT_DOCS`, `PORT_ADMIN`)
115
+ 2. Detects custom domain from `APP_URL` (e.g., `stacks.localhost`)
116
+ 3. Prints Vite-style banner with URLs for Frontend, API, Docs, Dashboard
117
+ 4. Sets `STACKS_PROXY_MANAGED=1` to prevent subprocesses from starting their own proxies
118
+ 5. Starts all servers in parallel via `Promise.all()`:
119
+ - `runFrontendDevServer()` -- STX template server on port 3000
120
+ - `runApiDevServer()` -- bun-router API on port 3008
121
+ - `runDocsDevServer()` -- bunpress docs on port 3006
122
+ - `runDashboardDevServer()` -- STX + Craft native window on port 3002
123
+ - `startReverseProxy()` -- rpx HTTPS proxy on port 443 (only if custom domain set)
124
+ 6. Registers SIGINT/SIGTERM handlers that `SIGKILL` the entire process group
125
+
126
+ ### Action Execution (`runAction` in helpers/utils.ts)
127
+ - Dev actions (paths starting with `dev/`) automatically get `--watch` flag via `bun --watch`
128
+ - The `dev/views` action is special-cased for maximum performance: imports `bun-plugin-stx/serve` directly instead of spawning a subprocess
129
+ - `NODE_PATH` is set to include `pantry/` so compiled pantry packages can resolve `@stacksjs/*` at runtime
130
+ - Dev action subprocess output is suppressed by default (quiet mode), visible with `--verbose`
131
+
132
+ ### Frontend Dev Server (views.ts)
133
+ Uses `bun-plugin-stx` serve function with pattern-based view resolution:
134
+ - User views: `resources/views` (checked first)
135
+ - Default views: `storage/framework/defaults/resources/views` (fallback)
136
+ - User layouts: `resources/layouts`
137
+ - Default layouts: `storage/framework/defaults/resources/layouts`
138
+ - Components: `storage/framework/defaults/resources/components/Dashboard`
139
+
140
+ ### API Dev Server (api.ts)
141
+ - Uses `@stacksjs/router` with CORS middleware
142
+ - Calls `route.importRoutes()` to load route definitions
143
+ - Serves on `127.0.0.1` at `config.ports.api` (default 3008)
144
+
145
+ ### Dashboard Dev Server (dashboard.ts)
146
+ - Starts STX server + config API + native Craft window in parallel
147
+ - Config API runs on `dashboardPort + 1` (default 3003), handles `POST /api/config/update`
148
+ - Config API allows live editing of `config/*.ts` files via regex-based key replacement
149
+ - Discovers ORM models from `app/Models/` and `storage/framework/defaults/app/Models/`
150
+ - Writes `.discovered-models.json` manifest for sidebar population
151
+ - Opens `@craft-native/ts` native window (1400x900, titlebar hidden, native sidebar)
152
+ - Sidebar has 10 sections: Home, Library, Content, App, Data, Commerce, Marketing, Analytics, Management, Utilities
153
+
154
+ ### Docs Dev Server (docs.ts)
155
+ - Uses `@stacksjs/bunpress` with `{ watch: true, quiet: true }`
156
+ - Serves from `docs/` directory on port 3006
157
+
158
+ ## Reverse Proxy & HTTPS
159
+
160
+ When `APP_URL` is set to a custom domain (not `localhost`):
161
+ - `startReverseProxy()` uses `@stacksjs/rpx` to proxy all subdomains through HTTPS on port 443
162
+ - Proxy mapping: `localhost:3000 -> domain`, `localhost:3008 -> api.domain`, `localhost:3006 -> docs.domain`, `localhost:3002 -> dashboard.domain`
163
+ - SSL certs stored in `~/.stacks/ssl/` with 825-day validity
164
+ - Individual dev servers check `STACKS_PROXY_MANAGED` to avoid starting duplicate proxies
165
+
166
+ ### SSL Setup (`setup/ssl.ts`)
167
+ - `setupSSL(options)` -- Complete SSL setup: hosts file + cert generation + trust
168
+ - `generateCertificates(domain)` -- Uses `@stacksjs/tlsx` to create Root CA + host cert
169
+ - `addDomainToHosts(domain)` -- Adds `127.0.0.1 <domain>` to `/etc/hosts` (requires sudo)
170
+ - `trustCertificate(domain)` -- Adds cert to macOS Keychain or Linux ca-certificates
171
+ - Supports non-interactive mode via `SUDO_PASSWORD` env var
172
+ - Cert files: `~/.stacks/ssl/<domain>.crt`, `<domain>.key`, `<domain>.ca.crt`
173
+
174
+ ## Hot Reload / Watch Mode
175
+
176
+ - **Dev actions use `bun --watch`**: All actions with paths starting with `dev/` are automatically run with Bun's `--watch` flag, which restarts the process on file changes
177
+ - **Frontend (STX)**: `bun-plugin-stx/serve` has its own built-in watch/HMR for `.stx` templates
178
+ - **API server**: Runs via `bun --watch`, restarts on route or handler changes
179
+ - **Docs**: `@stacksjs/bunpress` runs with `watch: true` for live documentation updates
180
+ - **Components**: Delegates to the component library's own `bun run dev` (typically Vite-based HMR)
181
+
182
+ ## Preloader (preloader.ts)
183
+
184
+ Configured in `bunfig.toml` as `preload = ["./storage/framework/defaults/resources/plugins/preloader.ts"]`.
185
+
186
+ ### Execution Phases
187
+ 1. **Fast command skip**: Commands like `dev`, `build`, `test`, `lint`, `--version`, `--help` skip the preloader entirely for maximum startup speed
188
+ 2. **Environment detection**: Deploy/production commands (`deploy`, `cloud:remove`, etc.) set `APP_ENV` and `NODE_ENV` before loading env files
189
+ 3. **Env loading**: Calls `autoLoadEnv({ quiet: true })` from `@stacksjs/env` for encrypted `.env` file support
190
+ 4. **Auto-imports** (non-fast commands only):
191
+ - Loads 21 `@stacksjs/*` packages into `globalThis` (actions, router, orm, validation, etc.)
192
+ - Loads all functions from `resources/functions/**/*.ts`
193
+ - Loads all ORM model instances into `globalThis` (priority: user > framework > defaults)
194
+ - Loads all Job instances from `app/Jobs/` into `globalThis`
195
+ - Loads all Controller classes into `globalThis`
196
+ - Runs `discoverPackages()` for package auto-discovery
197
+ 5. **Protected globals**: 80+ built-in names (process, console, Buffer, fetch, Bun, etc.) are never overwritten
198
+
199
+ ### bunfig.toml Configuration
200
+ ```toml
201
+ preload = ["./storage/framework/defaults/resources/plugins/preloader.ts"]
202
+
203
+ [test]
204
+ preload = ["./tests/setup.ts"]
205
+ coverage = true
206
+
207
+ [run]
208
+ bun = true # equivalent to `bun --bun` for all `bun run` commands
209
+
210
+ [serve.static]
211
+ plugins = ["bun-plugin-stx"] # STX template engine plugin for Bun.serve
212
+
213
+ [install]
214
+ registry = { url = "https://registry.npmjs.org/", token = "$BUN_AUTH_TOKEN" }
215
+ linker = "hoisted"
216
+ ```
217
+
218
+ ## Production Server (server/src/index.ts)
219
+
220
+ - **Queue worker mode**: When `QUEUE_WORKER` env var is set, imports and runs the job from `app/Jobs/<JOB>.ts` with retry support (configurable via `JOB_RETRIES`, `JOB_BACKOFF_FACTOR`, `JOB_INITIAL_DELAY`, `JOB_JITTER`)
221
+ - **HTTP server**: `Bun.serve()` on `PORT` (default 3000), delegates to `serverResponse()` from `@stacksjs/router`
222
+ - **WebSocket**: Built-in WebSocket upgrade support (open/message/close handlers as stubs)
223
+ - **Development mode**: Auto-enabled when `APP_ENV` is not `production` or `prod`
224
+ - **Docker**: Multi-stage build with `oven/bun:1.3.10`, runs as non-root `bun` user, exposes port 3000, includes curl for healthchecks
225
+
226
+ ## Server Build Process (server/build.ts)
227
+
228
+ 1. Stops any running `stacks-server` Docker container
229
+ 2. Cleans previous build artifacts (app/, config/, dist/, docs/, storage/)
230
+ 3. Builds server entry (`src/index.ts`) to `dist/` using `Bun.build` (ESM, target: bun)
231
+ 4. Builds all `app/**/*.{ts,js}` files to `server/app/` (ESM, no splitting, external: `@swc/wasm`)
232
+ 5. Post-processes built files: rewrites `storage/framework/server` imports to `dist/`
233
+ 6. Strips `export { ENV_KEY, ENV_SECRET, fromEnv }` from dist (bundler workaround)
234
+ 7. Copies custom server config if present (`server/` dir at project root)
235
+ 8. Optionally builds Docker image if `cloud.api.deploy` is enabled
236
+
237
+ ## IDE Support
238
+
239
+ Default configurations provided at `storage/framework/defaults/ide/`:
240
+
241
+ ### Cursor
242
+ - `cursor/rules/`: 11 rule files (auto-imports, code-style, documentation, error-handling, key-conventions, project-structure, syntax-formatting, testing, typescript, ui-styling, readme)
243
+
244
+ ### VS Code
245
+ - `vscode/.vscode/extensions.json` -- Recommended extensions
246
+ - `vscode/.vscode/settings.json` -- Editor settings
247
+ - `vscode/.vscode/stacks.code-snippets` -- Code snippets
248
+ - `vscode/package.json` -- VS Code extension manifest
249
+
250
+ ### JetBrains
251
+ - `.idea/` config (ESLint, modules, VCS, web resources)
252
+ - `.fleet/settings.json` -- Fleet IDE settings
253
+ - `options/` (GitHub Copilot, Node.js config)
254
+ - `templates/` (JavaScript and Stacks live templates)
255
+
256
+ ### Zed
257
+ - `zed/.zed/settings.json` -- Zed editor settings
258
+
259
+ ### Dictionary
260
+ - `dictionary.txt` -- Custom spell-check dictionary
261
+
262
+ ## Doctor Health Checks
263
+
264
+ `buddy doctor` verifies:
265
+ - Bun runtime version (pass if v1.0+, warn otherwise, fail if missing)
266
+ - Node.js version (pass if v18+, warn otherwise)
267
+ - package.json existence and project name
268
+ - `.env` file presence (warn if missing, not a failure)
269
+ - `APP_KEY` is set (warn if not, suggests `buddy key:generate`)
270
+
271
+ ## STX Configuration (config/ui.ts)
272
+
273
+ ```typescript
274
+ {
275
+ componentsDir: 'resources/components',
276
+ layoutsDir: 'resources/layouts',
277
+ partialsDir: 'resources/partials',
278
+ }
279
+ ```
280
+
281
+ Note: Dashboard mode overrides these settings via its own `serve()` options.
282
+
283
+ ## Gotchas
284
+ - The `@stacksjs/development` package is currently a stub (`export {}`) -- all actual dev tooling lives in the actions and server packages
285
+ - The preloader skips entirely for `dev`, `build`, `test`, `lint`, and version/help commands -- auto-imports are NOT available in those contexts
286
+ - `buddy dev` (no arguments) starts ALL servers simultaneously -- use `buddy dev api` or `buddy dev frontend` to start only one
287
+ - The `STACKS_PROXY_MANAGED=1` env var prevents individual dev servers from starting their own reverse proxy -- only the unified `buddy dev` command manages the proxy
288
+ - Dev actions are executed with `bun --watch` automatically -- do NOT add `--watch` manually or you get double-restart behavior
289
+ - The `dev/views` action is special-cased in `runAction()` to run in-process (no subprocess) for performance -- other dev actions spawn subprocesses
290
+ - `NODE_PATH` is injected to include `pantry/` directory so compiled pantry packages can resolve `@stacksjs/*` dependencies at runtime
291
+ - The dashboard config API (port 3003) modifies `config/*.ts` files via regex replacement -- it only handles simple key-value patterns, not nested objects or arrays
292
+ - SSL certificates are stored in `~/.stacks/ssl/`, NOT in the project directory -- they persist across projects using the same domain
293
+ - Custom server configuration in `server/` at the project root overrides the default server config via file copy (checked by `useCustomOrDefaultServerConfig()`)
294
+ - The production server doubles as a queue worker when `QUEUE_WORKER` env var is set -- it imports the job by name from `app/Jobs/` and exits after completion
295
+ - Docker build strips `src/` directories, test files, sourcemaps, and `node_modules` from the image to minimize size
296
+ - The `bun-plugin-stx` serve plugin is resolved with a fallback: first tries normal `import('bun-plugin-stx/serve')`, then falls back to `pantry/bun-plugin-stx/dist/serve.js`
297
+ - `buddy fresh` is NOT the same as `buddy clean` -- `fresh` cleans AND reinstalls dependencies, while `clean` only removes artifacts
298
+ - The Craft native window for the dashboard uses `http://localhost:<port>` directly (not HTTPS) even when a custom domain proxy is running
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: stacks-dns
3
+ description: Use when managing DNS in a Stacks application — Route53 hosted zones, domain records, nameserver management, or DNS configuration. Covers @stacksjs/dns (AWS Route53 driver), @stacksjs/dnsx, and config/dns.ts.
4
+ license: MIT
5
+ compatibility: Bun >= 1.3.0, TypeScript
6
+ allowed-tools: Read Edit Write Bash Grep Glob
7
+ ---
8
+
9
+ # Stacks DNS
10
+
11
+ ## Key Paths
12
+ - Core package: `storage/framework/core/dns/src/`
13
+ - AWS driver: `storage/framework/core/dns/src/drivers/aws.ts`
14
+ - Config: `config/dns.ts`
15
+ - Package: `@stacksjs/dns`
16
+
17
+ ## Source Files
18
+ ```
19
+ dns/src/
20
+ ├── index.ts # Re-exports from drivers and @stacksjs/dnsx
21
+ └── drivers/
22
+ └── aws.ts # AWS Route53 DNS management
23
+ ```
24
+
25
+ ## AWS Route53 API
26
+
27
+ ```typescript
28
+ import {
29
+ createHostedZone,
30
+ deleteHostedZone,
31
+ deleteHostedZoneRecords,
32
+ getNameservers,
33
+ getHostedZoneNameservers,
34
+ updateNameservers,
35
+ findHostedZone,
36
+ hasUserDomainBeenAddedToCloud,
37
+ writeNameserversToConfig,
38
+ addDomain,
39
+ } from '@stacksjs/dns'
40
+ ```
41
+
42
+ ### Hosted Zone Management
43
+
44
+ ```typescript
45
+ // Create or retrieve a hosted zone
46
+ createHostedZone(domainName: string): Promise<Result<HostedZone | CreateHostedZoneResult | string | null, Error>>
47
+
48
+ // Delete a zone and all its records
49
+ deleteHostedZone(domainName: string): Promise<Result<string, Error>>
50
+
51
+ // Delete records only, keep zone
52
+ deleteHostedZoneRecords(domainName: string): Promise<Result<string, Error>>
53
+
54
+ // Find a zone by domain name
55
+ findHostedZone(domain: string): Promise<Result<string | null | undefined, Error>>
56
+
57
+ // Check if domain is in cloud
58
+ hasUserDomainBeenAddedToCloud(domainName?: string): Promise<boolean>
59
+ ```
60
+
61
+ ### Nameserver Management
62
+
63
+ ```typescript
64
+ // Get nameservers from Route53 Domains
65
+ getNameservers(domainName?: string): Promise<string[] | undefined>
66
+
67
+ // Get nameservers from hosted zone delegation set
68
+ getHostedZoneNameservers(domainName: string): Promise<string[]>
69
+
70
+ // Update domain nameservers in Route53
71
+ updateNameservers(hostedZoneNameservers: string[], domainName?: string): Promise<boolean | undefined>
72
+
73
+ // Persist nameservers to config/dns.ts
74
+ writeNameserversToConfig(nameservers: string[]): void
75
+ ```
76
+
77
+ ### Domain Actions
78
+
79
+ ```typescript
80
+ // Run domain add action (delegates to CLI action)
81
+ addDomain(options: DeployOptions): Promise<Result<Subprocess, CommandError>>
82
+ ```
83
+
84
+ ### Helpers
85
+
86
+ ```typescript
87
+ // Internal helpers
88
+ deleteRecordsForZone(zoneId: string): Promise<void>
89
+ normalizeDomain(domain: string): string
90
+ sanitizeNameserver(ns: string): string
91
+ ```
92
+
93
+ ## Configuration (config/dns.ts)
94
+
95
+ ```typescript
96
+ import { defineDns } from '@stacksjs/config'
97
+
98
+ export default defineDns({
99
+ a: [{ name: 'example.com', value: '1.2.3.4', ttl: 300 }],
100
+ aaaa: [],
101
+ cname: [],
102
+ mx: [],
103
+ txt: [],
104
+ nameservers: [
105
+ 'ns-1731.awsdns-24.co.uk',
106
+ 'ns-355.awsdns-44.com',
107
+ 'ns-536.awsdns-03.net',
108
+ 'ns-1395.awsdns-46.org',
109
+ ],
110
+ redirects: [],
111
+ })
112
+ ```
113
+
114
+ ### DnsConfig Interface
115
+
116
+ ```typescript
117
+ interface DnsConfig {
118
+ a: Array<{ name: string, value: string, ttl?: number }>
119
+ aaaa: Array<{ name: string, value: string, ttl?: number }>
120
+ cname: Array<{ name: string, value: string, ttl?: number }>
121
+ mx: Array<{ name: string, value: string, ttl?: number, priority?: number }>
122
+ txt: Array<{ name: string, value: string, ttl?: number }>
123
+ nameservers: string[]
124
+ redirects?: Array<{ from: string, to: string }>
125
+ }
126
+ ```
127
+
128
+ ## CLI Commands
129
+
130
+ ```bash
131
+ buddy dns # DNS management
132
+ buddy domains # Domain management
133
+ buddy domains:add # Add a domain to cloud
134
+ buddy domains:remove # Remove a domain
135
+ buddy domains:purchase # Purchase a domain
136
+ ```
137
+
138
+ ## Re-exports from @stacksjs/dnsx
139
+
140
+ Additional DNS utilities (lookups, resolution) are re-exported from the `@stacksjs/dnsx` package.
141
+
142
+ ## Gotchas
143
+ - **AWS-only** — currently only supports AWS Route53 as the DNS provider
144
+ - **Uses ts-cloud SDK** — Route53 API calls go through the ts-cloud abstraction
145
+ - **Result type** — most functions return `Result<T, Error>` from `ts-error-handling`, not plain values
146
+ - **`writeNameserversToConfig` mutates config/dns.ts** — directly writes to the config file
147
+ - **Domain name normalization** — trailing dots and www prefixes are handled automatically
148
+ - **`createHostedZone` is idempotent** — returns existing zone if it already exists
149
+ - **Nameservers must be synced** — hosted zone nameservers must match domain registrar nameservers for DNS to work
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: stacks-docs
3
+ description: Use when building or configuring documentation for a Stacks project — BunPress setup, doc generation, navigation, sidebar structure, or documentation meta/SEO. Covers @stacksjs/docs and config/docs.ts.
4
+ license: MIT
5
+ compatibility: Bun >= 1.3.0, TypeScript
6
+ allowed-tools: Read Edit Write Bash Grep Glob
7
+ ---
8
+
9
+ # Stacks Documentation
10
+
11
+ ## Key Paths
12
+ - Core package: `storage/framework/core/docs/src/`
13
+ - Doc content: `docs/`
14
+ - Config: `config/docs.ts`
15
+ - Output: `storage/framework/docs/dist/`
16
+ - Package: `@stacksjs/docs`
17
+
18
+ ## Source Files
19
+ ```
20
+ docs/src/
21
+ ├── index.ts # frameworkDefaults + merged docsConfig
22
+ └── meta.ts # CDN URLs, social links, PWA patterns
23
+ ```
24
+
25
+ ## API
26
+
27
+ ```typescript
28
+ import { frameworkDefaults, docsConfig } from '@stacksjs/docs'
29
+
30
+ // Framework defaults
31
+ const frameworkDefaults: BunPressOptions = {
32
+ docsDir: path.projectPath('docs'),
33
+ outDir: path.frameworkPath('docs/dist'),
34
+ }
35
+
36
+ // Merged config (framework defaults + user config from config/docs.ts)
37
+ const docsConfig: BunPressOptions = { ...frameworkDefaults, ...userConfig }
38
+ ```
39
+
40
+ ## Meta Exports
41
+
42
+ ```typescript
43
+ import { googleapis, gstatic, font, ogUrl, ogImage, github, releases, contributing, discord, twitter, pwaFontsRegex, pwaFontStylesRegex } from '@stacksjs/docs'
44
+ ```
45
+
46
+ Social and CDN constants used in documentation templates and PWA configuration.
47
+
48
+ ## Configuration (config/docs.ts)
49
+
50
+ ```typescript
51
+ import type { BunPressOptions } from '@stacksjs/docs'
52
+
53
+ export default {
54
+ // Navigation
55
+ nav: [
56
+ { text: 'Changelog', link: 'https://github.com/stacksjs/stacks/blob/main/CHANGELOG.md' },
57
+ { text: 'Blog', link: 'https://updates.stacksjs.org' },
58
+ ],
59
+
60
+ // Markdown settings
61
+ markdown: {
62
+ title: 'Stacks.js',
63
+ syntaxHighlighting: { theme: 'material-theme-palenight' },
64
+ toc: { depth: 2 },
65
+ },
66
+
67
+ // Sidebar structure
68
+ sidebar: {
69
+ '/prologue/': [/* ... */],
70
+ '/get-started/': [/* ... */],
71
+ '/basics/': [/* ... */],
72
+ '/digging-deeper/': [/* ... */],
73
+ '/cloud/': [/* ... */],
74
+ '/cli/': [/* ... */],
75
+ '/packages/': [/* ... */],
76
+ '/testing/': [/* ... */],
77
+ '/project/': [/* ... */],
78
+ },
79
+
80
+ // Theme
81
+ theme: {
82
+ logo: '/images/logos/logo-transparent.svg',
83
+ footer: { message: 'Released under the MIT License.', copyright: 'Copyright © 2025' },
84
+ socialLinks: [
85
+ { icon: 'twitter', link: 'https://twitter.com/stacksjs' },
86
+ { icon: 'github', link: 'https://github.com/stacksjs/stacks' },
87
+ { icon: 'discord', link: 'https://stacksjs.com/discord' },
88
+ ],
89
+ },
90
+
91
+ // SEO
92
+ sitemap: { hostname: 'https://stacksjs.com/docs' },
93
+ robotsTxt: { enabled: true },
94
+ } satisfies BunPressOptions
95
+ ```
96
+
97
+ ## CLI Commands
98
+
99
+ ```bash
100
+ buddy dev:docs # Start docs dev server
101
+ buddy build:docs # Build documentation site
102
+ ```
103
+
104
+ ## Gotchas
105
+ - **BunPress, not VitePress** — the docs engine is BunPress (Stacks' own documentation tool)
106
+ - **Config merging** — `docsConfig` merges framework defaults with user config from `config/docs.ts`
107
+ - **Sidebar is section-based** — organized by URL prefix (prologue, get-started, basics, etc.)
108
+ - **SEO built-in** — sitemap and robots.txt generation enabled by default
109
+ - **Output goes to `storage/framework/docs/dist/`** — not the `docs/` source directory