@nextsparkjs/ai-workflow 0.1.0-beta.100

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 (272) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +115 -0
  3. package/claude/_docs/workflows-optimizations.md +359 -0
  4. package/claude/agents/api-tester.md +634 -0
  5. package/claude/agents/architecture-supervisor.md +1351 -0
  6. package/claude/agents/backend-developer.md +997 -0
  7. package/claude/agents/backend-validator.md +417 -0
  8. package/claude/agents/bdd-docs-writer.md +737 -0
  9. package/claude/agents/block-developer.md +677 -0
  10. package/claude/agents/code-reviewer.md +1432 -0
  11. package/claude/agents/db-developer.md +721 -0
  12. package/claude/agents/db-validator.md +407 -0
  13. package/claude/agents/demo-video-generator.md +493 -0
  14. package/claude/agents/documentation-writer.md +1268 -0
  15. package/claude/agents/frontend-developer.md +1234 -0
  16. package/claude/agents/frontend-validator.md +777 -0
  17. package/claude/agents/functional-validator.md +630 -0
  18. package/claude/agents/mock-analyst.md +387 -0
  19. package/claude/agents/product-manager.md +963 -0
  20. package/claude/agents/qa-automation.md +1762 -0
  21. package/claude/agents/release-manager.md +634 -0
  22. package/claude/agents/selectors-translator.md +262 -0
  23. package/claude/agents/unit-test-writer.md +785 -0
  24. package/claude/agents/visual-comparator.md +329 -0
  25. package/claude/agents/workflow-maintainer.md +352 -0
  26. package/claude/commands/do/README.md +88 -0
  27. package/claude/commands/do/create-api.md +64 -0
  28. package/claude/commands/do/create-entity.md +66 -0
  29. package/claude/commands/do/create-migration.md +64 -0
  30. package/claude/commands/do/create-plugin.md +56 -0
  31. package/claude/commands/do/create-theme.md +70 -0
  32. package/claude/commands/do/mock-data.md +67 -0
  33. package/claude/commands/do/reset-db.md +71 -0
  34. package/claude/commands/do/setup-scheduled-action.md +75 -0
  35. package/claude/commands/do/sync-code-review.md +117 -0
  36. package/claude/commands/do/update-selectors.md +112 -0
  37. package/claude/commands/do/use-skills.md +90 -0
  38. package/claude/commands/do/validate-blocks.md +69 -0
  39. package/claude/commands/how-to/README.md +261 -0
  40. package/claude/commands/how-to/add-metadata.md +692 -0
  41. package/claude/commands/how-to/add-taxonomies.md +806 -0
  42. package/claude/commands/how-to/add-translations.md +571 -0
  43. package/claude/commands/how-to/create-api.md +577 -0
  44. package/claude/commands/how-to/create-block.md +575 -0
  45. package/claude/commands/how-to/create-child-entities.md +771 -0
  46. package/claude/commands/how-to/create-entity.md +597 -0
  47. package/claude/commands/how-to/create-migrations.md +605 -0
  48. package/claude/commands/how-to/create-plugin.md +654 -0
  49. package/claude/commands/how-to/customize-app.md +481 -0
  50. package/claude/commands/how-to/customize-dashboard.md +553 -0
  51. package/claude/commands/how-to/customize-theme.md +438 -0
  52. package/claude/commands/how-to/define-features-flows.md +632 -0
  53. package/claude/commands/how-to/deploy.md +507 -0
  54. package/claude/commands/how-to/handle-file-uploads.md +746 -0
  55. package/claude/commands/how-to/implement-search.md +1001 -0
  56. package/claude/commands/how-to/install-plugins.md +352 -0
  57. package/claude/commands/how-to/manage-test-coverage.md +984 -0
  58. package/claude/commands/how-to/run-tests.md +400 -0
  59. package/claude/commands/how-to/set-app-languages.md +601 -0
  60. package/claude/commands/how-to/set-plans-and-permissions.md +575 -0
  61. package/claude/commands/how-to/set-scheduled-actions.md +527 -0
  62. package/claude/commands/how-to/set-user-roles-and-permissions.md +550 -0
  63. package/claude/commands/how-to/setup-authentication.md +388 -0
  64. package/claude/commands/how-to/setup-claude-code.md +440 -0
  65. package/claude/commands/how-to/setup-database.md +274 -0
  66. package/claude/commands/how-to/setup-email-providers.md +598 -0
  67. package/claude/commands/how-to/setup-mobile-dev.md +627 -0
  68. package/claude/commands/how-to/start.md +500 -0
  69. package/claude/commands/how-to/use-devtools.md +639 -0
  70. package/claude/commands/how-to/use-superadmin.md +622 -0
  71. package/claude/commands/session/README.md +193 -0
  72. package/claude/commands/session/block-create.md +190 -0
  73. package/claude/commands/session/block-list.md +203 -0
  74. package/claude/commands/session/block-update.md +192 -0
  75. package/claude/commands/session/block-validate.md +218 -0
  76. package/claude/commands/session/changelog.md +115 -0
  77. package/claude/commands/session/close.md +225 -0
  78. package/claude/commands/session/commit.md +174 -0
  79. package/claude/commands/session/db-entity.md +206 -0
  80. package/claude/commands/session/db-fix.md +212 -0
  81. package/claude/commands/session/db-sample.md +206 -0
  82. package/claude/commands/session/demo.md +178 -0
  83. package/claude/commands/session/doc-bdd.md +207 -0
  84. package/claude/commands/session/doc-feature.md +218 -0
  85. package/claude/commands/session/doc-read.md +225 -0
  86. package/claude/commands/session/execute.md +204 -0
  87. package/claude/commands/session/explain.md +202 -0
  88. package/claude/commands/session/fix-bug.md +210 -0
  89. package/claude/commands/session/fix-build.md +182 -0
  90. package/claude/commands/session/fix-test.md +189 -0
  91. package/claude/commands/session/pending.md +232 -0
  92. package/claude/commands/session/refine.md +188 -0
  93. package/claude/commands/session/resume.md +192 -0
  94. package/claude/commands/session/review.md +192 -0
  95. package/claude/commands/session/scope-change.md +181 -0
  96. package/claude/commands/session/start-blocks.md +347 -0
  97. package/claude/commands/session/start.md +604 -0
  98. package/claude/commands/session/status.md +169 -0
  99. package/claude/commands/session/test-fix.md +221 -0
  100. package/claude/commands/session/test-run.md +203 -0
  101. package/claude/commands/session/test-write.md +242 -0
  102. package/claude/commands/session/validate.md +162 -0
  103. package/claude/config/context.json +40 -0
  104. package/claude/config/github.json +69 -0
  105. package/claude/config/github.schema.json +106 -0
  106. package/claude/config/team.json +46 -0
  107. package/claude/config/team.schema.json +106 -0
  108. package/claude/config/workspace.json +43 -0
  109. package/claude/config/workspace.schema.json +75 -0
  110. package/claude/skills/README.md +228 -0
  111. package/claude/skills/accessibility/SKILL.md +573 -0
  112. package/claude/skills/api-bypass-layers/SKILL.md +550 -0
  113. package/claude/skills/asana-integration/SKILL.md +499 -0
  114. package/claude/skills/better-auth/SKILL.md +666 -0
  115. package/claude/skills/billing-subscriptions/SKILL.md +660 -0
  116. package/claude/skills/block-decision-matrix/SKILL.md +359 -0
  117. package/claude/skills/clickup-integration/SKILL.md +434 -0
  118. package/claude/skills/core-theme-responsibilities/SKILL.md +485 -0
  119. package/claude/skills/create-plugin/SKILL.md +425 -0
  120. package/claude/skills/create-theme/SKILL.md +331 -0
  121. package/claude/skills/cypress-api/SKILL.md +511 -0
  122. package/claude/skills/cypress-api/scripts/generate-api-controller.py +329 -0
  123. package/claude/skills/cypress-api/scripts/generate-api-test.py +930 -0
  124. package/claude/skills/cypress-e2e/SKILL.md +526 -0
  125. package/claude/skills/cypress-e2e/scripts/extract-selectors.py +383 -0
  126. package/claude/skills/cypress-e2e/scripts/generate-uat-test.py +788 -0
  127. package/claude/skills/cypress-selectors/SKILL.md +309 -0
  128. package/claude/skills/cypress-selectors/scripts/extract-missing.py +243 -0
  129. package/claude/skills/cypress-selectors/scripts/generate-block-selectors.py +283 -0
  130. package/claude/skills/cypress-selectors/scripts/validate-selectors.py +145 -0
  131. package/claude/skills/database-migrations/SKILL.md +335 -0
  132. package/claude/skills/database-migrations/scripts/generate-sample-data.py +284 -0
  133. package/claude/skills/database-migrations/scripts/validate-migration.py +323 -0
  134. package/claude/skills/design-system/SKILL.md +682 -0
  135. package/claude/skills/documentation/SKILL.md +540 -0
  136. package/claude/skills/entity-api/SKILL.md +482 -0
  137. package/claude/skills/entity-system/SKILL.md +635 -0
  138. package/claude/skills/entity-system/scripts/generate-child-migration.py +298 -0
  139. package/claude/skills/entity-system/scripts/generate-metas-migration.py +233 -0
  140. package/claude/skills/entity-system/scripts/generate-migration.py +382 -0
  141. package/claude/skills/entity-system/scripts/generate-sample-data.py +418 -0
  142. package/claude/skills/entity-system/scripts/scaffold-entity.py +661 -0
  143. package/claude/skills/github/SKILL.md +467 -0
  144. package/claude/skills/i18n-nextintl/SKILL.md +302 -0
  145. package/claude/skills/i18n-nextintl/scripts/add-translation.py +243 -0
  146. package/claude/skills/i18n-nextintl/scripts/extract-hardcoded.py +246 -0
  147. package/claude/skills/i18n-nextintl/scripts/validate-translations.py +260 -0
  148. package/claude/skills/impact-analysis/SKILL.md +203 -0
  149. package/claude/skills/jest-unit/SKILL.md +306 -0
  150. package/claude/skills/jest-unit/references/component-testing.md +371 -0
  151. package/claude/skills/jest-unit/references/mocking-patterns.md +380 -0
  152. package/claude/skills/jest-unit/references/service-hook-testing.md +454 -0
  153. package/claude/skills/jira-integration/SKILL.md +539 -0
  154. package/claude/skills/media-library/SKILL.md +743 -0
  155. package/claude/skills/mock-analysis/SKILL.md +276 -0
  156. package/claude/skills/monorepo-architecture/SKILL.md +162 -0
  157. package/claude/skills/nextjs-api-development/SKILL.md +364 -0
  158. package/claude/skills/nextjs-api-development/scripts/generate-crud-tests.py +456 -0
  159. package/claude/skills/nextjs-api-development/scripts/scaffold-endpoint.py +481 -0
  160. package/claude/skills/nextjs-api-development/scripts/validate-api.py +283 -0
  161. package/claude/skills/notion-integration/SKILL.md +641 -0
  162. package/claude/skills/npm-development-workflow/SKILL.md +480 -0
  163. package/claude/skills/page-builder-blocks/SKILL.md +530 -0
  164. package/claude/skills/page-builder-blocks/scripts/scaffold-block.py +444 -0
  165. package/claude/skills/permissions-system/SKILL.md +619 -0
  166. package/claude/skills/plugins/SKILL.md +340 -0
  167. package/claude/skills/plugins/references/plugin-templates.md +414 -0
  168. package/claude/skills/plugins/references/plugin-testing.md +353 -0
  169. package/claude/skills/plugins/references/plugin-types.md +198 -0
  170. package/claude/skills/plugins/scripts/scaffold-plugin.py +443 -0
  171. package/claude/skills/pom-patterns/SKILL.md +452 -0
  172. package/claude/skills/pom-patterns/scripts/generate-pom.py +392 -0
  173. package/claude/skills/rate-limiting/SKILL.md +342 -0
  174. package/claude/skills/react-best-practices/AGENTS.md +2410 -0
  175. package/claude/skills/react-best-practices/README.md +123 -0
  176. package/claude/skills/react-best-practices/SKILL.md +125 -0
  177. package/claude/skills/react-best-practices/metadata.json +15 -0
  178. package/claude/skills/react-best-practices/rules/_sections.md +46 -0
  179. package/claude/skills/react-best-practices/rules/_template.md +28 -0
  180. package/claude/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  181. package/claude/skills/react-best-practices/rules/advanced-use-latest.md +49 -0
  182. package/claude/skills/react-best-practices/rules/async-api-routes.md +38 -0
  183. package/claude/skills/react-best-practices/rules/async-defer-await.md +80 -0
  184. package/claude/skills/react-best-practices/rules/async-dependencies.md +36 -0
  185. package/claude/skills/react-best-practices/rules/async-parallel.md +28 -0
  186. package/claude/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  187. package/claude/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  188. package/claude/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  189. package/claude/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  190. package/claude/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  191. package/claude/skills/react-best-practices/rules/bundle-preload.md +50 -0
  192. package/claude/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  193. package/claude/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  194. package/claude/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  195. package/claude/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  196. package/claude/skills/react-best-practices/rules/js-batch-dom-css.md +82 -0
  197. package/claude/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  198. package/claude/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  199. package/claude/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  200. package/claude/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  201. package/claude/skills/react-best-practices/rules/js-early-exit.md +50 -0
  202. package/claude/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  203. package/claude/skills/react-best-practices/rules/js-index-maps.md +37 -0
  204. package/claude/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  205. package/claude/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  206. package/claude/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  207. package/claude/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  208. package/claude/skills/react-best-practices/rules/rendering-activity.md +26 -0
  209. package/claude/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  210. package/claude/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  211. package/claude/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  212. package/claude/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  213. package/claude/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  214. package/claude/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  215. package/claude/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  216. package/claude/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  217. package/claude/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  218. package/claude/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  219. package/claude/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  220. package/claude/skills/react-best-practices/rules/rerender-memo.md +44 -0
  221. package/claude/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  222. package/claude/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  223. package/claude/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  224. package/claude/skills/react-best-practices/rules/server-cache-react.md +76 -0
  225. package/claude/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  226. package/claude/skills/react-best-practices/rules/server-serialization.md +38 -0
  227. package/claude/skills/react-patterns/SKILL.md +688 -0
  228. package/claude/skills/registry-system/SKILL.md +331 -0
  229. package/claude/skills/scheduled-actions/SKILL.md +671 -0
  230. package/claude/skills/scope-enforcement/SKILL.md +542 -0
  231. package/claude/skills/scope-enforcement/scripts/validate-scope.py +357 -0
  232. package/claude/skills/server-actions/SKILL.md +493 -0
  233. package/claude/skills/service-layer/SKILL.md +587 -0
  234. package/claude/skills/session-management/SKILL.md +266 -0
  235. package/claude/skills/session-management/scripts/create-session.py +166 -0
  236. package/claude/skills/session-management/scripts/iteration-close.sh +105 -0
  237. package/claude/skills/session-management/scripts/iteration-init.sh +180 -0
  238. package/claude/skills/session-management/scripts/session-archive.sh +87 -0
  239. package/claude/skills/session-management/scripts/session-close.sh +133 -0
  240. package/claude/skills/session-management/scripts/session-init.sh +225 -0
  241. package/claude/skills/session-management/scripts/session-list.sh +163 -0
  242. package/claude/skills/session-management/scripts/split-plan.sh +116 -0
  243. package/claude/skills/shadcn-components/SKILL.md +586 -0
  244. package/claude/skills/shadcn-theming/SKILL.md +446 -0
  245. package/claude/skills/suspense-loading/SKILL.md +280 -0
  246. package/claude/skills/tailwind-theming/SKILL.md +507 -0
  247. package/claude/skills/tanstack-query/SKILL.md +608 -0
  248. package/claude/skills/test-coverage/SKILL.md +239 -0
  249. package/claude/skills/web-design-guidelines/SKILL.md +39 -0
  250. package/claude/skills/zod-validation/SKILL.md +537 -0
  251. package/claude/templates/blocks/progress.md +86 -0
  252. package/claude/templates/iteration/changes.md +61 -0
  253. package/claude/templates/iteration/progress.md +55 -0
  254. package/claude/templates/log.md +31 -0
  255. package/claude/templates/story/context.md +77 -0
  256. package/claude/templates/story/pendings.md +37 -0
  257. package/claude/templates/story/plan.md +299 -0
  258. package/claude/templates/story/requirements.md +109 -0
  259. package/claude/templates/story/scope.json +10 -0
  260. package/claude/templates/story/tests.md +91 -0
  261. package/claude/templates/task/progress.md +58 -0
  262. package/claude/templates/task/requirements.md +54 -0
  263. package/claude/workflows/README.md +154 -0
  264. package/claude/workflows/blocks.md +614 -0
  265. package/claude/workflows/story.md +1207 -0
  266. package/claude/workflows/task.md +927 -0
  267. package/claude/workflows/tweak.md +527 -0
  268. package/cursor/.gitkeep +0 -0
  269. package/package.json +35 -0
  270. package/scripts/postinstall.mjs +198 -0
  271. package/scripts/setup.mjs +282 -0
  272. package/scripts/sync.mjs +209 -0
