create-whop-kit 0.9.8 → 1.0.1
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,19 +188,21 @@ async function createGitHubRepo(projectDir, projectName) {
|
|
|
189
188
|
}
|
|
190
189
|
s = p2.spinner();
|
|
191
190
|
s.start("Pushing code to GitHub...");
|
|
191
|
+
const branchResult = exec("git branch --show-current", projectDir);
|
|
192
|
+
const branch = branchResult.success ? branchResult.stdout.trim() : "main";
|
|
192
193
|
let pushOk = false;
|
|
193
|
-
for (const delay of [0,
|
|
194
|
+
for (const delay of [0, 3e3, 7e3]) {
|
|
194
195
|
if (delay > 0) {
|
|
195
|
-
s.stop(`Waiting for GitHub to propagate
|
|
196
|
+
s.stop(`Waiting for GitHub to propagate...`);
|
|
196
197
|
await new Promise((r) => setTimeout(r, delay));
|
|
197
198
|
s = p2.spinner();
|
|
198
199
|
s.start("Pushing code to GitHub...");
|
|
199
200
|
}
|
|
200
|
-
pushOk = exec(
|
|
201
|
+
pushOk = exec(`git push -u origin ${branch}`, projectDir, 3e4).success;
|
|
201
202
|
if (pushOk) break;
|
|
202
203
|
}
|
|
203
204
|
if (!pushOk) {
|
|
204
|
-
s.stop(
|
|
205
|
+
s.stop(`Could not push (try manually: git push -u origin ${branch})`);
|
|
205
206
|
} else {
|
|
206
207
|
s.stop("Code pushed to GitHub");
|
|
207
208
|
}
|
package/dist/cli-create.js
CHANGED
|
@@ -346,6 +346,7 @@ function updatePackageName(projectDir, name) {
|
|
|
346
346
|
}
|
|
347
347
|
function initGit(projectDir) {
|
|
348
348
|
exec("git init", projectDir);
|
|
349
|
+
exec("git branch -m main", projectDir);
|
|
349
350
|
exec("git add -A", projectDir);
|
|
350
351
|
exec('git commit -m "initial: scaffolded with create-whop-kit"', projectDir);
|
|
351
352
|
}
|
|
@@ -389,7 +390,7 @@ function isCancelled(value) {
|
|
|
389
390
|
var init_default = defineCommand({
|
|
390
391
|
meta: {
|
|
391
392
|
name: "create-whop-kit",
|
|
392
|
-
version: "0.
|
|
393
|
+
version: "1.0.0",
|
|
393
394
|
description: "Scaffold a new Whop-powered app with whop-kit"
|
|
394
395
|
},
|
|
395
396
|
args: {
|
|
@@ -683,7 +684,7 @@ var init_default = defineCommand({
|
|
|
683
684
|
});
|
|
684
685
|
if (!isCancelled(deployChoice) && deployChoice === "deploy") {
|
|
685
686
|
deployAttempted = true;
|
|
686
|
-
const { runDeployPipeline } = await import("./deploy-
|
|
687
|
+
const { runDeployPipeline } = await import("./deploy-4OQC445A.js");
|
|
687
688
|
deployResult = await runDeployPipeline({
|
|
688
689
|
projectDir,
|
|
689
690
|
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-BQZUZXDZ.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: {
|