diff options
Diffstat (limited to 'apps/web/src/lib')
| -rw-r--r-- | apps/web/src/lib/db/schema.ts | 8 | ||||
| -rw-r--r-- | apps/web/src/lib/rate-limit.ts | 14 |
2 files changed, 22 insertions, 0 deletions
diff --git a/apps/web/src/lib/db/schema.ts b/apps/web/src/lib/db/schema.ts index 02df5d4a..7c38724a 100644 --- a/apps/web/src/lib/db/schema.ts +++ b/apps/web/src/lib/db/schema.ts @@ -59,3 +59,11 @@ export const verifications = pgTable("verifications", { () => /* @__PURE__ */ new Date()
),
}).enableRLS();
+
+export const waitlist = pgTable("waitlist", {
+ id: text("id").primaryKey(),
+ email: text("email").notNull().unique(),
+ createdAt: timestamp("created_at")
+ .$defaultFn(() => /* @__PURE__ */ new Date())
+ .notNull(),
+}).enableRLS();
diff --git a/apps/web/src/lib/rate-limit.ts b/apps/web/src/lib/rate-limit.ts new file mode 100644 index 00000000..bf1cce02 --- /dev/null +++ b/apps/web/src/lib/rate-limit.ts @@ -0,0 +1,14 @@ +// lib/rate-limit.ts
+import { Ratelimit } from "@upstash/ratelimit";
+import { Redis } from "@upstash/redis";
+
+const redis = new Redis({
+ url: process.env.UPSTASH_REDIS_REST_URL!,
+ token: process.env.UPSTASH_REDIS_REST_TOKEN!,
+});
+
+export const waitlistRateLimit = new Ratelimit({
+ redis,
+ limiter: Ratelimit.slidingWindow(5, "1 m"), // 5 requests per minute
+ analytics: true,
+});
|
