@revstackhq/cli 0.0.0-dev-20260227103607 → 0.0.0-dev-20260228062053
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/.turbo/turbo-build.log +51 -42
- package/CHANGELOG.md +18 -0
- package/dist/cli.js +622 -49
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts +0 -7
- package/dist/commands/init.js +443 -24
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +0 -6
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +0 -5
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/pull.d.ts +0 -7
- package/dist/commands/pull.js +120 -11
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.js +59 -14
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/templates/ai-agent-platform.d.ts +5 -0
- package/dist/commands/templates/ai-agent-platform.js +119 -0
- package/dist/commands/templates/ai-agent-platform.js.map +1 -0
- package/dist/commands/templates/b2b-saas.js +23 -10
- package/dist/commands/templates/b2b-saas.js.map +1 -1
- package/dist/commands/templates/developer-tools.d.ts +5 -0
- package/dist/commands/templates/developer-tools.js +131 -0
- package/dist/commands/templates/developer-tools.js.map +1 -0
- package/dist/commands/templates/ecommerce-platform.d.ts +5 -0
- package/dist/commands/templates/ecommerce-platform.js +144 -0
- package/dist/commands/templates/ecommerce-platform.js.map +1 -0
- package/dist/commands/templates/index.js +437 -23
- package/dist/commands/templates/index.js.map +1 -1
- package/dist/commands/templates/starter.d.ts +1 -0
- package/dist/commands/templates/starter.js +13 -8
- package/dist/commands/templates/starter.js.map +1 -1
- package/dist/commands/templates/usage-based.js +18 -4
- package/dist/commands/templates/usage-based.js.map +1 -1
- package/dist/utils/auth.d.ts +0 -5
- package/dist/utils/auth.js.map +1 -1
- package/dist/utils/config-loader.d.ts +0 -6
- package/dist/utils/config-loader.js +4 -0
- package/dist/utils/config-loader.js.map +1 -1
- package/package.json +2 -2
- package/src/commands/init.ts +6 -8
- package/src/commands/login.ts +0 -6
- package/src/commands/logout.ts +0 -5
- package/src/commands/pull.ts +148 -60
- package/src/commands/push.ts +67 -16
- package/src/commands/templates/ai-agent-platform.ts +114 -0
- package/src/commands/templates/b2b-saas.ts +23 -10
- package/src/commands/templates/developer-tools.ts +126 -0
- package/src/commands/templates/ecommerce-platform.ts +139 -0
- package/src/commands/templates/index.ts +6 -0
- package/src/commands/templates/starter.ts +14 -8
- package/src/commands/templates/usage-based.ts +18 -4
- package/src/utils/auth.ts +0 -6
- package/src/utils/config-loader.ts +6 -7
- package/tests/integration/pull.test.ts +6 -0
- package/tests/integration/push.test.ts +3 -0
|
@@ -17,9 +17,9 @@ export const addons = {
|
|
|
17
17
|
name: "5 Extra Seats",
|
|
18
18
|
description: "Add 5 more team members to your workspace.",
|
|
19
19
|
type: "recurring",
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
amount: 1500,
|
|
21
|
+
currency: "USD",
|
|
22
|
+
billing_interval: "monthly",
|
|
23
23
|
features: {
|
|
24
24
|
seats: { value_limit: 5, type: "increment", is_hard_limit: false },
|
|
25
25
|
}
|
|
@@ -28,9 +28,9 @@ export const addons = {
|
|
|
28
28
|
name: "Priority Support",
|
|
29
29
|
description: "24/7 Slack channel support.",
|
|
30
30
|
type: "recurring",
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
amount: 9900,
|
|
32
|
+
currency: "USD",
|
|
33
|
+
billing_interval: "monthly",
|
|
34
34
|
features: {
|
|
35
35
|
priority_support: { has_access: true },
|
|
36
36
|
}
|
|
@@ -56,25 +56,30 @@ export const plans = {
|
|
|
56
56
|
is_default: false,
|
|
57
57
|
is_public: true,
|
|
58
58
|
type: "paid",
|
|
59
|
-
available_addons: ["extra_seats", "vip_support"],
|
|
60
59
|
prices: [
|
|
61
|
-
{ amount: 2900, currency: "USD", billing_interval: "monthly", trial_period_days: 14 }
|
|
60
|
+
{ amount: 2900, currency: "USD", billing_interval: "monthly", trial_period_days: 14, available_addons: ["extra_seats", "vip_support"] }
|
|
62
61
|
],
|
|
63
62
|
features: {
|
|
64
63
|
seats: { value_limit: 5, is_hard_limit: true },
|
|
65
64
|
},
|
|
66
65
|
}),
|
|
67
66
|
};
|
|
67
|
+
`,
|
|
68
|
+
coupons: `import type { DiscountDef } from "@revstackhq/core";
|
|
69
|
+
|
|
70
|
+
export const coupons: DiscountDef[] = [];
|
|
68
71
|
`,
|
|
69
72
|
index: `import { defineConfig } from "@revstackhq/core";
|
|
70
73
|
import { features } from "./features";
|
|
71
74
|
import { addons } from "./addons";
|
|
72
75
|
import { plans } from "./plans";
|
|
76
|
+
import { coupons } from "./coupons";
|
|
73
77
|
|
|
74
78
|
export default defineConfig({
|
|
75
79
|
features,
|
|
76
80
|
addons,
|
|
77
81
|
plans,
|
|
82
|
+
coupons,
|
|
78
83
|
});
|
|
79
84
|
`,
|
|
80
85
|
root: `import config from "./revstack";
|
|
@@ -101,9 +106,9 @@ export const addons = {
|
|
|
101
106
|
name: "10 Extra Users",
|
|
102
107
|
description: "Add 10 more active users to your workspace.",
|
|
103
108
|
type: "recurring",
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
109
|
+
amount: 5000,
|
|
110
|
+
currency: "USD",
|
|
111
|
+
billing_interval: "monthly",
|
|
107
112
|
features: {
|
|
108
113
|
active_users: { value_limit: 10, type: "increment", is_hard_limit: true },
|
|
109
114
|
}
|
|
@@ -112,12 +117,25 @@ export const addons = {
|
|
|
112
117
|
name: "Dedicated Support",
|
|
113
118
|
description: "Enterprise SLA with 1-hour response time.",
|
|
114
119
|
type: "recurring",
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
120
|
+
amount: 49900,
|
|
121
|
+
currency: "USD",
|
|
122
|
+
billing_interval: "monthly",
|
|
118
123
|
features: {}
|
|
119
124
|
})
|
|
120
125
|
};
|
|
126
|
+
`,
|
|
127
|
+
coupons: `import type { DiscountDef } from "@revstackhq/core";
|
|
128
|
+
|
|
129
|
+
export const coupons: DiscountDef[] = [
|
|
130
|
+
{
|
|
131
|
+
code: "ENTERPRISE_B2B",
|
|
132
|
+
name: "Annual Contract Rebate",
|
|
133
|
+
type: "amount",
|
|
134
|
+
value: 50000,
|
|
135
|
+
duration: "once",
|
|
136
|
+
applies_to_plans: ["enterprise"]
|
|
137
|
+
}
|
|
138
|
+
];
|
|
121
139
|
`,
|
|
122
140
|
plans: `import { definePlan } from "@revstackhq/core";
|
|
123
141
|
import { features } from "./features";
|
|
@@ -137,9 +155,8 @@ export const plans = {
|
|
|
137
155
|
is_default: false,
|
|
138
156
|
is_public: true,
|
|
139
157
|
type: "paid",
|
|
140
|
-
available_addons: ["extra_users"],
|
|
141
158
|
prices: [
|
|
142
|
-
{ amount: 9900, currency: "USD", billing_interval: "monthly" }
|
|
159
|
+
{ amount: 9900, currency: "USD", billing_interval: "monthly", available_addons: ["extra_users"] }
|
|
143
160
|
],
|
|
144
161
|
features: {
|
|
145
162
|
active_users: { value_limit: 10, is_hard_limit: true },
|
|
@@ -153,9 +170,8 @@ export const plans = {
|
|
|
153
170
|
is_default: false,
|
|
154
171
|
is_public: true,
|
|
155
172
|
type: "paid",
|
|
156
|
-
available_addons: ["extra_users", "dedicated_support"],
|
|
157
173
|
prices: [
|
|
158
|
-
{ amount: 49900, currency: "USD", billing_interval: "monthly" }
|
|
174
|
+
{ amount: 49900, currency: "USD", billing_interval: "monthly", available_addons: ["extra_users", "dedicated_support"] }
|
|
159
175
|
],
|
|
160
176
|
features: {
|
|
161
177
|
active_users: { value_limit: 100, is_hard_limit: false },
|
|
@@ -169,11 +185,13 @@ export const plans = {
|
|
|
169
185
|
import { features } from "./features";
|
|
170
186
|
import { addons } from "./addons";
|
|
171
187
|
import { plans } from "./plans";
|
|
188
|
+
import { coupons } from "./coupons";
|
|
172
189
|
|
|
173
190
|
export default defineConfig({
|
|
174
191
|
features,
|
|
175
192
|
addons,
|
|
176
193
|
plans,
|
|
194
|
+
coupons,
|
|
177
195
|
});
|
|
178
196
|
`,
|
|
179
197
|
root: `import config from "./revstack";
|
|
@@ -199,12 +217,24 @@ export const addons = {
|
|
|
199
217
|
name: "Premium Support",
|
|
200
218
|
description: "24/7 dedicated support.",
|
|
201
219
|
type: "recurring",
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
220
|
+
amount: 20000,
|
|
221
|
+
currency: "USD",
|
|
222
|
+
billing_interval: "monthly",
|
|
205
223
|
features: {}
|
|
206
224
|
})
|
|
207
225
|
};
|
|
226
|
+
`,
|
|
227
|
+
coupons: `import type { DiscountDef } from "@revstackhq/core";
|
|
228
|
+
|
|
229
|
+
export const coupons: DiscountDef[] = [
|
|
230
|
+
{
|
|
231
|
+
code: "STARTUP_ACCELERATOR",
|
|
232
|
+
name: "Startup Program Credits",
|
|
233
|
+
type: "amount",
|
|
234
|
+
value: 500000, // $5,000 credit
|
|
235
|
+
duration: "forever",
|
|
236
|
+
}
|
|
237
|
+
];
|
|
208
238
|
`,
|
|
209
239
|
plans: `import { definePlan } from "@revstackhq/core";
|
|
210
240
|
import { features } from "./features";
|
|
@@ -224,12 +254,12 @@ export const plans = {
|
|
|
224
254
|
is_default: false,
|
|
225
255
|
is_public: true,
|
|
226
256
|
type: "paid",
|
|
227
|
-
available_addons: ["premium_support"],
|
|
228
257
|
prices: [
|
|
229
258
|
{
|
|
230
259
|
amount: 0,
|
|
231
260
|
currency: "USD",
|
|
232
261
|
billing_interval: "monthly",
|
|
262
|
+
available_addons: ["premium_support"],
|
|
233
263
|
overage_configuration: {
|
|
234
264
|
api_requests: { overage_amount: 15, overage_unit: 1000 }, // $0.15 per 1k extra requests
|
|
235
265
|
storage_gb: { overage_amount: 50, overage_unit: 1 }, // $0.50 per extra GB
|
|
@@ -247,11 +277,392 @@ export const plans = {
|
|
|
247
277
|
import { features } from "./features";
|
|
248
278
|
import { addons } from "./addons";
|
|
249
279
|
import { plans } from "./plans";
|
|
280
|
+
import { coupons } from "./coupons";
|
|
281
|
+
|
|
282
|
+
export default defineConfig({
|
|
283
|
+
features,
|
|
284
|
+
addons,
|
|
285
|
+
plans,
|
|
286
|
+
coupons,
|
|
287
|
+
});
|
|
288
|
+
`,
|
|
289
|
+
root: `import config from "./revstack";
|
|
290
|
+
|
|
291
|
+
export default config;
|
|
292
|
+
`
|
|
293
|
+
};
|
|
294
|
+
|
|
295
|
+
// src/commands/templates/ecommerce-platform.ts
|
|
296
|
+
var ecommercePlatform = {
|
|
297
|
+
features: `import { defineFeature } from "@revstackhq/core";
|
|
298
|
+
|
|
299
|
+
export const features = {
|
|
300
|
+
orders: defineFeature({ name: "Monthly Orders", type: "metered", unit_type: "count" }),
|
|
301
|
+
storefronts: defineFeature({ name: "Storefronts", type: "static", unit_type: "count" }),
|
|
302
|
+
advanced_analytics: defineFeature({ name: "Advanced Analytics", type: "boolean", unit_type: "custom" }),
|
|
303
|
+
};
|
|
304
|
+
`,
|
|
305
|
+
addons: `import { defineAddon } from "@revstackhq/core";
|
|
306
|
+
import { features } from "./features";
|
|
307
|
+
|
|
308
|
+
export const addons = {
|
|
309
|
+
extra_storefront: defineAddon<typeof features>({
|
|
310
|
+
name: "Additional Storefront",
|
|
311
|
+
description: "Launch a new brand under the same account.",
|
|
312
|
+
type: "recurring",
|
|
313
|
+
amount: 5000,
|
|
314
|
+
currency: "USD",
|
|
315
|
+
billing_interval: "monthly",
|
|
316
|
+
features: {
|
|
317
|
+
storefronts: { value_limit: 1, type: "increment", is_hard_limit: true },
|
|
318
|
+
}
|
|
319
|
+
}),
|
|
320
|
+
custom_domain_ssl: defineAddon<typeof features>({
|
|
321
|
+
name: "Custom Domain & SSL",
|
|
322
|
+
description: "Secure your storefront with a custom domain.",
|
|
323
|
+
type: "recurring",
|
|
324
|
+
amount: 1500,
|
|
325
|
+
currency: "USD",
|
|
326
|
+
billing_interval: "monthly",
|
|
327
|
+
features: {}
|
|
328
|
+
})
|
|
329
|
+
};
|
|
330
|
+
`,
|
|
331
|
+
plans: `import { definePlan } from "@revstackhq/core";
|
|
332
|
+
import { features } from "./features";
|
|
333
|
+
|
|
334
|
+
export const plans = {
|
|
335
|
+
default: definePlan<typeof features>({
|
|
336
|
+
name: "Default Sandbox",
|
|
337
|
+
description: "Test your store safely before going live.",
|
|
338
|
+
is_default: true,
|
|
339
|
+
is_public: false,
|
|
340
|
+
type: "free",
|
|
341
|
+
features: {},
|
|
342
|
+
}),
|
|
343
|
+
basic: definePlan<typeof features>({
|
|
344
|
+
name: "Basic Commerce",
|
|
345
|
+
description: "Everything you need to sell online.",
|
|
346
|
+
is_default: false,
|
|
347
|
+
is_public: true,
|
|
348
|
+
type: "paid",
|
|
349
|
+
prices: [
|
|
350
|
+
{
|
|
351
|
+
amount: 2900,
|
|
352
|
+
currency: "USD",
|
|
353
|
+
billing_interval: "monthly",
|
|
354
|
+
available_addons: ["custom_domain_ssl"],
|
|
355
|
+
overage_configuration: {
|
|
356
|
+
orders: { overage_amount: 50, overage_unit: 100 } // $0.50 per 100 extra orders
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
],
|
|
360
|
+
features: {
|
|
361
|
+
orders: { value_limit: 500, is_hard_limit: false, reset_period: "monthly" },
|
|
362
|
+
storefronts: { value_limit: 1, is_hard_limit: true },
|
|
363
|
+
advanced_analytics: { value_bool: false },
|
|
364
|
+
},
|
|
365
|
+
}),
|
|
366
|
+
pro: definePlan<typeof features>({
|
|
367
|
+
name: "Pro Seller",
|
|
368
|
+
description: "For scaling businesses.",
|
|
369
|
+
is_default: false,
|
|
370
|
+
is_public: true,
|
|
371
|
+
type: "paid",
|
|
372
|
+
prices: [
|
|
373
|
+
{
|
|
374
|
+
amount: 19900,
|
|
375
|
+
currency: "USD",
|
|
376
|
+
billing_interval: "monthly",
|
|
377
|
+
available_addons: ["extra_storefront", "custom_domain_ssl"],
|
|
378
|
+
overage_configuration: {
|
|
379
|
+
orders: { overage_amount: 30, overage_unit: 100 } // $0.30 per 100 extra orders
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
],
|
|
383
|
+
features: {
|
|
384
|
+
orders: { value_limit: 5000, is_hard_limit: false, reset_period: "monthly" },
|
|
385
|
+
storefronts: { value_limit: 2, is_hard_limit: true },
|
|
386
|
+
advanced_analytics: { value_bool: true },
|
|
387
|
+
},
|
|
388
|
+
}),
|
|
389
|
+
};
|
|
390
|
+
`,
|
|
391
|
+
coupons: `import type { DiscountDef } from "@revstackhq/core";
|
|
392
|
+
|
|
393
|
+
export const coupons: DiscountDef[] = [
|
|
394
|
+
{
|
|
395
|
+
code: "BFCM_PROMO",
|
|
396
|
+
name: "Black Friday Cyber Monday 20%",
|
|
397
|
+
type: "percent",
|
|
398
|
+
value: 20,
|
|
399
|
+
duration: "repeating",
|
|
400
|
+
duration_in_months: 6,
|
|
401
|
+
expires_at: "2024-11-29T00:00:00Z", // Ephemeral timestamp
|
|
402
|
+
max_redemptions: 5000
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
code: "FIRST_MONTH_FREE",
|
|
406
|
+
name: "New Store Launch",
|
|
407
|
+
type: "percent",
|
|
408
|
+
value: 100,
|
|
409
|
+
duration: "repeating",
|
|
410
|
+
duration_in_months: 1,
|
|
411
|
+
applies_to_plans: ["basic"]
|
|
412
|
+
}
|
|
413
|
+
];
|
|
414
|
+
`,
|
|
415
|
+
index: `import { defineConfig } from "@revstackhq/core";
|
|
416
|
+
import { features } from "./features";
|
|
417
|
+
import { addons } from "./addons";
|
|
418
|
+
import { plans } from "./plans";
|
|
419
|
+
import { coupons } from "./coupons";
|
|
420
|
+
|
|
421
|
+
export default defineConfig({
|
|
422
|
+
features,
|
|
423
|
+
addons,
|
|
424
|
+
plans,
|
|
425
|
+
coupons,
|
|
426
|
+
});
|
|
427
|
+
`,
|
|
428
|
+
root: `import config from "./revstack";
|
|
429
|
+
|
|
430
|
+
export default config;
|
|
431
|
+
`
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
// src/commands/templates/developer-tools.ts
|
|
435
|
+
var developerTools = {
|
|
436
|
+
features: `import { defineFeature } from "@revstackhq/core";
|
|
437
|
+
|
|
438
|
+
export const features = {
|
|
439
|
+
bandwidth_gb: defineFeature({ name: "Bandwidth (GB)", type: "metered", unit_type: "custom" }),
|
|
440
|
+
compute_hours: defineFeature({ name: "Compute (GB-Hours)", type: "metered", unit_type: "custom" }),
|
|
441
|
+
serverless_invokes: defineFeature({ name: "Serverless Invocations", type: "metered", unit_type: "count" }),
|
|
442
|
+
sso_auth: defineFeature({ name: "Enterprise SSO", type: "boolean", unit_type: "custom" })
|
|
443
|
+
};
|
|
444
|
+
`,
|
|
445
|
+
addons: `import { defineAddon } from "@revstackhq/core";
|
|
446
|
+
import { features } from "./features";
|
|
447
|
+
|
|
448
|
+
export const addons = {
|
|
449
|
+
dedicated_ipv4: defineAddon<typeof features>({
|
|
450
|
+
name: "Dedicated IPv4 Address",
|
|
451
|
+
description: "Assign a static IP to your deployments.",
|
|
452
|
+
type: "recurring",
|
|
453
|
+
amount: 500,
|
|
454
|
+
currency: "USD",
|
|
455
|
+
billing_interval: "monthly",
|
|
456
|
+
features: {}
|
|
457
|
+
}),
|
|
458
|
+
premium_sla: defineAddon<typeof features>({
|
|
459
|
+
name: "Premium Escalation SLA",
|
|
460
|
+
description: "Direct engineering support with 30-min response time.",
|
|
461
|
+
type: "recurring",
|
|
462
|
+
amount: 150000,
|
|
463
|
+
currency: "USD",
|
|
464
|
+
billing_interval: "monthly",
|
|
465
|
+
features: {}
|
|
466
|
+
})
|
|
467
|
+
};
|
|
468
|
+
`,
|
|
469
|
+
plans: `import { definePlan } from "@revstackhq/core";
|
|
470
|
+
import { features } from "./features";
|
|
471
|
+
|
|
472
|
+
export const plans = {
|
|
473
|
+
default: definePlan<typeof features>({
|
|
474
|
+
name: "Hobby",
|
|
475
|
+
description: "For personal or non-commercial projects.",
|
|
476
|
+
is_default: true,
|
|
477
|
+
is_public: true,
|
|
478
|
+
type: "free",
|
|
479
|
+
features: {
|
|
480
|
+
bandwidth_gb: { value_limit: 100, is_hard_limit: true, reset_period: "monthly" },
|
|
481
|
+
compute_hours: { value_limit: 100, is_hard_limit: true, reset_period: "monthly" },
|
|
482
|
+
serverless_invokes: { value_limit: 100000, is_hard_limit: true, reset_period: "monthly" },
|
|
483
|
+
sso_auth: { value_bool: false }
|
|
484
|
+
},
|
|
485
|
+
}),
|
|
486
|
+
pro: definePlan<typeof features>({
|
|
487
|
+
name: "Pro",
|
|
488
|
+
description: "For production apps and growing teams.",
|
|
489
|
+
is_default: false,
|
|
490
|
+
is_public: true,
|
|
491
|
+
type: "paid",
|
|
492
|
+
prices: [
|
|
493
|
+
{
|
|
494
|
+
amount: 2000,
|
|
495
|
+
currency: "USD",
|
|
496
|
+
billing_interval: "monthly",
|
|
497
|
+
available_addons: ["dedicated_ipv4"],
|
|
498
|
+
overage_configuration: {
|
|
499
|
+
bandwidth_gb: { overage_amount: 40, overage_unit: 100 }, // $0.40 per 100GB extra
|
|
500
|
+
compute_hours: { overage_amount: 2, overage_unit: 1 }, // $0.02 per extra GB hr
|
|
501
|
+
serverless_invokes: { overage_amount: 50, overage_unit: 1000000 } // $0.50 per 1M invokes
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
],
|
|
505
|
+
features: {
|
|
506
|
+
bandwidth_gb: { value_limit: 1000, is_hard_limit: false, reset_period: "monthly" },
|
|
507
|
+
compute_hours: { value_limit: 1000, is_hard_limit: false, reset_period: "monthly" },
|
|
508
|
+
serverless_invokes: { value_limit: 5000000, is_hard_limit: false, reset_period: "monthly" },
|
|
509
|
+
sso_auth: { value_bool: false }
|
|
510
|
+
},
|
|
511
|
+
}),
|
|
512
|
+
enterprise: definePlan<typeof features>({
|
|
513
|
+
name: "Enterprise",
|
|
514
|
+
description: "Custom infrastructure and legal compliance.",
|
|
515
|
+
is_default: false,
|
|
516
|
+
is_public: true,
|
|
517
|
+
type: "custom",
|
|
518
|
+
prices: [],
|
|
519
|
+
features: {
|
|
520
|
+
bandwidth_gb: { value_limit: 50000, is_hard_limit: false, reset_period: "monthly" },
|
|
521
|
+
compute_hours: { value_limit: 10000, is_hard_limit: false, reset_period: "monthly" },
|
|
522
|
+
serverless_invokes: { value_limit: 100000000, is_hard_limit: false, reset_period: "monthly" },
|
|
523
|
+
sso_auth: { value_bool: true }
|
|
524
|
+
},
|
|
525
|
+
}),
|
|
526
|
+
};
|
|
527
|
+
`,
|
|
528
|
+
coupons: `import type { DiscountDef } from "@revstackhq/core";
|
|
529
|
+
|
|
530
|
+
export const coupons: DiscountDef[] = [
|
|
531
|
+
{
|
|
532
|
+
code: "YCOMBINATOR",
|
|
533
|
+
name: "YC Startup Accelerator Credit",
|
|
534
|
+
type: "amount",
|
|
535
|
+
value: 1000000, // $10,000 credit
|
|
536
|
+
duration: "forever",
|
|
537
|
+
applies_to_plans: ["pro", "enterprise"]
|
|
538
|
+
}
|
|
539
|
+
];
|
|
540
|
+
`,
|
|
541
|
+
index: `import { defineConfig } from "@revstackhq/core";
|
|
542
|
+
import { features } from "./features";
|
|
543
|
+
import { addons } from "./addons";
|
|
544
|
+
import { plans } from "./plans";
|
|
545
|
+
import { coupons } from "./coupons";
|
|
546
|
+
|
|
547
|
+
export default defineConfig({
|
|
548
|
+
features,
|
|
549
|
+
addons,
|
|
550
|
+
plans,
|
|
551
|
+
coupons,
|
|
552
|
+
});
|
|
553
|
+
`,
|
|
554
|
+
root: `import config from "./revstack";
|
|
555
|
+
|
|
556
|
+
export default config;
|
|
557
|
+
`
|
|
558
|
+
};
|
|
559
|
+
|
|
560
|
+
// src/commands/templates/ai-agent-platform.ts
|
|
561
|
+
var aiAgentPlatform = {
|
|
562
|
+
features: `import { defineFeature } from "@revstackhq/core";
|
|
563
|
+
|
|
564
|
+
export const features = {
|
|
565
|
+
llm_tokens: defineFeature({ name: "LLM Tokens (Input+Output)", type: "metered", unit_type: "count" }),
|
|
566
|
+
active_agents: defineFeature({ name: "Concurrent Agents", type: "static", unit_type: "count" }),
|
|
567
|
+
vector_storage_gb: defineFeature({ name: "Vector Database (GB)", type: "metered", unit_type: "custom" }),
|
|
568
|
+
custom_fine_tuning: defineFeature({ name: "Model Fine-Tuning", type: "boolean", unit_type: "custom" })
|
|
569
|
+
};
|
|
570
|
+
`,
|
|
571
|
+
addons: `import { defineAddon } from "@revstackhq/core";
|
|
572
|
+
import { features } from "./features";
|
|
573
|
+
|
|
574
|
+
export const addons = {
|
|
575
|
+
extra_vector_storage: defineAddon<typeof features>({
|
|
576
|
+
name: "10GB Vector Storage Block",
|
|
577
|
+
description: "Retain long-term memory for your AI agents.",
|
|
578
|
+
type: "recurring",
|
|
579
|
+
amount: 1000,
|
|
580
|
+
currency: "USD",
|
|
581
|
+
billing_interval: "monthly",
|
|
582
|
+
features: {
|
|
583
|
+
vector_storage_gb: { value_limit: 10, type: "increment", is_hard_limit: false }
|
|
584
|
+
}
|
|
585
|
+
}),
|
|
586
|
+
fine_tuning_job: defineAddon<typeof features>({
|
|
587
|
+
name: "Fine-Tuning Job Runner",
|
|
588
|
+
description: "Pay once to run a distributed model fine-tuning job on your dataset.",
|
|
589
|
+
type: "one_time",
|
|
590
|
+
amount: 25000,
|
|
591
|
+
currency: "USD",
|
|
592
|
+
features: {
|
|
593
|
+
custom_fine_tuning: { has_access: true }
|
|
594
|
+
}
|
|
595
|
+
})
|
|
596
|
+
};
|
|
597
|
+
`,
|
|
598
|
+
plans: `import { definePlan } from "@revstackhq/core";
|
|
599
|
+
import { features } from "./features";
|
|
600
|
+
|
|
601
|
+
export const plans = {
|
|
602
|
+
default: definePlan<typeof features>({
|
|
603
|
+
name: "Free Preview",
|
|
604
|
+
description: "Trial sandbox using shared models.",
|
|
605
|
+
is_default: true,
|
|
606
|
+
is_public: true,
|
|
607
|
+
type: "free",
|
|
608
|
+
features: {
|
|
609
|
+
llm_tokens: { value_limit: 100000, is_hard_limit: true, reset_period: "monthly" },
|
|
610
|
+
active_agents: { value_limit: 1, is_hard_limit: true },
|
|
611
|
+
vector_storage_gb: { value_limit: 0, is_hard_limit: true, reset_period: "never" },
|
|
612
|
+
custom_fine_tuning: { value_bool: false }
|
|
613
|
+
},
|
|
614
|
+
}),
|
|
615
|
+
builder: definePlan<typeof features>({
|
|
616
|
+
name: "AI Builder",
|
|
617
|
+
description: "High concurrency and dedicated model endpoints.",
|
|
618
|
+
is_default: false,
|
|
619
|
+
is_public: true,
|
|
620
|
+
type: "paid",
|
|
621
|
+
prices: [
|
|
622
|
+
{
|
|
623
|
+
amount: 4900,
|
|
624
|
+
currency: "USD",
|
|
625
|
+
billing_interval: "monthly",
|
|
626
|
+
available_addons: ["extra_vector_storage", "fine_tuning_job"],
|
|
627
|
+
overage_configuration: {
|
|
628
|
+
llm_tokens: { overage_amount: 15, overage_unit: 1000000 } // $0.15 per 1M tokens
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
],
|
|
632
|
+
features: {
|
|
633
|
+
llm_tokens: { value_limit: 10000000, is_hard_limit: false, reset_period: "monthly" }, // 10M free tokens included
|
|
634
|
+
active_agents: { value_limit: 10, is_hard_limit: true },
|
|
635
|
+
vector_storage_gb: { value_limit: 5, is_hard_limit: true, reset_period: "never" }, // Hard limit until they buy the addon
|
|
636
|
+
custom_fine_tuning: { value_bool: false } // Only unlocked via the one-off addon
|
|
637
|
+
},
|
|
638
|
+
}),
|
|
639
|
+
};
|
|
640
|
+
`,
|
|
641
|
+
coupons: `import type { DiscountDef } from "@revstackhq/core";
|
|
642
|
+
|
|
643
|
+
export const coupons: DiscountDef[] = [
|
|
644
|
+
{
|
|
645
|
+
code: "BETA_TESTER",
|
|
646
|
+
name: "Early Beta Access Discount",
|
|
647
|
+
type: "percent",
|
|
648
|
+
value: 50,
|
|
649
|
+
duration: "repeating",
|
|
650
|
+
duration_in_months: 12,
|
|
651
|
+
max_redemptions: 100
|
|
652
|
+
}
|
|
653
|
+
];
|
|
654
|
+
`,
|
|
655
|
+
index: `import { defineConfig } from "@revstackhq/core";
|
|
656
|
+
import { features } from "./features";
|
|
657
|
+
import { addons } from "./addons";
|
|
658
|
+
import { plans } from "./plans";
|
|
659
|
+
import { coupons } from "./coupons";
|
|
250
660
|
|
|
251
661
|
export default defineConfig({
|
|
252
662
|
features,
|
|
253
663
|
addons,
|
|
254
664
|
plans,
|
|
665
|
+
coupons,
|
|
255
666
|
});
|
|
256
667
|
`,
|
|
257
668
|
root: `import config from "./revstack";
|
|
@@ -264,7 +675,10 @@ export default config;
|
|
|
264
675
|
var TEMPLATES = {
|
|
265
676
|
starter,
|
|
266
677
|
"b2b-saas": b2bSaas,
|
|
267
|
-
"usage-based": usageBased
|
|
678
|
+
"usage-based": usageBased,
|
|
679
|
+
"ecommerce-platform": ecommercePlatform,
|
|
680
|
+
"developer-tools": developerTools,
|
|
681
|
+
"ai-agent-platform": aiAgentPlatform
|
|
268
682
|
};
|
|
269
683
|
export {
|
|
270
684
|
TEMPLATES
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/commands/templates/starter.ts","../../../src/commands/templates/b2b-saas.ts","../../../src/commands/templates/usage-based.ts","../../../src/commands/templates/index.ts"],"sourcesContent":["export interface TemplateConfig {\r\n features: string;\r\n addons: string;\r\n plans: string;\r\n index: string;\r\n root: string;\r\n}\r\n\r\nexport const starter: TemplateConfig = {\r\n features: `import { defineFeature } from \"@revstackhq/core\";\r\n\r\nexport const features = {\r\n seats: defineFeature({ name: \"Seats\", type: \"static\", unit_type: \"count\" }),\r\n priority_support: defineFeature({ name: \"Priority Support\", type: \"boolean\", unit_type: \"custom\" }),\r\n};\r\n`,\r\n addons: `import { defineAddon } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const addons = {\r\n extra_seats: defineAddon<typeof features>({\r\n name: \"5 Extra Seats\",\r\n description: \"Add 5 more team members to your workspace.\",\r\n type: \"recurring\",\r\n prices: [\r\n { amount: 1500, currency: \"USD\", billing_interval: \"monthly\" }\r\n ],\r\n features: {\r\n seats: { value_limit: 5, type: \"increment\", is_hard_limit: false },\r\n }\r\n }),\r\n vip_support: defineAddon<typeof features>({\r\n name: \"Priority Support\",\r\n description: \"24/7 Slack channel support.\",\r\n type: \"recurring\",\r\n prices: [\r\n { amount: 9900, currency: \"USD\", billing_interval: \"monthly\" }\r\n ],\r\n features: {\r\n priority_support: { has_access: true },\r\n }\r\n })\r\n};\r\n`,\r\n plans: `import { definePlan } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const plans = {\r\n // DO NOT DELETE: Automatically created default plan for guests.\r\n default: definePlan<typeof features>({\r\n name: \"Default\",\r\n description: \"Automatically created default plan for guests.\",\r\n is_default: true,\r\n is_public: false,\r\n type: \"free\",\r\n features: {},\r\n }),\r\n pro: definePlan<typeof features>({\r\n name: \"Pro\",\r\n description: \"For professional teams.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n available_addons: [\"extra_seats\", \"vip_support\"],\r\n prices: [\r\n { amount: 2900, currency: \"USD\", billing_interval: \"monthly\", trial_period_days: 14 }\r\n ],\r\n features: {\r\n seats: { value_limit: 5, is_hard_limit: true },\r\n },\r\n }),\r\n};\r\n`,\r\n index: `import { defineConfig } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\nimport { addons } from \"./addons\";\r\nimport { plans } from \"./plans\";\r\n\r\nexport default defineConfig({\r\n features,\r\n addons,\r\n plans,\r\n});\r\n`,\r\n root: `import config from \"./revstack\";\r\n\r\nexport default config;\r\n`,\r\n};\r\n","import { TemplateConfig } from \"./starter\";\r\n\r\nexport const b2bSaas: TemplateConfig = {\r\n features: `import { defineFeature } from \"@revstackhq/core\";\r\n\r\nexport const features = {\r\n active_users: defineFeature({ name: \"Active Users\", type: \"static\", unit_type: \"count\" }),\r\n api_access: defineFeature({ name: \"API Access\", type: \"boolean\", unit_type: \"custom\" }),\r\n custom_domain: defineFeature({ name: \"Custom Domain\", type: \"boolean\", unit_type: \"custom\" }),\r\n};\r\n`,\r\n addons: `import { defineAddon } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const addons = {\r\n extra_users: defineAddon<typeof features>({\r\n name: \"10 Extra Users\",\r\n description: \"Add 10 more active users to your workspace.\",\r\n type: \"recurring\",\r\n prices: [\r\n { amount: 5000, currency: \"USD\", billing_interval: \"monthly\" }\r\n ],\r\n features: {\r\n active_users: { value_limit: 10, type: \"increment\", is_hard_limit: true },\r\n }\r\n }),\r\n dedicated_support: defineAddon<typeof features>({\r\n name: \"Dedicated Support\",\r\n description: \"Enterprise SLA with 1-hour response time.\",\r\n type: \"recurring\",\r\n prices: [\r\n { amount: 49900, currency: \"USD\", billing_interval: \"monthly\" }\r\n ],\r\n features: {}\r\n })\r\n};\r\n`,\r\n plans: `import { definePlan } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const plans = {\r\n default: definePlan<typeof features>({\r\n name: \"Default\",\r\n description: \"Automatically created default plan for guests.\",\r\n is_default: true,\r\n is_public: false,\r\n type: \"free\",\r\n features: {},\r\n }),\r\n startup: definePlan<typeof features>({\r\n name: \"Startup\",\r\n description: \"For small teams getting started.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n available_addons: [\"extra_users\"],\r\n prices: [\r\n { amount: 9900, currency: \"USD\", billing_interval: \"monthly\" }\r\n ],\r\n features: {\r\n active_users: { value_limit: 10, is_hard_limit: true },\r\n api_access: { value_bool: false },\r\n custom_domain: { value_bool: false },\r\n },\r\n }),\r\n enterprise: definePlan<typeof features>({\r\n name: \"Enterprise\",\r\n description: \"Advanced features for scale.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n available_addons: [\"extra_users\", \"dedicated_support\"],\r\n prices: [\r\n { amount: 49900, currency: \"USD\", billing_interval: \"monthly\" }\r\n ],\r\n features: {\r\n active_users: { value_limit: 100, is_hard_limit: false },\r\n api_access: { value_bool: true },\r\n custom_domain: { value_bool: true },\r\n },\r\n }),\r\n};\r\n`,\r\n index: `import { defineConfig } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\nimport { addons } from \"./addons\";\r\nimport { plans } from \"./plans\";\r\n\r\nexport default defineConfig({\r\n features,\r\n addons,\r\n plans,\r\n});\r\n`,\r\n root: `import config from \"./revstack\";\r\n\r\nexport default config;\r\n`,\r\n};\r\n","import { TemplateConfig } from \"./starter\";\r\n\r\nexport const usageBased: TemplateConfig = {\r\n features: `import { defineFeature } from \"@revstackhq/core\";\r\n\r\nexport const features = {\r\n api_requests: defineFeature({ name: \"API Requests\", type: \"metered\", unit_type: \"requests\" }),\r\n storage_gb: defineFeature({ name: \"Storage (GB)\", type: \"metered\", unit_type: \"custom\" }),\r\n};\r\n`,\r\n addons: `import { defineAddon } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const addons = {\r\n premium_support: defineAddon<typeof features>({\r\n name: \"Premium Support\",\r\n description: \"24/7 dedicated support.\",\r\n type: \"recurring\",\r\n prices: [\r\n { amount: 20000, currency: \"USD\", billing_interval: \"monthly\" }\r\n ],\r\n features: {}\r\n })\r\n};\r\n`,\r\n plans: `import { definePlan } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const plans = {\r\n default: definePlan<typeof features>({\r\n name: \"Default\",\r\n description: \"Automatically created default plan for guests.\",\r\n is_default: true,\r\n is_public: false,\r\n type: \"free\",\r\n features: {},\r\n }),\r\n pay_as_you_go: definePlan<typeof features>({\r\n name: \"Pay As You Go\",\r\n description: \"Flexible usage-based pricing.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n available_addons: [\"premium_support\"],\r\n prices: [\r\n {\r\n amount: 0,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n overage_configuration: {\r\n api_requests: { overage_amount: 15, overage_unit: 1000 }, // $0.15 per 1k extra requests\r\n storage_gb: { overage_amount: 50, overage_unit: 1 }, // $0.50 per extra GB\r\n }\r\n } // Base platform fee\r\n ],\r\n features: {\r\n api_requests: { value_limit: 10000, is_hard_limit: false, reset_period: \"monthly\" }, // 10k free requests per month\r\n storage_gb: { value_limit: 5, is_hard_limit: false, reset_period: \"never\" }, // 5GB free storage lifetime\r\n },\r\n }),\r\n};\r\n`,\r\n index: `import { defineConfig } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\nimport { addons } from \"./addons\";\r\nimport { plans } from \"./plans\";\r\n\r\nexport default defineConfig({\r\n features,\r\n addons,\r\n plans,\r\n});\r\n`,\r\n root: `import config from \"./revstack\";\r\n\r\nexport default config;\r\n`,\r\n};\r\n","import { starter } from \"./starter\";\r\nimport { b2bSaas } from \"./b2b-saas\";\r\nimport { usageBased } from \"./usage-based\";\r\nimport type { TemplateConfig } from \"./starter\";\r\n\r\nexport const TEMPLATES: Record<string, TemplateConfig> = {\r\n starter: starter,\r\n \"b2b-saas\": b2bSaas,\r\n \"usage-based\": usageBased,\r\n};\r\n\r\nexport type { TemplateConfig };\r\n"],"mappings":";;;AAQO,IAAM,UAA0B;AAAA,EACrC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4BR,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6BP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWP,MAAM;AAAA;AAAA;AAAA;AAIR;;;ACtFO,IAAM,UAA0B;AAAA,EACrC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0BR,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8CP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWP,MAAM;AAAA;AAAA;AAAA;AAIR;;;AChGO,IAAM,aAA6B;AAAA,EACxC,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOV,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAeR,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqCP,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWP,MAAM;AAAA;AAAA;AAAA;AAIR;;;ACxEO,IAAM,YAA4C;AAAA,EACvD;AAAA,EACA,YAAY;AAAA,EACZ,eAAe;AACjB;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../src/commands/templates/starter.ts","../../../src/commands/templates/b2b-saas.ts","../../../src/commands/templates/usage-based.ts","../../../src/commands/templates/ecommerce-platform.ts","../../../src/commands/templates/developer-tools.ts","../../../src/commands/templates/ai-agent-platform.ts","../../../src/commands/templates/index.ts"],"sourcesContent":["export interface TemplateConfig {\r\n features: string;\r\n addons: string;\r\n plans: string;\r\n coupons: string;\r\n index: string;\r\n root: string;\r\n}\r\n\r\nexport const starter: TemplateConfig = {\r\n features: `import { defineFeature } from \"@revstackhq/core\";\r\n\r\nexport const features = {\r\n seats: defineFeature({ name: \"Seats\", type: \"static\", unit_type: \"count\" }),\r\n priority_support: defineFeature({ name: \"Priority Support\", type: \"boolean\", unit_type: \"custom\" }),\r\n};\r\n`,\r\n addons: `import { defineAddon } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const addons = {\r\n extra_seats: defineAddon<typeof features>({\r\n name: \"5 Extra Seats\",\r\n description: \"Add 5 more team members to your workspace.\",\r\n type: \"recurring\",\r\n amount: 1500,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {\r\n seats: { value_limit: 5, type: \"increment\", is_hard_limit: false },\r\n }\r\n }),\r\n vip_support: defineAddon<typeof features>({\r\n name: \"Priority Support\",\r\n description: \"24/7 Slack channel support.\",\r\n type: \"recurring\",\r\n amount: 9900,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {\r\n priority_support: { has_access: true },\r\n }\r\n })\r\n};\r\n`,\r\n plans: `import { definePlan } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const plans = {\r\n // DO NOT DELETE: Automatically created default plan for guests.\r\n default: definePlan<typeof features>({\r\n name: \"Default\",\r\n description: \"Automatically created default plan for guests.\",\r\n is_default: true,\r\n is_public: false,\r\n type: \"free\",\r\n features: {},\r\n }),\r\n pro: definePlan<typeof features>({\r\n name: \"Pro\",\r\n description: \"For professional teams.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n prices: [\r\n { amount: 2900, currency: \"USD\", billing_interval: \"monthly\", trial_period_days: 14, available_addons: [\"extra_seats\", \"vip_support\"] }\r\n ],\r\n features: {\r\n seats: { value_limit: 5, is_hard_limit: true },\r\n },\r\n }),\r\n};\r\n`,\r\n coupons: `import type { DiscountDef } from \"@revstackhq/core\";\r\n\r\nexport const coupons: DiscountDef[] = [];\r\n`,\r\n index: `import { defineConfig } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\nimport { addons } from \"./addons\";\r\nimport { plans } from \"./plans\";\r\nimport { coupons } from \"./coupons\";\r\n\r\nexport default defineConfig({\r\n features,\r\n addons,\r\n plans,\r\n coupons,\r\n});\r\n`,\r\n root: `import config from \"./revstack\";\r\n\r\nexport default config;\r\n`,\r\n};\r\n","import { TemplateConfig } from \"./starter\";\r\n\r\nexport const b2bSaas: TemplateConfig = {\r\n features: `import { defineFeature } from \"@revstackhq/core\";\r\n\r\nexport const features = {\r\n active_users: defineFeature({ name: \"Active Users\", type: \"static\", unit_type: \"count\" }),\r\n api_access: defineFeature({ name: \"API Access\", type: \"boolean\", unit_type: \"custom\" }),\r\n custom_domain: defineFeature({ name: \"Custom Domain\", type: \"boolean\", unit_type: \"custom\" }),\r\n};\r\n`,\r\n addons: `import { defineAddon } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const addons = {\r\n extra_users: defineAddon<typeof features>({\r\n name: \"10 Extra Users\",\r\n description: \"Add 10 more active users to your workspace.\",\r\n type: \"recurring\",\r\n amount: 5000,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {\r\n active_users: { value_limit: 10, type: \"increment\", is_hard_limit: true },\r\n }\r\n }),\r\n dedicated_support: defineAddon<typeof features>({\r\n name: \"Dedicated Support\",\r\n description: \"Enterprise SLA with 1-hour response time.\",\r\n type: \"recurring\",\r\n amount: 49900,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {}\r\n })\r\n};\r\n`,\r\n coupons: `import type { DiscountDef } from \"@revstackhq/core\";\r\n\r\nexport const coupons: DiscountDef[] = [\r\n {\r\n code: \"ENTERPRISE_B2B\",\r\n name: \"Annual Contract Rebate\",\r\n type: \"amount\",\r\n value: 50000,\r\n duration: \"once\",\r\n applies_to_plans: [\"enterprise\"]\r\n }\r\n];\r\n`,\r\n plans: `import { definePlan } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const plans = {\r\n default: definePlan<typeof features>({\r\n name: \"Default\",\r\n description: \"Automatically created default plan for guests.\",\r\n is_default: true,\r\n is_public: false,\r\n type: \"free\",\r\n features: {},\r\n }),\r\n startup: definePlan<typeof features>({\r\n name: \"Startup\",\r\n description: \"For small teams getting started.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n prices: [\r\n { amount: 9900, currency: \"USD\", billing_interval: \"monthly\", available_addons: [\"extra_users\"] }\r\n ],\r\n features: {\r\n active_users: { value_limit: 10, is_hard_limit: true },\r\n api_access: { value_bool: false },\r\n custom_domain: { value_bool: false },\r\n },\r\n }),\r\n enterprise: definePlan<typeof features>({\r\n name: \"Enterprise\",\r\n description: \"Advanced features for scale.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n prices: [\r\n { amount: 49900, currency: \"USD\", billing_interval: \"monthly\", available_addons: [\"extra_users\", \"dedicated_support\"] }\r\n ],\r\n features: {\r\n active_users: { value_limit: 100, is_hard_limit: false },\r\n api_access: { value_bool: true },\r\n custom_domain: { value_bool: true },\r\n },\r\n }),\r\n};\r\n`,\r\n index: `import { defineConfig } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\nimport { addons } from \"./addons\";\r\nimport { plans } from \"./plans\";\r\nimport { coupons } from \"./coupons\";\r\n\r\nexport default defineConfig({\r\n features,\r\n addons,\r\n plans,\r\n coupons,\r\n});\r\n`,\r\n root: `import config from \"./revstack\";\r\n\r\nexport default config;\r\n`,\r\n};\r\n","import { TemplateConfig } from \"./starter\";\r\n\r\nexport const usageBased: TemplateConfig = {\r\n features: `import { defineFeature } from \"@revstackhq/core\";\r\n\r\nexport const features = {\r\n api_requests: defineFeature({ name: \"API Requests\", type: \"metered\", unit_type: \"requests\" }),\r\n storage_gb: defineFeature({ name: \"Storage (GB)\", type: \"metered\", unit_type: \"custom\" }),\r\n};\r\n`,\r\n addons: `import { defineAddon } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const addons = {\r\n premium_support: defineAddon<typeof features>({\r\n name: \"Premium Support\",\r\n description: \"24/7 dedicated support.\",\r\n type: \"recurring\",\r\n amount: 20000,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {}\r\n })\r\n};\r\n`,\r\n coupons: `import type { DiscountDef } from \"@revstackhq/core\";\r\n\r\nexport const coupons: DiscountDef[] = [\r\n {\r\n code: \"STARTUP_ACCELERATOR\",\r\n name: \"Startup Program Credits\",\r\n type: \"amount\",\r\n value: 500000, // $5,000 credit\r\n duration: \"forever\",\r\n }\r\n];\r\n`,\r\n plans: `import { definePlan } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const plans = {\r\n default: definePlan<typeof features>({\r\n name: \"Default\",\r\n description: \"Automatically created default plan for guests.\",\r\n is_default: true,\r\n is_public: false,\r\n type: \"free\",\r\n features: {},\r\n }),\r\n pay_as_you_go: definePlan<typeof features>({\r\n name: \"Pay As You Go\",\r\n description: \"Flexible usage-based pricing.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n prices: [\r\n {\r\n amount: 0,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n available_addons: [\"premium_support\"],\r\n overage_configuration: {\r\n api_requests: { overage_amount: 15, overage_unit: 1000 }, // $0.15 per 1k extra requests\r\n storage_gb: { overage_amount: 50, overage_unit: 1 }, // $0.50 per extra GB\r\n }\r\n } // Base platform fee\r\n ],\r\n features: {\r\n api_requests: { value_limit: 10000, is_hard_limit: false, reset_period: \"monthly\" }, // 10k free requests per month\r\n storage_gb: { value_limit: 5, is_hard_limit: false, reset_period: \"never\" }, // 5GB free storage lifetime\r\n },\r\n }),\r\n};\r\n`,\r\n index: `import { defineConfig } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\nimport { addons } from \"./addons\";\r\nimport { plans } from \"./plans\";\r\nimport { coupons } from \"./coupons\";\r\n\r\nexport default defineConfig({\r\n features,\r\n addons,\r\n plans,\r\n coupons,\r\n});\r\n`,\r\n root: `import config from \"./revstack\";\r\n\r\nexport default config;\r\n`,\r\n};\r\n","import { TemplateConfig } from \"./starter\";\r\n\r\nexport const ecommercePlatform: TemplateConfig = {\r\n features: `import { defineFeature } from \"@revstackhq/core\";\r\n\r\nexport const features = {\r\n orders: defineFeature({ name: \"Monthly Orders\", type: \"metered\", unit_type: \"count\" }),\r\n storefronts: defineFeature({ name: \"Storefronts\", type: \"static\", unit_type: \"count\" }),\r\n advanced_analytics: defineFeature({ name: \"Advanced Analytics\", type: \"boolean\", unit_type: \"custom\" }),\r\n};\r\n`,\r\n addons: `import { defineAddon } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const addons = {\r\n extra_storefront: defineAddon<typeof features>({\r\n name: \"Additional Storefront\",\r\n description: \"Launch a new brand under the same account.\",\r\n type: \"recurring\",\r\n amount: 5000,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {\r\n storefronts: { value_limit: 1, type: \"increment\", is_hard_limit: true },\r\n }\r\n }),\r\n custom_domain_ssl: defineAddon<typeof features>({\r\n name: \"Custom Domain & SSL\",\r\n description: \"Secure your storefront with a custom domain.\",\r\n type: \"recurring\",\r\n amount: 1500,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {}\r\n })\r\n};\r\n`,\r\n plans: `import { definePlan } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const plans = {\r\n default: definePlan<typeof features>({\r\n name: \"Default Sandbox\",\r\n description: \"Test your store safely before going live.\",\r\n is_default: true,\r\n is_public: false,\r\n type: \"free\",\r\n features: {},\r\n }),\r\n basic: definePlan<typeof features>({\r\n name: \"Basic Commerce\",\r\n description: \"Everything you need to sell online.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n prices: [\r\n {\r\n amount: 2900,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n available_addons: [\"custom_domain_ssl\"],\r\n overage_configuration: {\r\n orders: { overage_amount: 50, overage_unit: 100 } // $0.50 per 100 extra orders\r\n }\r\n }\r\n ],\r\n features: {\r\n orders: { value_limit: 500, is_hard_limit: false, reset_period: \"monthly\" },\r\n storefronts: { value_limit: 1, is_hard_limit: true },\r\n advanced_analytics: { value_bool: false },\r\n },\r\n }),\r\n pro: definePlan<typeof features>({\r\n name: \"Pro Seller\",\r\n description: \"For scaling businesses.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n prices: [\r\n {\r\n amount: 19900,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n available_addons: [\"extra_storefront\", \"custom_domain_ssl\"],\r\n overage_configuration: {\r\n orders: { overage_amount: 30, overage_unit: 100 } // $0.30 per 100 extra orders\r\n }\r\n }\r\n ],\r\n features: {\r\n orders: { value_limit: 5000, is_hard_limit: false, reset_period: \"monthly\" },\r\n storefronts: { value_limit: 2, is_hard_limit: true },\r\n advanced_analytics: { value_bool: true },\r\n },\r\n }),\r\n};\r\n`,\r\n coupons: `import type { DiscountDef } from \"@revstackhq/core\";\r\n\r\nexport const coupons: DiscountDef[] = [\r\n {\r\n code: \"BFCM_PROMO\",\r\n name: \"Black Friday Cyber Monday 20%\",\r\n type: \"percent\",\r\n value: 20,\r\n duration: \"repeating\",\r\n duration_in_months: 6,\r\n expires_at: \"2024-11-29T00:00:00Z\", // Ephemeral timestamp\r\n max_redemptions: 5000\r\n },\r\n {\r\n code: \"FIRST_MONTH_FREE\",\r\n name: \"New Store Launch\",\r\n type: \"percent\",\r\n value: 100,\r\n duration: \"repeating\",\r\n duration_in_months: 1,\r\n applies_to_plans: [\"basic\"]\r\n }\r\n];\r\n`,\r\n index: `import { defineConfig } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\nimport { addons } from \"./addons\";\r\nimport { plans } from \"./plans\";\r\nimport { coupons } from \"./coupons\";\r\n\r\nexport default defineConfig({\r\n features,\r\n addons,\r\n plans,\r\n coupons,\r\n});\r\n`,\r\n root: `import config from \"./revstack\";\r\n\r\nexport default config;\r\n`,\r\n};\r\n","import { TemplateConfig } from \"./starter\";\r\n\r\nexport const developerTools: TemplateConfig = {\r\n features: `import { defineFeature } from \"@revstackhq/core\";\r\n\r\nexport const features = {\r\n bandwidth_gb: defineFeature({ name: \"Bandwidth (GB)\", type: \"metered\", unit_type: \"custom\" }),\r\n compute_hours: defineFeature({ name: \"Compute (GB-Hours)\", type: \"metered\", unit_type: \"custom\" }),\r\n serverless_invokes: defineFeature({ name: \"Serverless Invocations\", type: \"metered\", unit_type: \"count\" }),\r\n sso_auth: defineFeature({ name: \"Enterprise SSO\", type: \"boolean\", unit_type: \"custom\" })\r\n};\r\n`,\r\n addons: `import { defineAddon } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const addons = {\r\n dedicated_ipv4: defineAddon<typeof features>({\r\n name: \"Dedicated IPv4 Address\",\r\n description: \"Assign a static IP to your deployments.\",\r\n type: \"recurring\",\r\n amount: 500,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {}\r\n }),\r\n premium_sla: defineAddon<typeof features>({\r\n name: \"Premium Escalation SLA\",\r\n description: \"Direct engineering support with 30-min response time.\",\r\n type: \"recurring\",\r\n amount: 150000,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {}\r\n })\r\n};\r\n`,\r\n plans: `import { definePlan } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const plans = {\r\n default: definePlan<typeof features>({\r\n name: \"Hobby\",\r\n description: \"For personal or non-commercial projects.\",\r\n is_default: true,\r\n is_public: true,\r\n type: \"free\",\r\n features: {\r\n bandwidth_gb: { value_limit: 100, is_hard_limit: true, reset_period: \"monthly\" },\r\n compute_hours: { value_limit: 100, is_hard_limit: true, reset_period: \"monthly\" },\r\n serverless_invokes: { value_limit: 100000, is_hard_limit: true, reset_period: \"monthly\" },\r\n sso_auth: { value_bool: false }\r\n },\r\n }),\r\n pro: definePlan<typeof features>({\r\n name: \"Pro\",\r\n description: \"For production apps and growing teams.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n prices: [\r\n {\r\n amount: 2000,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n available_addons: [\"dedicated_ipv4\"],\r\n overage_configuration: {\r\n bandwidth_gb: { overage_amount: 40, overage_unit: 100 }, // $0.40 per 100GB extra\r\n compute_hours: { overage_amount: 2, overage_unit: 1 }, // $0.02 per extra GB hr\r\n serverless_invokes: { overage_amount: 50, overage_unit: 1000000 } // $0.50 per 1M invokes\r\n }\r\n }\r\n ],\r\n features: {\r\n bandwidth_gb: { value_limit: 1000, is_hard_limit: false, reset_period: \"monthly\" },\r\n compute_hours: { value_limit: 1000, is_hard_limit: false, reset_period: \"monthly\" },\r\n serverless_invokes: { value_limit: 5000000, is_hard_limit: false, reset_period: \"monthly\" },\r\n sso_auth: { value_bool: false }\r\n },\r\n }),\r\n enterprise: definePlan<typeof features>({\r\n name: \"Enterprise\",\r\n description: \"Custom infrastructure and legal compliance.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"custom\",\r\n prices: [],\r\n features: {\r\n bandwidth_gb: { value_limit: 50000, is_hard_limit: false, reset_period: \"monthly\" },\r\n compute_hours: { value_limit: 10000, is_hard_limit: false, reset_period: \"monthly\" },\r\n serverless_invokes: { value_limit: 100000000, is_hard_limit: false, reset_period: \"monthly\" },\r\n sso_auth: { value_bool: true }\r\n },\r\n }),\r\n};\r\n`,\r\n coupons: `import type { DiscountDef } from \"@revstackhq/core\";\r\n\r\nexport const coupons: DiscountDef[] = [\r\n {\r\n code: \"YCOMBINATOR\",\r\n name: \"YC Startup Accelerator Credit\",\r\n type: \"amount\",\r\n value: 1000000, // $10,000 credit\r\n duration: \"forever\",\r\n applies_to_plans: [\"pro\", \"enterprise\"]\r\n }\r\n];\r\n`,\r\n index: `import { defineConfig } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\nimport { addons } from \"./addons\";\r\nimport { plans } from \"./plans\";\r\nimport { coupons } from \"./coupons\";\r\n\r\nexport default defineConfig({\r\n features,\r\n addons,\r\n plans,\r\n coupons,\r\n});\r\n`,\r\n root: `import config from \"./revstack\";\r\n\r\nexport default config;\r\n`,\r\n};\r\n","import { TemplateConfig } from \"./starter\";\r\n\r\nexport const aiAgentPlatform: TemplateConfig = {\r\n features: `import { defineFeature } from \"@revstackhq/core\";\r\n\r\nexport const features = {\r\n llm_tokens: defineFeature({ name: \"LLM Tokens (Input+Output)\", type: \"metered\", unit_type: \"count\" }),\r\n active_agents: defineFeature({ name: \"Concurrent Agents\", type: \"static\", unit_type: \"count\" }),\r\n vector_storage_gb: defineFeature({ name: \"Vector Database (GB)\", type: \"metered\", unit_type: \"custom\" }),\r\n custom_fine_tuning: defineFeature({ name: \"Model Fine-Tuning\", type: \"boolean\", unit_type: \"custom\" })\r\n};\r\n`,\r\n addons: `import { defineAddon } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const addons = {\r\n extra_vector_storage: defineAddon<typeof features>({\r\n name: \"10GB Vector Storage Block\",\r\n description: \"Retain long-term memory for your AI agents.\",\r\n type: \"recurring\",\r\n amount: 1000,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n features: {\r\n vector_storage_gb: { value_limit: 10, type: \"increment\", is_hard_limit: false }\r\n }\r\n }),\r\n fine_tuning_job: defineAddon<typeof features>({\r\n name: \"Fine-Tuning Job Runner\",\r\n description: \"Pay once to run a distributed model fine-tuning job on your dataset.\",\r\n type: \"one_time\",\r\n amount: 25000,\r\n currency: \"USD\",\r\n features: {\r\n custom_fine_tuning: { has_access: true }\r\n }\r\n })\r\n};\r\n`,\r\n plans: `import { definePlan } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\n\r\nexport const plans = {\r\n default: definePlan<typeof features>({\r\n name: \"Free Preview\",\r\n description: \"Trial sandbox using shared models.\",\r\n is_default: true,\r\n is_public: true,\r\n type: \"free\",\r\n features: {\r\n llm_tokens: { value_limit: 100000, is_hard_limit: true, reset_period: \"monthly\" },\r\n active_agents: { value_limit: 1, is_hard_limit: true },\r\n vector_storage_gb: { value_limit: 0, is_hard_limit: true, reset_period: \"never\" },\r\n custom_fine_tuning: { value_bool: false }\r\n },\r\n }),\r\n builder: definePlan<typeof features>({\r\n name: \"AI Builder\",\r\n description: \"High concurrency and dedicated model endpoints.\",\r\n is_default: false,\r\n is_public: true,\r\n type: \"paid\",\r\n prices: [\r\n {\r\n amount: 4900,\r\n currency: \"USD\",\r\n billing_interval: \"monthly\",\r\n available_addons: [\"extra_vector_storage\", \"fine_tuning_job\"],\r\n overage_configuration: {\r\n llm_tokens: { overage_amount: 15, overage_unit: 1000000 } // $0.15 per 1M tokens\r\n }\r\n }\r\n ],\r\n features: {\r\n llm_tokens: { value_limit: 10000000, is_hard_limit: false, reset_period: \"monthly\" }, // 10M free tokens included\r\n active_agents: { value_limit: 10, is_hard_limit: true },\r\n vector_storage_gb: { value_limit: 5, is_hard_limit: true, reset_period: \"never\" }, // Hard limit until they buy the addon\r\n custom_fine_tuning: { value_bool: false } // Only unlocked via the one-off addon\r\n },\r\n }),\r\n};\r\n`,\r\n coupons: `import type { DiscountDef } from \"@revstackhq/core\";\r\n\r\nexport const coupons: DiscountDef[] = [\r\n {\r\n code: \"BETA_TESTER\",\r\n name: \"Early Beta Access Discount\",\r\n type: \"percent\",\r\n value: 50,\r\n duration: \"repeating\",\r\n duration_in_months: 12,\r\n max_redemptions: 100\r\n }\r\n];\r\n`,\r\n index: `import { defineConfig } from \"@revstackhq/core\";\r\nimport { features } from \"./features\";\r\nimport { addons } from \"./addons\";\r\nimport { plans } from \"./plans\";\r\nimport { coupons } from \"./coupons\";\r\n\r\nexport default defineConfig({\r\n features,\r\n addons,\r\n plans,\r\n coupons,\r\n});\r\n`,\r\n root: `import config from \"./revstack\";\r\n\r\nexport default config;\r\n`,\r\n};\r\n","import { starter } from \"./starter\";\r\nimport { b2bSaas } from \"./b2b-saas\";\r\nimport { usageBased } from \"./usage-based\";\r\nimport { ecommercePlatform } from \"./ecommerce-platform\";\r\nimport { developerTools } from \"./developer-tools\";\r\nimport { aiAgentPlatform } from \"./ai-agent-platform\";\r\nimport type { TemplateConfig } from \"./starter\";\r\n\r\nexport const TEMPLATES: Record<string, TemplateConfig> = {\r\n starter: starter,\r\n \"b2b-saas\": b2bSaas,\r\n \"usage-based\": usageBased,\r\n \"ecommerce-platform\": ecommercePlatform,\r\n \"developer-tools\": developerTools,\r\n \"ai-agent-platform\": aiAgentPlatform,\r\n};\r\n\r\nexport type { TemplateConfig };\r\n"],"mappings":"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","names":[]}
|