aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-07-13 09:28:24 +0000
committerMohamed Bassem <me@mbassem.com>2025-07-13 20:44:00 +0000
commitd1d5263486f96db578aad918a59007045c3c077f (patch)
treedf65f062b6eda93364f7d509fc2c52663561097a /packages/shared
parent845ccf1ad46c8635782f8e10280b07c48c08eaf5 (diff)
downloadkarakeep-d1d5263486f96db578aad918a59007045c3c077f.tar.zst
feat: Add stripe based subscriptions
Diffstat (limited to 'packages/shared')
-rw-r--r--packages/shared/config.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/packages/shared/config.ts b/packages/shared/config.ts
index ed17bb90..634bf564 100644
--- a/packages/shared/config.ts
+++ b/packages/shared/config.ts
@@ -117,6 +117,17 @@ const allEnv = z.object({
// Rate limiting configuration
RATE_LIMITING_ENABLED: stringBool("false"),
+ // Stripe configuration
+ STRIPE_SECRET_KEY: z.string().optional(),
+ STRIPE_PUBLISHABLE_KEY: z.string().optional(),
+ STRIPE_WEBHOOK_SECRET: z.string().optional(),
+ STRIPE_PRICE_ID: z.string().optional(),
+
+ FREE_QUOTA_BOOKMARK_LIMIT: z.coerce.number().optional(),
+ FREE_QUOTA_ASSET_SIZE_BYTES: z.coerce.number().optional(),
+ PAID_QUOTA_BOOKMARK_LIMIT: z.coerce.number().optional(),
+ PAID_QUOTA_ASSET_SIZE_BYTES: z.coerce.number().optional(),
+
// Proxy configuration
HTTP_PROXY: z.string().optional(),
HTTPS_PROXY: z.string().optional(),
@@ -267,6 +278,23 @@ const serverConfigSchema = allEnv
rateLimiting: {
enabled: val.RATE_LIMITING_ENABLED,
},
+ stripe: {
+ secretKey: val.STRIPE_SECRET_KEY,
+ publishableKey: val.STRIPE_PUBLISHABLE_KEY,
+ webhookSecret: val.STRIPE_WEBHOOK_SECRET,
+ priceId: val.STRIPE_PRICE_ID,
+ isConfigured: !!val.STRIPE_SECRET_KEY && !!val.STRIPE_PUBLISHABLE_KEY,
+ },
+ quotas: {
+ free: {
+ bookmarkLimit: val.FREE_QUOTA_BOOKMARK_LIMIT,
+ assetSizeBytes: val.FREE_QUOTA_ASSET_SIZE_BYTES,
+ },
+ paid: {
+ bookmarkLimit: val.PAID_QUOTA_BOOKMARK_LIMIT,
+ assetSizeBytes: val.PAID_QUOTA_ASSET_SIZE_BYTES,
+ },
+ },
};
})
.refine(