diff --git a/apps/web/src/env.js b/apps/web/src/env.js index 116538a..5633bd6 100644 --- a/apps/web/src/env.js +++ b/apps/web/src/env.js @@ -36,6 +36,7 @@ export const env = createEnv({ UNSEND_API_KEY: z.string().optional(), GOOGLE_CLIENT_ID: z.string().optional(), GOOGLE_CLIENT_SECRET: z.string().optional(), + AWS_SES_ENDPOINT: z.string().optional(), AWS_DEFAULT_REGION: z.string().default("us-east-1"), API_RATE_LIMIT: z .string() @@ -85,6 +86,7 @@ export const env = createEnv({ GOOGLE_CLIENT_ID: process.env.GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET: process.env.GOOGLE_CLIENT_SECRET, AWS_DEFAULT_REGION: process.env.AWS_DEFAULT_REGION, + AWS_SES_ENDPOINT: process.env.AWS_SES_ENDPOINT, API_RATE_LIMIT: process.env.API_RATE_LIMIT, NEXT_PUBLIC_IS_CLOUD: process.env.NEXT_PUBLIC_IS_CLOUD, ADMIN_EMAIL: process.env.ADMIN_EMAIL, diff --git a/apps/web/src/server/aws/ses.ts b/apps/web/src/server/aws/ses.ts index 53f9fa5..884e0d3 100644 --- a/apps/web/src/server/aws/ses.ts +++ b/apps/web/src/server/aws/ses.ts @@ -18,6 +18,7 @@ import { EmailContent } from "~/types"; function getSesClient(region: string) { return new SESv2Client({ region: region, + endpoint: env.AWS_SES_ENDPOINT, credentials: { accessKeyId: env.AWS_ACCESS_KEY, secretAccessKey: env.AWS_SECRET_KEY, diff --git a/apps/web/src/server/public-api/auth.ts b/apps/web/src/server/public-api/auth.ts index 08e6227..6e2347d 100644 --- a/apps/web/src/server/public-api/auth.ts +++ b/apps/web/src/server/public-api/auth.ts @@ -7,7 +7,7 @@ import { getTeamAndApiKey } from "../service/api-service"; const rateLimitCache = new TTLCache({ ttl: 1000, // 1 second - max: env.API_RATE_LIMIT, + max: 10000, }); /** @@ -72,7 +72,7 @@ const checkRateLimit = (token: string) => { rateLimit = rateLimit ?? 0; - if (rateLimit >= 2) { + if (rateLimit >= env.API_RATE_LIMIT) { throw new UnsendApiError({ code: "RATE_LIMITED", message: `Rate limit exceeded, ${env.API_RATE_LIMIT} requests per second`, diff --git a/package.json b/package.json index c8ef2e3..9defe0e 100644 --- a/package.json +++ b/package.json @@ -7,6 +7,8 @@ "build:web": "turbo build --filter=@unsend/email-editor --filter=web ", "build:marketing": "turbo build --filter=@unsend/email-editor --filter=marketing", "build:smtp": "turbo build --filter=smtp-server", + "build:web:local": "pnpm load-env -- turbo build --filter=@unsend/email-editor --filter=web ", + "start:web:local": "pnpm load-env -- cd apps/web && pnpm start", "dev": "pnpm load-env -- turbo dev", "dev:docs": "cd apps/docs && mintlify dev", "lint": "turbo lint",