diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-07-13 09:28:24 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2025-07-13 20:44:00 +0000 |
| commit | d1d5263486f96db578aad918a59007045c3c077f (patch) | |
| tree | df65f062b6eda93364f7d509fc2c52663561097a /packages/shared | |
| parent | 845ccf1ad46c8635782f8e10280b07c48c08eaf5 (diff) | |
| download | karakeep-d1d5263486f96db578aad918a59007045c3c077f.tar.zst | |
feat: Add stripe based subscriptions
Diffstat (limited to 'packages/shared')
| -rw-r--r-- | packages/shared/config.ts | 28 |
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( |
