create-whop-kit 0.9.7 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# create-whop-kit
|
|
2
2
|
|
|
3
|
-
Scaffold and manage [Whop](https://whop.com)-powered apps with [whop-kit](https://www.npmjs.com/package/whop-kit).
|
|
3
|
+
Scaffold, deploy, and manage [Whop](https://whop.com)-powered apps with [whop-kit](https://www.npmjs.com/package/whop-kit).
|
|
4
4
|
|
|
5
5
|
## Create a new project
|
|
6
6
|
|
|
@@ -8,26 +8,60 @@ Scaffold and manage [Whop](https://whop.com)-powered apps with [whop-kit](https:
|
|
|
8
8
|
npx create-whop-kit my-app
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The CLI walks you through:
|
|
12
12
|
|
|
13
|
-
1. **What are you building?** — SaaS
|
|
13
|
+
1. **What are you building?** — SaaS or Blank (just auth + webhooks)
|
|
14
14
|
2. **Which framework?** — Next.js or Astro
|
|
15
|
-
3. **Which database?** — Neon
|
|
16
|
-
4. **
|
|
15
|
+
3. **Which database?** — Neon, Supabase, Prisma Postgres (all auto-provisioned)
|
|
16
|
+
4. **Deploy?** — Push to GitHub + deploy to Vercel, or develop locally first
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
## What happens when you deploy
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
```
|
|
21
|
+
── GitHub ──────────────────────────────
|
|
22
|
+
◇ Private repo created
|
|
23
|
+
◇ Code pushed
|
|
24
|
+
|
|
25
|
+
── Vercel ──────────────────────────────
|
|
26
|
+
◇ Connected to GitHub (auto-deploy on push)
|
|
27
|
+
◇ Environment variables configured
|
|
28
|
+
◇ Deployed to https://my-app.vercel.app
|
|
29
|
+
|
|
30
|
+
── Whop ────────────────────────────────
|
|
31
|
+
◇ OAuth app created automatically
|
|
32
|
+
◇ Webhook endpoint configured
|
|
33
|
+
◇ All credentials pushed to Vercel
|
|
34
|
+
◇ Redeployed with full configuration
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
One command, one API key paste — fully deployed app. Every future `git push` auto-deploys.
|
|
38
|
+
|
|
39
|
+
## Manage your project
|
|
21
40
|
|
|
22
41
|
```bash
|
|
23
|
-
#
|
|
24
|
-
npx
|
|
42
|
+
npx whop-kit status # project health check
|
|
43
|
+
npx whop-kit add email # add Resend or SendGrid
|
|
44
|
+
npx whop-kit add analytics # add PostHog, GA, or Plausible
|
|
45
|
+
npx whop-kit add webhook-event # scaffold a new event handler
|
|
46
|
+
npx whop-kit deploy # deploy (or redeploy) to Vercel + Whop
|
|
47
|
+
npx whop-kit env # view env vars (masked)
|
|
48
|
+
npx whop-kit env --reveal # show actual values
|
|
49
|
+
npx whop-kit catalog # list all available services
|
|
50
|
+
npx whop-kit open whop # open Whop dashboard
|
|
51
|
+
npx whop-kit upgrade # update whop-kit to latest
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Non-interactive mode
|
|
25
55
|
|
|
26
|
-
|
|
27
|
-
|
|
56
|
+
```bash
|
|
57
|
+
# Full auto — skip all prompts
|
|
58
|
+
npx create-whop-kit my-app --framework nextjs --db neon --yes
|
|
28
59
|
|
|
29
|
-
# Preview
|
|
60
|
+
# Preview what would be created
|
|
30
61
|
npx create-whop-kit my-app --framework nextjs --db later --dry-run
|
|
62
|
+
|
|
63
|
+
# Skip deployment
|
|
64
|
+
npx create-whop-kit my-app --framework nextjs --db neon --skip-deploy --yes
|
|
31
65
|
```
|
|
32
66
|
|
|
33
67
|
### All flags
|
|
@@ -37,68 +71,38 @@ npx create-whop-kit my-app --framework nextjs --db later --dry-run
|
|
|
37
71
|
| `--framework` | `nextjs` or `astro` |
|
|
38
72
|
| `--type` | `saas` or `blank` (default: `saas`) |
|
|
39
73
|
| `--db` | `neon`, `prisma-postgres`, `supabase`, `manual`, `later` |
|
|
40
|
-
| `--db-url` | PostgreSQL connection URL (skips
|
|
41
|
-
| `--
|
|
42
|
-
| `--
|
|
43
|
-
| `--webhook-secret` | Whop webhook secret |
|
|
74
|
+
| `--db-url` | PostgreSQL connection URL (skips provisioning) |
|
|
75
|
+
| `--skip-deploy` | Skip GitHub/Vercel deployment |
|
|
76
|
+
| `--whop-company-key` | Whop Company API key (skips interactive prompt) |
|
|
44
77
|
| `-y, --yes` | Skip optional prompts |
|
|
45
78
|
| `--dry-run` | Show what would be created |
|
|
46
|
-
| `--verbose` | Detailed output |
|
|
47
|
-
|
|
48
|
-
## Manage your project
|
|
49
|
-
|
|
50
|
-
After creating a project, use `whop-kit` to add features and check status:
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
# Check project health
|
|
54
|
-
npx whop-kit status
|
|
55
|
-
|
|
56
|
-
# Add email (Resend or SendGrid)
|
|
57
|
-
npx whop-kit add email
|
|
58
|
-
|
|
59
|
-
# Add analytics (PostHog, Google Analytics, or Plausible)
|
|
60
|
-
npx whop-kit add analytics
|
|
61
|
-
|
|
62
|
-
# Add a webhook event handler
|
|
63
|
-
npx whop-kit add webhook-event
|
|
64
|
-
|
|
65
|
-
# Open provider dashboards
|
|
66
|
-
npx whop-kit open whop
|
|
67
|
-
npx whop-kit open neon
|
|
68
|
-
npx whop-kit open vercel
|
|
69
|
-
|
|
70
|
-
# Update whop-kit to latest
|
|
71
|
-
npx whop-kit upgrade
|
|
72
|
-
```
|
|
73
79
|
|
|
74
80
|
## Database provisioning
|
|
75
81
|
|
|
76
|
-
|
|
82
|
+
All three database providers are auto-provisioned — no need to leave the terminal:
|
|
77
83
|
|
|
78
84
|
| Provider | How it works |
|
|
79
85
|
|----------|-------------|
|
|
80
|
-
| **Neon** | Installs `neonctl` → authenticates
|
|
86
|
+
| **Neon** | Installs `neonctl` → authenticates → creates project → gets connection string |
|
|
87
|
+
| **Supabase** | Installs CLI → authenticates → creates project → guides connection string |
|
|
81
88
|
| **Prisma Postgres** | Runs `npx create-db` → instant database, no account needed |
|
|
82
|
-
| **Supabase** | Installs CLI → authenticates → creates project → guides you to get connection string |
|
|
83
89
|
|
|
84
90
|
## Templates
|
|
85
91
|
|
|
86
|
-
| App Type | Framework |
|
|
87
|
-
|
|
88
|
-
| SaaS | Next.js | Full dashboard, pricing, billing, docs |
|
|
89
|
-
| SaaS | Astro | Auth, payments, webhooks |
|
|
90
|
-
| Blank | Next.js | Just auth + webhooks — build anything |
|
|
91
|
-
| Course | — | — | Coming soon |
|
|
92
|
-
| Community | — | — | Coming soon |
|
|
92
|
+
| App Type | Framework | Description |
|
|
93
|
+
|----------|-----------|-------------|
|
|
94
|
+
| SaaS | Next.js | Full dashboard, pricing, billing, docs |
|
|
95
|
+
| SaaS | Astro | Auth, payments, webhooks |
|
|
96
|
+
| Blank | Next.js | Just auth + webhooks — build anything |
|
|
93
97
|
|
|
94
98
|
## How it works
|
|
95
99
|
|
|
96
|
-
1. **
|
|
97
|
-
2. **Database** —
|
|
98
|
-
3. **
|
|
99
|
-
4. **
|
|
100
|
-
5. **
|
|
101
|
-
6. **
|
|
100
|
+
1. **Scaffold** — clone a starter template
|
|
101
|
+
2. **Database** — auto-provision via provider CLI
|
|
102
|
+
3. **GitHub** — create private repo, push code
|
|
103
|
+
4. **Vercel** — connect GitHub, set env vars, deploy
|
|
104
|
+
5. **Whop** — create OAuth app + webhook via API
|
|
105
|
+
6. **Agent skills** — install provider skills for AI coding assistants
|
|
102
106
|
|
|
103
107
|
## License
|
|
104
108
|
|
|
@@ -77,9 +77,8 @@ async function vercelDeploy(projectDir) {
|
|
|
77
77
|
s.stop("Vercel deployment failed");
|
|
78
78
|
const errorOutput = result.stderr || result.stdout;
|
|
79
79
|
if (errorOutput) {
|
|
80
|
-
p.log.error("Build output:");
|
|
81
80
|
const trimmed = errorOutput.length > 600 ? "..." + errorOutput.slice(-600) : errorOutput;
|
|
82
|
-
|
|
81
|
+
p.log.error(pc.dim(trimmed));
|
|
83
82
|
}
|
|
84
83
|
return null;
|
|
85
84
|
}
|
|
@@ -189,13 +188,16 @@ async function createGitHubRepo(projectDir, projectName) {
|
|
|
189
188
|
}
|
|
190
189
|
s = p2.spinner();
|
|
191
190
|
s.start("Pushing code to GitHub...");
|
|
192
|
-
let pushOk =
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
191
|
+
let pushOk = false;
|
|
192
|
+
for (const delay of [0, 5e3, 1e4]) {
|
|
193
|
+
if (delay > 0) {
|
|
194
|
+
s.stop(`Waiting for GitHub to propagate (${delay / 1e3}s)...`);
|
|
195
|
+
await new Promise((r) => setTimeout(r, delay));
|
|
196
|
+
s = p2.spinner();
|
|
197
|
+
s.start("Pushing code to GitHub...");
|
|
198
|
+
}
|
|
198
199
|
pushOk = exec("git push -u origin main", projectDir, 3e4).success;
|
|
200
|
+
if (pushOk) break;
|
|
199
201
|
}
|
|
200
202
|
if (!pushOk) {
|
|
201
203
|
s.stop("Could not push (push manually with: git push -u origin main)");
|
|
@@ -361,9 +363,6 @@ async function runDeployPipeline(options) {
|
|
|
361
363
|
}
|
|
362
364
|
}
|
|
363
365
|
githubRepoUrl = await createGitHubRepo(projectDir, repoFullName);
|
|
364
|
-
if (githubRepoUrl) {
|
|
365
|
-
p3.log.success(`Code pushed to ${pc3.cyan(githubRepoUrl)}`);
|
|
366
|
-
}
|
|
367
366
|
}
|
|
368
367
|
}
|
|
369
368
|
}
|
package/dist/cli-create.js
CHANGED
|
@@ -389,7 +389,7 @@ function isCancelled(value) {
|
|
|
389
389
|
var init_default = defineCommand({
|
|
390
390
|
meta: {
|
|
391
391
|
name: "create-whop-kit",
|
|
392
|
-
version: "0.
|
|
392
|
+
version: "1.0.0",
|
|
393
393
|
description: "Scaffold a new Whop-powered app with whop-kit"
|
|
394
394
|
},
|
|
395
395
|
args: {
|
|
@@ -683,7 +683,7 @@ var init_default = defineCommand({
|
|
|
683
683
|
});
|
|
684
684
|
if (!isCancelled(deployChoice) && deployChoice === "deploy") {
|
|
685
685
|
deployAttempted = true;
|
|
686
|
-
const { runDeployPipeline } = await import("./deploy-
|
|
686
|
+
const { runDeployPipeline } = await import("./deploy-IDZMWMUP.js");
|
|
687
687
|
deployResult = await runDeployPipeline({
|
|
688
688
|
projectDir,
|
|
689
689
|
projectName,
|
package/dist/cli-kit.js
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from "./chunk-HOQ5QQ2M.js";
|
|
10
10
|
import {
|
|
11
11
|
runDeployPipeline
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-OC5BYIPC.js";
|
|
13
13
|
import {
|
|
14
14
|
detectPackageManager,
|
|
15
15
|
exec
|
|
@@ -602,7 +602,7 @@ var upgrade_default = defineCommand7({
|
|
|
602
602
|
var main = defineCommand8({
|
|
603
603
|
meta: {
|
|
604
604
|
name: "whop-kit",
|
|
605
|
-
version: "0.
|
|
605
|
+
version: "1.0.0",
|
|
606
606
|
description: "Manage your Whop project"
|
|
607
607
|
},
|
|
608
608
|
subCommands: {
|