feat: initialize CalBook project with comprehensive scheduling, admin, and deployment infrastructure

This commit is contained in:
2026-05-07 13:04:02 +02:00
parent 51acfe9488
commit ee48a93824
133 changed files with 26049 additions and 0 deletions

View File

@@ -0,0 +1,38 @@
export const dynamic = "force-dynamic";
import { fail, ok } from "@/lib/api";
import { enforceRateLimit } from "@/lib/rate-limit";
import { cancelSchema } from "@/lib/validators/public";
import { getRescheduleInfo } from "@/lib/services/appointments";
import { resolveTimeZone } from "@/lib/date";
export async function GET(req: Request) {
const url = new URL(req.url);
const parsed = cancelSchema.safeParse({ token: url.searchParams.get("token") });
const timezone = resolveTimeZone(url.searchParams.get("timezone"));
const limit = enforceRateLimit({
req,
scope: "public-reschedule-info",
limit: 40,
windowMs: 60_000,
...(parsed.success ? { keySuffix: parsed.data.token.slice(0, 12) } : {})
});
if (!limit.ok) {
return fail("Zu viele Anfragen. Bitte kurz warten.", 429, {
retryAfterSeconds: limit.retryAfterSeconds
});
}
if (!parsed.success) {
return fail("Token fehlt oder ist ungültig", 400, parsed.error.flatten());
}
const result = await getRescheduleInfo(parsed.data.token, timezone);
if (!result.ok) {
return fail(result.message, result.status);
}
return ok(result.data);
}