@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,269 @@
1
+ ---
2
+ name: stacks-datetime
3
+ description: Use when working with dates and times in Stacks — the DateTime class with Carbon-like API (add/sub, comparison, formatting, start/end of day/month/year), date parsing, format tokens, or timezone handling. Covers @stacksjs/datetime.
4
+ license: MIT
5
+ compatibility: Bun >= 1.3.0, TypeScript
6
+ allowed-tools: Read Edit Write Bash Grep Glob
7
+ ---
8
+
9
+ # Stacks DateTime
10
+
11
+ Carbon-inspired DateTime class with immutable operations and zero external dependencies.
12
+
13
+ ## Key Paths
14
+ - Core package: `storage/framework/core/datetime/src/`
15
+ - Package: `@stacksjs/datetime`
16
+
17
+ ## Architecture
18
+
19
+ The `index.ts` exports:
20
+ ```typescript
21
+ export { DateTime, now } from './now'
22
+ export { format } from './format'
23
+ export { parse } from './parse'
24
+ export { format as dateFormat } from './format' // convenience alias
25
+ ```
26
+
27
+ Three source files:
28
+ - `now.ts` — `DateTime` class and `now()` helper
29
+ - `format.ts` — standalone `format()` function with token-based formatting and timezone support
30
+ - `parse.ts` — standalone `parse()` function with token-based parsing
31
+
32
+ ## DateTime Class (`now.ts`)
33
+
34
+ ### Construction
35
+ ```typescript
36
+ import { DateTime, now } from '@stacksjs/datetime'
37
+
38
+ const dt = new DateTime() // current time
39
+ const dt = new DateTime(new Date()) // from native Date (cloned)
40
+ const dt = new DateTime('2024-06-15') // from date string
41
+ const dt = new DateTime('15/06/2024', 'DD/MM/YYYY') // from string with format
42
+
43
+ // Static factory methods
44
+ const dt = DateTime.now() // current time
45
+ const dt = DateTime.create(2024, 6, 15, 10, 30, 0) // year, month (1-12), day, hour, min, sec
46
+ const dt = DateTime.fromDate(new Date()) // from native Date
47
+ const dt = DateTime.parse('2024-06-15') // from string
48
+ const dt = DateTime.parse('15/06/2024', 'DD/MM/YYYY') // from string with format
49
+ ```
50
+
51
+ Note: `DateTime.create()` uses 1-based months (1=January), converting internally with `month - 1`.
52
+
53
+ ### Getters (read-only properties)
54
+ ```typescript
55
+ dt.year // number -- full year (e.g. 2024)
56
+ dt.month // number -- 1-12 (1-based, NOT zero-based like native Date)
57
+ dt.day // number -- day of month (1-31)
58
+ dt.hour // number -- 0-23
59
+ dt.minute // number -- 0-59
60
+ dt.second // number -- 0-59
61
+ dt.dayOfWeek // number -- 0 (Sunday) through 6 (Saturday)
62
+ dt.timestamp // number -- milliseconds since Unix epoch
63
+ ```
64
+
65
+ ### Formatting
66
+ ```typescript
67
+ dt.format('YYYY-MM-DD HH:mm:ss') // '2024-06-15 10:30:00'
68
+ dt.format('MMMM D, YYYY', 'en') // 'June 15, 2024'
69
+ dt.format('HH:mm', { locale: 'de', tz: 'Europe/Berlin' })
70
+
71
+ dt.toDateString() // 'YYYY-MM-DD' format
72
+ dt.toTimeString() // 'HH:mm:ss' format
73
+ dt.toDateTimeString() // 'YYYY-MM-DD HH:mm:ss' format
74
+ dt.toISOString() // ISO 8601 (native Date.toISOString)
75
+ dt.toString() // same as toDateTimeString()
76
+ dt.toJSON() // same as toISOString()
77
+ ```
78
+
79
+ ### Format Tokens
80
+
81
+ Used by both `DateTime.format()` and the standalone `format()` function:
82
+
83
+ | Token | Output | Description |
84
+ |-------|--------|-------------|
85
+ | YYYY | 2024 | 4-digit year |
86
+ | YY | 24 | 2-digit year |
87
+ | MMMM | January | Full month name (via Intl.DateTimeFormat) |
88
+ | MMM | Jan | Short month name (via Intl.DateTimeFormat) |
89
+ | MM | 01 | 2-digit month (01-12) |
90
+ | M | 1 | Month (1-12) |
91
+ | DD | 01 | 2-digit day (01-31) |
92
+ | D | 1 | Day (1-31) |
93
+ | dddd | Wednesday | Full weekday name (via Intl.DateTimeFormat) |
94
+ | ddd | Wed | Short weekday name (via Intl.DateTimeFormat) |
95
+ | d | W | Narrow weekday (via Intl.DateTimeFormat) |
96
+ | HH | 00 | 24-hour padded (00-23) |
97
+ | H | 0 | 24-hour (0-23) |
98
+ | hh | 12 | 12-hour padded (01-12) |
99
+ | h | 12 | 12-hour (1-12) |
100
+ | mm | 05 | Minutes padded (00-59) |
101
+ | m | 5 | Minutes (0-59) |
102
+ | ss | 09 | Seconds padded (00-59) |
103
+ | s | 9 | Seconds (0-59) |
104
+ | A | AM/PM | Uppercase AM/PM |
105
+ | a | am/pm | Lowercase am/pm |
106
+ | Z | +0530 | Timezone offset (no colon, e.g. +0800, -0500) |
107
+
108
+ Tokens are matched longest-first to avoid partial matching.
109
+
110
+ ### Arithmetic (all return NEW DateTime instances -- immutable)
111
+ ```typescript
112
+ dt.addSeconds(30) dt.subSeconds(30)
113
+ dt.addMinutes(15) dt.subMinutes(15)
114
+ dt.addHours(2) dt.subHours(2)
115
+ dt.addDays(7) dt.subDays(7)
116
+ dt.addWeeks(1) dt.subWeeks(1) // delegates to addDays(n * 7)
117
+ dt.addMonths(3) dt.subMonths(3)
118
+ dt.addYears(1) dt.subYears(1)
119
+ ```
120
+
121
+ Implementation details:
122
+ - `addSeconds/Minutes/Hours` use millisecond arithmetic on timestamp
123
+ - `addDays` uses `Date.setDate()` (handles month boundaries correctly)
124
+ - `addMonths` uses `Date.setMonth()` (handles year boundaries)
125
+ - `addYears` uses `Date.setFullYear()`
126
+ - All `sub*` methods delegate to `add*(-n)`
127
+
128
+ ### Period Boundaries (return NEW DateTime instances)
129
+ ```typescript
130
+ dt.startOfDay() // sets time to 00:00:00.000
131
+ dt.endOfDay() // sets time to 23:59:59.999
132
+
133
+ dt.startOfMonth() // sets to 1st of month, 00:00:00.000
134
+ dt.endOfMonth() // sets to last day of month, 23:59:59.999
135
+ // uses new Date(year, month + 1, 0) trick for last day
136
+
137
+ dt.startOfYear() // January 1, 00:00:00.000
138
+ dt.endOfYear() // December 31, 23:59:59.999
139
+ ```
140
+
141
+ ### Setters (return NEW DateTime instances)
142
+ ```typescript
143
+ dt.setYear(2025) // new DateTime with year changed
144
+ dt.setMonth(6) // 1-based month (internally does month - 1)
145
+ dt.setDay(15) // uses Date.setDate()
146
+ dt.setHour(10)
147
+ dt.setMinute(30)
148
+ dt.setSecond(0)
149
+ ```
150
+
151
+ ### Comparison
152
+ ```typescript
153
+ dt.isBefore(other) // true if this < other (millisecond comparison)
154
+ dt.isAfter(other) // true if this > other
155
+ dt.isSame(other) // true if exact same millisecond
156
+ dt.isSameDay(other) // true if same year, month, day (ignores time)
157
+ dt.isBetween(start, end) // true if this > start AND this < end (exclusive)
158
+ dt.isPast() // true if before Date.now()
159
+ dt.isFuture() // true if after Date.now()
160
+ dt.isToday() // true if same day as today (uses isSameDay)
161
+ dt.isLeapYear() // true if year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0)
162
+ ```
163
+
164
+ All comparison methods accept `DateTime | Date` as the `other` parameter.
165
+
166
+ ### Difference
167
+ ```typescript
168
+ dt.diffInSeconds(other) // number -- Math.floor((this - other) / 1000)
169
+ dt.diffInMinutes(other) // number -- Math.floor(diffInSeconds / 60)
170
+ dt.diffInHours(other) // number -- Math.floor(diffInSeconds / 3600)
171
+ dt.diffInDays(other) // number -- Math.floor(diffInSeconds / 86400)
172
+ ```
173
+
174
+ Returns signed values: positive if `this` is after `other`, negative if before.
175
+
176
+ ### Conversion
177
+ ```typescript
178
+ dt.toNativeDate() // new Date (cloned)
179
+ dt.valueOf() // number (milliseconds since epoch)
180
+ dt.toJSON() // ISO string (for JSON serialization)
181
+ ```
182
+
183
+ ## Standalone `format()` Function (`format.ts`)
184
+
185
+ ```typescript
186
+ import { format } from '@stacksjs/datetime'
187
+
188
+ format(new Date(), 'YYYY-MM-DD') // '2024-06-15'
189
+ format('2024-06-15', 'MMMM D, YYYY') // 'June 15, 2024'
190
+ format(new Date(), 'dddd, MMMM D, YYYY h:mm A') // 'Saturday, June 15, 2024 10:30 AM'
191
+
192
+ // With locale
193
+ format(new Date(), 'dddd, MMMM D', 'de') // 'Samstag, Juni 15'
194
+
195
+ // With timezone
196
+ format(new Date(), 'YYYY-MM-DD HH:mm Z', { tz: 'America/New_York' })
197
+ format(new Date(), 'HH:mm', { locale: 'en', tz: 'Asia/Tokyo' })
198
+ ```
199
+
200
+ Signature: `format(inputDate: Date | string, formatStr?: string, localeOrOptions?: string | { locale?: string, tz?: string })`
201
+
202
+ Default format string: `'YYYY-MM-DD'`
203
+ Default locale: `'en'`
204
+
205
+ ### Timezone Support
206
+ When a `tz` option is provided, the function uses `Intl.DateTimeFormat` with `timeZone` to extract date parts in the target timezone. The timezone offset (`Z` token) is computed by comparing UTC wall-clock time to the timezone's wall-clock time.
207
+
208
+ Without `tz`, uses local time via native Date getters (faster path, no Intl overhead for numeric parts). Named parts (month names, weekday names) always use Intl for locale support.
209
+
210
+ ## Standalone `parse()` Function (`parse.ts`)
211
+
212
+ ```typescript
213
+ import { parse } from '@stacksjs/datetime'
214
+
215
+ // Without format string -- native Date parsing with fix
216
+ parse('2024-06-15') // Date -- treated as LOCAL time (not UTC)
217
+ parse('2024-06-15T10:30:00Z') // Date -- ISO string, native parsing
218
+
219
+ // With format string -- token-based extraction
220
+ parse('15/06/2024', 'DD/MM/YYYY') // Date
221
+ parse('June 15, 2024', 'MMMM DD, YYYY') // Date
222
+ parse('2024-06-15 10:30:00', 'YYYY-MM-DD HH:mm:ss') // Date
223
+ parse('03:30 PM', 'hh:mm A') // Date with AM/PM handling
224
+ parse('2024-06-15 10:30 +0530', 'YYYY-MM-DD HH:mm Z') // Date with timezone offset
225
+ ```
226
+
227
+ ### Parse Behavior
228
+
229
+ **Without format string**:
230
+ - Date-only ISO strings (YYYY-MM-DD) are parsed as LOCAL time, not UTC -- this is a deliberate fix for the native Date behavior where `new Date('2024-06-15')` treats it as UTC causing day shifts
231
+ - All other strings use native `new Date()` parsing
232
+ - Throws on invalid dates
233
+
234
+ **With format string**:
235
+ - Builds a regex from the format tokens and extracts named groups
236
+ - Supports tokens: YYYY, YY, MMMM, MMM, MM, M, DD, D, HH, H, hh, h, mm, m, ss, s, A, a, Z
237
+ - YY: years 70-99 become 1900s, 00-69 become 2000s
238
+ - AM/PM: adjusts hours for 12-hour format (12 AM = 0, 12 PM = 12)
239
+ - Month names: handles full ("January") and short ("Jan") names, case-insensitive
240
+ - Z token: parses +HHMM offset, constructs UTC time and adjusts
241
+ - Throws if the format doesn't match the input string
242
+
243
+ ## `now()` Helper
244
+
245
+ ```typescript
246
+ import { now } from '@stacksjs/datetime'
247
+
248
+ now() // DateTime.now()
249
+ now().toDateString() // '2024-06-15'
250
+ now().format('MMMM D, YYYY') // 'June 15, 2024'
251
+ now().addDays(7).toDateString() // one week from now
252
+ now().startOfMonth().toDateString() // first of current month
253
+ ```
254
+
255
+ ## Gotchas
256
+ - All DateTime arithmetic operations return NEW instances -- the original is never mutated
257
+ - `DateTime.month` returns 1-12 (1-based), NOT 0-11 like native Date
258
+ - `DateTime.create(year, month)` takes 1-based month -- internally converts with `month - 1`
259
+ - `dayOfWeek` returns 0 (Sunday) through 6 (Saturday) -- matches native Date.getDay()
260
+ - `timestamp` returns MILLISECONDS since epoch, not seconds
261
+ - `diffIn*` methods return signed values -- positive when `this` is after `other`
262
+ - `isBetween(start, end)` is EXCLUSIVE on both ends (strictly between)
263
+ - `parse('2024-06-15')` without format is treated as LOCAL time (intentional deviation from spec)
264
+ - The `Z` timezone offset token format is `+HHMM` (no colon) -- e.g. `+0530`, `-0800`
265
+ - `format()` with `tz` option uses `Intl.DateTimeFormat` which requires valid IANA timezone names
266
+ - The `d` token in formatting returns the NARROW weekday (single letter like "W"), not a day number
267
+ - `endOfMonth()` uses the `new Date(year, month + 1, 0)` trick to find the last day
268
+ - Application timezone should be configured in `config/app.ts`
269
+ - Prefer `@stacksjs/datetime` over raw `Date` for framework consistency
@@ -0,0 +1,111 @@
1
+ ---
2
+ name: stacks-dependencies
3
+ description: Use when managing dependencies in a Stacks project — system dependencies via Pantry, Bun workspaces, buddy-bot updates, better-dx tooling, or dependency configuration. Covers config/deps.ts, Pantry, and workspace management.
4
+ license: MIT
5
+ compatibility: Bun >= 1.3.0, TypeScript
6
+ allowed-tools: Read Edit Write Bash Grep Glob
7
+ ---
8
+
9
+ # Stacks Dependencies
10
+
11
+ ## Key Paths
12
+ - Root: `package.json`
13
+ - Deps config: `config/deps.ts`
14
+ - Bun lock: `bun.lock`
15
+ - Bun config: `bunfig.toml`
16
+
17
+ ## Pantry Configuration (config/deps.ts)
18
+
19
+ ```typescript
20
+ import type { PantryConfig } from 'ts-pantry'
21
+
22
+ interface PantryConfig {
23
+ dependencies: Record<string, string> // System-level dependencies
24
+ global: boolean
25
+ services: {
26
+ enabled: boolean
27
+ autoStart: boolean
28
+ database: DatabaseConfig
29
+ postDatabaseSetup: string[]
30
+ frameworks: FrameworkConfig
31
+ }
32
+ preSetup: LifecycleHook
33
+ postSetup: LifecycleHook
34
+ preActivation: LifecycleHook
35
+ postActivation: LifecycleHook
36
+ cache: CacheConfig
37
+ network: NetworkConfig
38
+ security: SecurityConfig
39
+ logging: LoggingConfig
40
+ updates: UpdateConfig
41
+ resources: ResourceConfig
42
+ profiles: ProfileConfig
43
+ verbose: boolean
44
+ installPath: string
45
+ autoInstall: boolean
46
+ installDependencies: boolean
47
+ installBuildDeps: boolean
48
+ }
49
+ ```
50
+
51
+ ### System Dependencies
52
+
53
+ ```typescript
54
+ dependencies: {
55
+ bun: '1.3.0',
56
+ sqlite: '3.47.2',
57
+ redis: '7.0.0',
58
+ // ... other system-level requirements
59
+ }
60
+ ```
61
+
62
+ ## Workspace Dependencies
63
+
64
+ Core packages use `workspace:*` references:
65
+
66
+ ```json
67
+ {
68
+ "@stacksjs/auth": "workspace:*",
69
+ "@stacksjs/database": "workspace:*",
70
+ "@stacksjs/router": "workspace:*"
71
+ }
72
+ ```
73
+
74
+ ## Key Framework Dependencies
75
+
76
+ | Package | Purpose |
77
+ |---------|---------|
78
+ | `better-dx` | Shared dev tooling (provides `typescript`, `pickier`, `bun-plugin-dtsx`) |
79
+ | `bun-query-builder` | Database query building |
80
+ | `@stacksjs/ts-auth` | Authentication library |
81
+ | `@stacksjs/ts-cloud` | Cloud infrastructure (AWS CDK) |
82
+ | `ts-rate-limiter` | Rate limiting |
83
+ | `ts-collect` | Collection utilities |
84
+ | `ts-mocker` | Fake data generation |
85
+ | `ts-slug` | URL slug generation |
86
+
87
+ ## CLI Commands
88
+
89
+ ```bash
90
+ buddy add <package> # Add a dependency
91
+ buddy install # Install dependencies
92
+ buddy outdated # Check for outdated packages
93
+ buddy fresh # Clean + reinstall
94
+ bun run upgrade # Upgrade dependencies
95
+ bun run build:reset # Full reset: rm deps → reinstall → generate → lint → build
96
+ ```
97
+
98
+ ## Dependency Update System
99
+
100
+ - **buddy-bot** handles dependency updates — NOT renovatebot
101
+ - Automated PR creation for dependency updates
102
+ - Configured via `config/buddy-bot.ts`
103
+
104
+ ## Gotchas
105
+ - **buddy-bot, not renovatebot** — Stacks uses its own dependency update bot
106
+ - **better-dx provides peer deps** — do NOT separately install `typescript`, `pickier`, or `bun-plugin-dtsx` if `better-dx` is present
107
+ - **`bunfig.toml` requires `linker = "hoisted"`** when using `better-dx`
108
+ - **Pantry manages system deps** — OS-level dependencies like SQLite, Redis, Bun itself
109
+ - **Workspace references** — all `@stacksjs/*` packages use `workspace:*` in the monorepo
110
+ - **`bun.lock` not `bun.lockb`** — Stacks uses the text-based lockfile format
111
+ - **Build reset is destructive** — `bun run build:reset` removes all deps and reinstalls from scratch
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: stacks-deploy
3
+ description: Use when deploying a Stacks application — the deployment workflow (build → deploy), pre/post deploy hooks, server vs serverless mode selection, first-time deployment setup, deployment troubleshooting, or the buddy deploy command. For cloud infrastructure details (EC2, Lambda, CloudFormation, Route53, IAM), see stacks-cloud.
4
+ license: MIT
5
+ compatibility: Bun >= 1.3.0, TypeScript, AWS
6
+ allowed-tools: Read Edit Write Bash Grep Glob
7
+ ---
8
+
9
+ # Stacks Deployment
10
+
11
+ The deployment workflow for Stacks applications.
12
+
13
+ ## Quick Deploy
14
+
15
+ ```bash
16
+ buddy deploy
17
+ ```
18
+
19
+ ## Deployment Prerequisites
20
+
21
+ 1. **AWS credentials configured**: `buddy configure:aws`
22
+ 2. **APP_KEY generated**: `buddy key:generate` (must be colon-separated format)
23
+ 3. **APP_URL set** in `.env`
24
+ 4. **Team configured** in `config/team.ts`
25
+
26
+ ## Deployment Flow
27
+
28
+ 1. **Validation** — checks APP_KEY format, AWS region, app URL, team config
29
+ 2. **Build** — compiles application for production
30
+ 3. **Infrastructure** — generates CloudFormation template via ts-cloud
31
+ 4. **Deploy** — creates or updates the CloudFormation stack
32
+ - Capabilities: CAPABILITY_IAM, CAPABILITY_NAMED_IAM
33
+ - OnFailure: ROLLBACK
34
+ - Tags: Environment, Project, ManagedBy
35
+
36
+ ## Deploy Hooks (cloud/deploy-script.ts)
37
+
38
+ ```typescript
39
+ export default {
40
+ beforeDeploy({ environment, region }) {
41
+ // Build assets, run tests, send notifications
42
+ console.log(`Deploying to ${environment} in ${region}`)
43
+ },
44
+
45
+ afterDeploy({ environment, region, outputs }) {
46
+ // Cache warming, smoke tests, database seeding
47
+ console.log('Public IP:', outputs.PublicIp)
48
+ console.log('DNS:', outputs.DNS)
49
+ console.log('Endpoint:', outputs.Endpoint)
50
+ }
51
+ }
52
+ ```
53
+
54
+ ## Deployment Modes
55
+
56
+ ### Server Mode (default)
57
+ - EC2 instances with ALB
58
+ - Best for: full-stack apps, WebSocket support, persistent connections
59
+ - Config: `config/cloud.ts` → `mode: 'server'`
60
+
61
+ ### Serverless Mode
62
+ - Lambda + API Gateway + CloudFront
63
+ - Best for: API-only, cost optimization, auto-scaling
64
+ - Config: `config/cloud.ts` → `mode: 'serverless'`
65
+
66
+ ## First Deployment Checklist
67
+
68
+ ```bash
69
+ # 1. Configure AWS
70
+ buddy configure:aws
71
+
72
+ # 2. Generate app key
73
+ buddy key:generate
74
+
75
+ # 3. Set environment variables
76
+ buddy env:set APP_URL https://myapp.com
77
+ buddy env:set APP_ENV production
78
+
79
+ # 4. Review cloud config
80
+ # Edit config/cloud.ts
81
+
82
+ # 5. Deploy
83
+ buddy deploy
84
+ ```
85
+
86
+ ## CLI Commands
87
+
88
+ ```bash
89
+ buddy deploy # deploy to cloud
90
+ buddy cloud --diff # preview infrastructure changes before deploying
91
+ buddy cloud --ssh # SSH into deployed server
92
+ buddy cloud:remove # tear down infrastructure
93
+ buddy cloud:cleanup # clean retained resources
94
+ ```
95
+
96
+ ## Gotchas
97
+ - First deployment creates the CloudFormation stack — subsequent deploys update it
98
+ - APP_KEY must be colon-separated format (validated during deployment)
99
+ - Default region is `us-east-1` (from AWS_DEFAULT_REGION env)
100
+ - `buddy cloud --diff` shows changes BEFORE deploying — always review first
101
+ - Deploy hooks run in the deployment process, not on the target server
102
+ - For infrastructure details (EC2, Lambda, VPC, etc.), see the `stacks-cloud` skill
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: stacks-design-brutalist
3
+ description: Use when a Stacks UI should feel industrial and brutalist - designing a data-heavy dashboard, portfolio, or editorial site that needs Swiss typography, sharp high contrast, rigid modular grids, monospace telemetry, and experimental analog-degradation effects. Composes with stacks-design-taste as an aesthetic preset built on stx + Crosswind + composables.
4
+ license: MIT
5
+ compatibility: Bun >= 1.3.0, TypeScript
6
+ allowed-tools: Read Edit Write Bash Grep Glob
7
+ ---
8
+
9
+ # Industrial / Brutalist UI (Stacks)
10
+
11
+ **Related skills:** refines [`stacks-design-taste`](../stacks-design-taste/SKILL.md) (the flagship anti-slop skill) with an industrial/brutalist preset. Build with [`stacks-stx`](../stacks-stx/SKILL.md) (semantic templating, signals), [`stacks-crosswind`](../stacks-crosswind/SKILL.md) (utilities, custom rules, `gap-px` grids), and [`stacks-ui`](../stacks-ui/SKILL.md) (Craft + headless components). Full composable reference: [`stacks-composables`](../stacks-composables/SKILL.md).
12
+
13
+ ## 1. Skill Meta
14
+ Industrial brutalism and tactical telemetry interface engineering for Stacks apps. Advanced proficiency in architecting stx + Crosswind interfaces that synthesize mid-century Swiss typographic design, industrial manufacturing manuals, and retro-futuristic aerospace/military terminal interfaces. This discipline requires absolute mastery over rigid modular grids, extreme typographic scale contrast, purely utilitarian color palettes, and the programmatic simulation of analog degradation (halftones, CRT scanlines, bitmap dithering). The objective is digital environments that project raw functionality, mechanical precision, and high data density, deliberately discarding conventional consumer UI patterns.
15
+
16
+ ## 2. Visual Archetypes
17
+ The system merges two distinct but highly compatible visual paradigms. **Pick ONE per project and commit to it. Do not alternate or mix both modes within the same interface.**
18
+
19
+ ### 2.1 Swiss Industrial Print
20
+ Derived from 1960s corporate identity systems and heavy machinery blueprints.
21
+ - **Characteristics:** High-contrast light modes (newsprint/off-white substrates). Reliance on monolithic, heavy sans-serif typography. Unforgiving structural grids outlined by visible dividing lines. Aggressive, asymmetric use of negative space punctuated by oversized, viewport-bleeding numerals or letterforms. Heavy use of primary red as an alert/accent color.
22
+
23
+ ### 2.2 Tactical Telemetry & CRT Terminal
24
+ Derived from classified military databases, legacy mainframes, and aerospace Heads-Up Displays (HUDs).
25
+ - **Characteristics:** Dark mode exclusivity. High-density tabular data presentation. Absolute dominance of monospaced typography. Integration of technical framing devices (ASCII brackets, crosshairs). Application of simulated hardware limitations (phosphor glow, scanlines, low bit-depth rendering).
26
+
27
+ ## 3. Typographic Architecture
28
+ Typography is the primary structural and decorative infrastructure. Imagery is secondary. The system demands extreme variance in scale, weight, and spacing. Register font *choices* in the `fonts` config; load with `@font-face` / `<link>` + `font-display: swap` (never `next/font`).
29
+
30
+ ### 3.1 Macro-Typography (Structural Headers)
31
+ - **Classification:** Neo-Grotesque / Heavy Sans-Serif.
32
+ - **Optimal Web Fonts:** Neue Haas Grotesk (Black), Archivo Black, Roboto Flex (Heavy), Monument Extended.
33
+ - **Implementation Parameters:**
34
+ - **Scale:** Deployed at massive scales using fluid typography (`clamp(4rem, 10vw, 15rem)`).
35
+ - **Tracking:** Extremely tight, often negative (`-0.03em` to `-0.06em`), forcing glyphs to form solid architectural blocks.
36
+ - **Leading:** Highly compressed (`0.85` to `0.95`).
37
+ - **Casing:** Exclusively uppercase for structural impact.
38
+
39
+ ### 3.2 Micro-Typography (Data & Telemetry)
40
+ - **Classification:** Monospace / Technical Sans.
41
+ - **Optimal Web Fonts:** JetBrains Mono, IBM Plex Mono, Space Mono, VT323, Courier Prime.
42
+ - **Implementation Parameters:**
43
+ - **Scale:** Fixed and small (`10px` to `14px` / `0.7rem` to `0.875rem`).
44
+ - **Tracking:** Generous (`0.05em` to `0.1em`) to simulate mechanical typewriter spacing or terminal matrices.
45
+ - **Leading:** Standard to tight (`1.2` to `1.4`).
46
+ - **Casing:** Exclusively uppercase. Used for all metadata, navigation, unit IDs, and coordinates.
47
+
48
+ ### 3.3 Textural Contrast (Artistic Disruption)
49
+ - **Classification:** High-Contrast Serif.
50
+ - **Optimal Web Fonts:** Playfair Display, EB Garamond, Times New Roman.
51
+ - **Implementation Parameters:** Used exceedingly sparingly. Must be subjected to heavy post-processing (halftone filters, 1-bit dithering) to degrade vector perfection and create textural juxtaposition against the clean sans-serifs.
52
+
53
+ ## 4. Color System
54
+ The color architecture is uncompromising. Gradients, soft drop shadows, and modern translucency are strictly prohibited. Colors simulate physical media or primitive emissive displays.
55
+
56
+ **CRITICAL: Choose ONE substrate palette per project and use it consistently. Never mix light and dark substrates within the same interface.** Expose these as Crosswind theme tokens in `config/ui.ts`.
57
+
58
+ ### If Swiss Industrial Print (Light)
59
+ - **Background:** `#F4F4F0` or `#EAE8E3` (matte, unbleached documentation paper).
60
+ - **Foreground:** `#050505` to `#111111` (carbon ink).
61
+ - **Accent:** `#E61919` or `#FF2A2A` (aviation/hazard red). This is the ONLY accent color. Used for strike-throughs, thick structural dividing lines, or vital data highlights.
62
+
63
+ ### If Tactical Telemetry (Dark)
64
+ - **Background:** `#0A0A0A` or `#121212` (deactivated CRT; avoid pure `#000000`).
65
+ - **Foreground:** `#EAEAEA` (white phosphor). Primary text color.
66
+ - **Accent:** `#E61919` or `#FF2A2A` (aviation/hazard red). Same red, same rules.
67
+ - **Terminal Green (`#4AF626`):** Optional. Use ONLY for a single specific UI element (one status indicator or one data readout), never as a general text color. If it does not serve a clear purpose, omit it entirely.
68
+
69
+ ## 5. Layout and Spatial Engineering
70
+ The layout must appear mathematically engineered. It rejects conventional web padding in favor of visible compartmentalization.
71
+ - **The Blueprint Grid:** Strict adherence to CSS Grid architectures (`grid` utilities). Elements do not float; they anchor precisely to grid tracks and intersections.
72
+ - **Visible Compartmentalization:** Extensive solid borders (`border` / `border-2 border-solid`) to delineate distinct zones. Horizontal rules (`<hr>`) frequently span the entire container width to segregate operational units.
73
+ - **Bimodal Density:** Layouts oscillate between extreme data density (tightly packed monospace metadata) and vast expanses of calculated negative space framing macro-typography.
74
+ - **Geometry:** Absolute rejection of `border-radius`. All corners must be exactly 90 degrees to enforce mechanical rigidity. Ban `rounded-*` utilities entirely.
75
+
76
+ ## 6. UI Components and Symbology
77
+ Standard web UI conventions are replaced with utilitarian, industrial graphic elements.
78
+ - **Syntax Decoration:** ASCII characters to frame data points.
79
+ - *Framing:* `[ DELIVERY SYSTEMS ]`, `< RE-IND >`
80
+ - *Directional:* `>>>`, `///`, `\\\\`
81
+ - **Industrial Markers:** Prominent registration (`®`), copyright (`©`), and trademark (`™`) symbols functioning as structural geometric elements rather than legal text.
82
+ - **Technical Assets:** Crosshairs (`+`) at grid intersections, repeating vertical lines (barcodes), thick horizontal warning stripes, and randomized string data (`REV 2.6`, `UNIT / D-01`) to simulate active mechanical processes.
83
+ - **Icons:** When an icon is unavoidable, use Iconify `i-*` classes with a single sharp monoline collection; NEVER hand-roll SVG icon paths or `npm install` an icon library. Prefer ASCII/typographic symbology over decorative icons.
84
+
85
+ ```html
86
+ <!-- resources/components/TelemetryRow.stx -->
87
+ <div class="grid gap-px grid-cols-4 bg-[#E61919]">
88
+ <dl class="p-3 font-mono text-[#EAEAEA] text-[11px] tracking-[0.08em] uppercase bg-[#0A0A0A]">
89
+ <dt class="text-[#E61919]">[ UNIT ID ]</dt>
90
+ <dd><output>D-01</output></dd>
91
+ </dl>
92
+ <dl class="p-3 font-mono text-[#EAEAEA] text-[11px] tracking-[0.08em] uppercase bg-[#0A0A0A]">
93
+ <dt class="text-[#E61919]">[ REV ]</dt>
94
+ <dd><samp>2.6</samp></dd>
95
+ </dl>
96
+ </div>
97
+ ```
98
+
99
+ ## 7. Textural and Post-Processing Effects
100
+ To prevent a purely digital look, simulated analog degradation is engineered into the frontend via CSS and SVG filters (in the `.stx` `<style>` block, no external libraries).
101
+ - **Halftone and 1-Bit Dithering:** Transform continuous-tone images or large serif typography into dot-matrix patterns via pre-processing or CSS `mix-blend-mode: multiply` overlays combined with SVG radial dot patterns.
102
+ - **CRT Scanlines:** For terminal interfaces, apply a `repeating-linear-gradient` to simulate horizontal electron beam sweeps (`repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,0.1) 2px, rgba(0,0,0,0.1) 4px)`).
103
+ - **Mechanical Noise:** A global, low-opacity SVG static/noise filter applied to the DOM root to introduce a unified physical grain across both dark and light modes. Attach to a `position: fixed; pointer-events: none` layer, never a scrolling container.
104
+
105
+ ## 8. Web Engineering Directives
106
+ 1. **Grid Determinism:** Use `display: grid; gap: 1px;` (`grid gap-px`) with contrasting parent/child background colors to generate mathematically perfect, razor-thin dividing lines without complex border declarations.
107
+ 2. **Semantic Rigidity:** Construct the DOM with precise semantic tags (`<data>`, `<samp>`, `<kbd>`, `<output>`, `<dl>`) to accurately reflect the technical nature of the telemetry. This aligns with stx's div-soup ban; use real semantic elements.
108
+ 3. **Typography Clamping:** Use CSS `clamp()` exclusively for macro-typography so massive text scales aggressively while maintaining structural integrity across viewports.
109
+ 4. **Motion (if any):** Stacks ships no animation library; do NOT import `motion`, `gsap`, or `framer-motion`. Keep motion mechanical and minimal via Crosswind transitions and CSS keyframes. For any scroll-triggered reveal use `useIntersectionObserver(target, cb)`; NEVER `window.addEventListener('scroll', ...)`. Animate only `transform` and `opacity`. No `var`/`document.*`/`window.*` in stx scripts. Gate motion with `@media (prefers-reduced-motion: reduce)` and/or `useMediaQuery('(prefers-reduced-motion: reduce)')`.
110
+ 5. **Output:** Ship complete stx files, never a skeleton or placeholder comment.