@@ -0,0 +1,507 @@
1
+ # /how-to:deploy
2
+
3
+ Interactive guide to deploy NextSpark to production.
4
+
5
+ ---
6
+
7
+ ## Syntax
8
+
9
+ ```
10
+ /how-to:deploy
11
+ ```
12
+
13
+ ---
14
+
15
+ ## Behavior
16
+
17
+ Guides the user through deploying to Vercel, managing environment variables, and configuring production settings.
18
+
19
+ ---
20
+
21
+ ## Tutorial Overview
22
+
23
+ ```
24
+ STEPS OVERVIEW (4 steps)
25
+
26
+ Step 1: Prepare for Deployment
27
+ └── Pre-deployment checklist
28
+
29
+ Step 2: Deploy to Vercel
30
+ └── Connect and deploy
31
+
32
+ Step 3: Configure Environment
33
+ └── Production variables
34
+
35
+ Step 4: Post-Deployment Setup
36
+ └── Database, domains, monitoring
37
+ ```
38
+
39
+ ---
40
+
41
+ ## Step 1: Prepare for Deployment
42
+
43
+ ```
44
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
45
+ 📚 HOW TO: DEPLOY
46
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
47
+
48
+ STEP 1 OF 4: Prepare for Deployment
49
+
50
+ Complete this checklist before deploying:
51
+
52
+ ┌─────────────────────────────────────────────┐
53
+ │ PRE-DEPLOYMENT CHECKLIST │
54
+ │ ───────────────────────────────────────── │
55
+ │ │
56
+ │ [ ] Build passes locally │
57
+ │ pnpm build │
58
+ │ │
59
+ │ [ ] Tests pass │
60
+ │ pnpm test │
61
+ │ │
62
+ │ [ ] Environment variables documented │
63
+ │ All required vars in .env.example │
64
+ │ │
65
+ │ [ ] Database migrations ready │
66
+ │ pnpm db:migrate works │
67
+ │ │
68
+ │ [ ] No console.log statements │
69
+ │ Remove debug logs │
70
+ │ │
71
+ │ [ ] Images optimized │
72
+ │ Use next/image for all images │
73
+ │ │
74
+ └─────────────────────────────────────────────┘
75
+
76
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
77
+
78
+ 📋 Verify Build:
79
+
80
+ ```bash
81
+ # Clean build
82
+ rm -rf .next
83
+ pnpm build
84
+
85
+ # Expected output:
86
+ # ✓ Compiled successfully
87
+ # ✓ Linting and checking validity of types
88
+ # ✓ Collecting page data
89
+ # ✓ Generating static pages
90
+ ```
91
+
92
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
93
+
94
+ 📋 Check Bundle Size:
95
+
96
+ ```bash
97
+ # Analyze bundle
98
+ pnpm build:analyze
99
+
100
+ # Should see:
101
+ # - No packages > 500KB
102
+ # - Proper code splitting
103
+ # - Tree shaking working
104
+ ```
105
+
106
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
107
+
108
+ 📋 Required Services:
109
+
110
+ Before deployment, ensure you have:
111
+
112
+ | Service | Purpose | Provider |
113
+ |---------|---------|----------|
114
+ | Database | PostgreSQL | Supabase, Neon, AWS RDS |
115
+ | Email | Transactional | Resend, SendGrid |
116
+ | Storage | File uploads | S3, R2, Supabase Storage |
117
+ | Payments | Billing | Stripe |
118
+ | Hosting | App hosting | Vercel |
119
+
120
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
121
+
122
+ What would you like to do?
123
+
124
+ [1] Continue to Step 2 (Deploy to Vercel)
125
+ [2] Show me how to set up Supabase
126
+ [3] How do I fix build errors?
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Step 2: Deploy to Vercel
132
+
133
+ ```
134
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
135
+ STEP 2 OF 4: Deploy to Vercel
136
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
137
+
138
+ 📋 Option A: Deploy via CLI
139
+
140
+ ```bash
141
+ # Install Vercel CLI
142
+ npm i -g vercel
143
+
144
+ # Login to Vercel
145
+ vercel login
146
+
147
+ # Deploy (first time - will prompt for config)
148
+ vercel
149
+
150
+ # Deploy to production
151
+ vercel --prod
152
+ ```
153
+
154
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
155
+
156
+ 📋 Option B: Deploy via GitHub
157
+
158
+ 1. Push your code to GitHub:
159
+ ```bash
160
+ git push origin main
161
+ ```
162
+
163
+ 2. Go to vercel.com/new
164
+
165
+ 3. Import your repository
166
+
167
+ 4. Configure project:
168
+ - Framework Preset: Next.js
169
+ - Root Directory: ./
170
+ - Build Command: pnpm build
171
+ - Install Command: pnpm install
172
+
173
+ 5. Click "Deploy"
174
+
175
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
176
+
177
+ 📋 Vercel Project Settings:
178
+
179
+ ```
180
+ Project Settings > General
181
+ ├── Framework Preset: Next.js
182
+ ├── Build Command: pnpm build
183
+ ├── Output Directory: .next
184
+ ├── Install Command: pnpm install
185
+ └── Node.js Version: 20.x
186
+ ```
187
+
188
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
189
+
190
+ 📋 vercel.json Configuration:
191
+
192
+ ```json
193
+ {
194
+ "buildCommand": "pnpm build",
195
+ "installCommand": "pnpm install",
196
+ "framework": "nextjs",
197
+ "regions": ["iad1"],
198
+ "functions": {
199
+ "app/api/**/*.ts": {
200
+ "maxDuration": 30
201
+ }
202
+ },
203
+ "crons": [
204
+ {
205
+ "path": "/api/cron/process-scheduled-actions",
206
+ "schedule": "*/5 * * * *"
207
+ }
208
+ ]
209
+ }
210
+ ```
211
+
212
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
213
+
214
+ 📋 Automatic Deployments:
215
+
216
+ Vercel automatically deploys:
217
+ - **Production**: Push to `main` branch
218
+ - **Preview**: Push to any other branch
219
+ - **PR Previews**: Open pull request
220
+
221
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
222
+
223
+ What would you like to do?
224
+
225
+ [1] Continue to Step 3 (Environment)
226
+ [2] Deploy to other platforms (Railway, Render)
227
+ [3] Set up custom domain
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Step 3: Configure Environment
233
+
234
+ ```
235
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
236
+ STEP 3 OF 4: Configure Production Environment
237
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
238
+
239
+ Set environment variables in Vercel dashboard:
240
+
241
+ 📋 Required Variables:
242
+
243
+ ```env
244
+ # ============================================
245
+ # DATABASE (Supabase/Neon)
246
+ # ============================================
247
+ DATABASE_URL="postgresql://..."
248
+
249
+ # ============================================
250
+ # AUTHENTICATION
251
+ # ============================================
252
+ # Generate: openssl rand -base64 32
253
+ BETTER_AUTH_SECRET="production-secret-min-32-chars"
254
+ BETTER_AUTH_URL="https://your-domain.com"
255
+ BETTER_AUTH_TRUST_HOST="true"
256
+
257
+ # ============================================
258
+ # APPLICATION
259
+ # ============================================
260
+ NEXT_PUBLIC_APP_URL="https://your-domain.com"
261
+ NEXT_PUBLIC_APP_NAME="Your App Name"
262
+ NEXT_PUBLIC_ACTIVE_THEME="your-theme"
263
+
264
+ # ============================================
265
+ # EMAIL (Resend)
266
+ # ============================================
267
+ RESEND_API_KEY="re_xxxx"
268
+ EMAIL_FROM="noreply@your-domain.com"
269
+
270
+ # ============================================
271
+ # PAYMENTS (Stripe)
272
+ # ============================================
273
+ STRIPE_SECRET_KEY="sk_live_xxxx"
274
+ STRIPE_PUBLISHABLE_KEY="pk_live_xxxx"
275
+ STRIPE_WEBHOOK_SECRET="whsec_xxxx"
276
+
277
+ # ============================================
278
+ # FILE STORAGE (S3/R2)
279
+ # ============================================
280
+ S3_BUCKET="your-bucket"
281
+ S3_REGION="auto"
282
+ S3_ACCESS_KEY_ID="xxxx"
283
+ S3_SECRET_ACCESS_KEY="xxxx"
284
+ S3_ENDPOINT="https://xxx.r2.cloudflarestorage.com"
285
+
286
+ # ============================================
287
+ # BACKGROUND JOBS
288
+ # ============================================
289
+ # Generate: openssl rand -hex 16
290
+ CRON_SECRET="your-cron-secret"
291
+ ```
292
+
293
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
294
+
295
+ 📋 Add Variables in Vercel:
296
+
297
+ 1. Go to Project Settings > Environment Variables
298
+
299
+ 2. Add each variable:
300
+ - Name: DATABASE_URL
301
+ - Value: postgresql://...
302
+ - Environment: Production (and Preview if needed)
303
+
304
+ 3. Click "Save"
305
+
306
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
307
+
308
+ 📋 Using Vercel CLI:
309
+
310
+ ```bash
311
+ # Add single variable
312
+ vercel env add DATABASE_URL production
313
+
314
+ # Pull all env vars locally
315
+ vercel env pull .env.local
316
+
317
+ # List all variables
318
+ vercel env ls
319
+ ```
320
+
321
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
322
+
323
+ 📋 Environment-Specific Variables:
324
+
325
+ | Variable | Development | Production |
326
+ |----------|-------------|------------|
327
+ | DATABASE_URL | Local PostgreSQL | Supabase/Neon |
328
+ | BETTER_AUTH_URL | localhost:3000 | your-domain.com |
329
+ | STRIPE_* | sk_test_xxx | sk_live_xxx |
330
+ | Email | Console output | Resend API |
331
+
332
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
333
+
334
+ ⚠️ SECURITY NOTES:
335
+
336
+ - Never commit .env files to git
337
+ - Use different secrets for production
338
+ - Rotate secrets periodically
339
+ - Use Vercel's secret storage for sensitive values
340
+
341
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
342
+
343
+ What would you like to do?
344
+
345
+ [1] Continue to Step 4 (Post-Deployment)
346
+ [2] How do I set up Stripe webhooks?
347
+ [3] Configure OAuth for production
348
+ ```
349
+
350
+ ---
351
+
352
+ ## Step 4: Post-Deployment Setup
353
+
354
+ ```
355
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
356
+ STEP 4 OF 4: Post-Deployment Setup
357
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
358
+
359
+ 📋 1. Run Database Migrations:
360
+
361
+ ```bash
362
+ # Option A: Via Vercel Function
363
+ # Create: app/api/migrate/route.ts (temporary)
364
+
365
+ # Option B: Direct connection
366
+ DATABASE_URL="production-url" pnpm db:migrate
367
+
368
+ # Option C: Via Supabase SQL Editor
369
+ # Paste migration SQL directly
370
+ ```
371
+
372
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
373
+
374
+ 📋 2. Configure Custom Domain:
375
+
376
+ 1. Go to Project Settings > Domains
377
+ 2. Add your domain: your-domain.com
378
+ 3. Add DNS records as shown
379
+ 4. Wait for SSL certificate (automatic)
380
+
381
+ ```
382
+ DNS Records to add:
383
+ A @ 76.76.21.21
384
+ CNAME www cname.vercel-dns.com
385
+ ```
386
+
387
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
388
+
389
+ 📋 3. Set Up Stripe Webhooks:
390
+
391
+ 1. Go to Stripe Dashboard > Developers > Webhooks
392
+ 2. Add endpoint: https://your-domain.com/api/webhooks/stripe
393
+ 3. Select events:
394
+ - checkout.session.completed
395
+ - customer.subscription.updated
396
+ - customer.subscription.deleted
397
+ - invoice.payment_failed
398
+ 4. Copy webhook secret to STRIPE_WEBHOOK_SECRET
399
+
400
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
401
+
402
+ 📋 4. Configure OAuth Callbacks:
403
+
404
+ Update OAuth provider settings with production URLs:
405
+
406
+ Google Cloud Console:
407
+ - Authorized redirect URI: https://your-domain.com/api/auth/callback/google
408
+
409
+ GitHub Developer Settings:
410
+ - Authorization callback URL: https://your-domain.com/api/auth/callback/github
411
+
412
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
413
+
414
+ 📋 5. Set Up Monitoring:
415
+
416
+ ```typescript
417
+ // Vercel Analytics (built-in)
418
+ // Add to app/layout.tsx:
419
+ import { Analytics } from '@vercel/analytics/react'
420
+
421
+ export default function RootLayout({ children }) {
422
+ return (
423
+ <html>
424
+ <body>
425
+ {children}
426
+ <Analytics />
427
+ </body>
428
+ </html>
429
+ )
430
+ }
431
+ ```
432
+
433
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
434
+
435
+ 📋 6. Configure Cron Jobs:
436
+
437
+ In vercel.json:
438
+ ```json
439
+ {
440
+ "crons": [
441
+ {
442
+ "path": "/api/cron/process-scheduled-actions",
443
+ "schedule": "*/5 * * * *"
444
+ },
445
+ {
446
+ "path": "/api/cron/cleanup-sessions",
447
+ "schedule": "0 0 * * *"
448
+ }
449
+ ]
450
+ }
451
+ ```
452
+
453
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
454
+
455
+ 📋 Post-Deployment Checklist:
456
+
457
+ [ ] Database migrations ran successfully
458
+ [ ] Custom domain configured with SSL
459
+ [ ] Stripe webhooks set up
460
+ [ ] OAuth callbacks updated
461
+ [ ] Cron jobs configured
462
+ [ ] Analytics enabled
463
+ [ ] Error tracking set up (Sentry optional)
464
+ [ ] First user can sign up
465
+ [ ] Email sending works
466
+ [ ] File uploads work
467
+
468
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
469
+
470
+ 📋 Test Production:
471
+
472
+ ```bash
473
+ # Test signup
474
+ curl -X POST https://your-domain.com/api/auth/sign-up \
475
+ -H "Content-Type: application/json" \
476
+ -d '{"email":"test@example.com","password":"Test1234","name":"Test"}'
477
+
478
+ # Test API
479
+ curl https://your-domain.com/api/health
480
+ ```
481
+
482
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
483
+
484
+ ✅ TUTORIAL STORY!
485
+
486
+ Your app is deployed with:
487
+ • Vercel hosting
488
+ • Production environment
489
+ • Custom domain
490
+ • Stripe webhooks
491
+ • Monitoring
492
+
493
+ 📚 Related tutorials:
494
+ • /how-to:setup-authentication - Auth configuration
495
+ • /how-to:customize-app - App settings
496
+
497
+ 🔙 Back to menu: /how-to:start
498
+ ```
499
+
500
+ ---
501
+
502
+ ## Related Commands
503
+
504
+ | Command | Action |
505
+ |---------|--------|
506
+ | `/how-to:setup-authentication` | Auth setup |
507
+ | `/how-to:setup-database` | Database setup |