- Next.js 16 App Router site with the ANOUMA design system - Payload CMS (PostgreSQL) for offers, events, posts and page content - WebRTC video-call system with custom signaling server - SMTP email reminders and booking-request notifications - Customer accounts, calendar-based availability, and booking workflow
29 lines
973 B
TypeScript
29 lines
973 B
TypeScript
import { NextResponse } from "next/server";
|
|
import { runEventReminders } from "@/lib/meeting/reminders";
|
|
|
|
export const dynamic = "force-dynamic";
|
|
|
|
/**
|
|
* Intended to be called by an external cron job every few minutes, e.g.:
|
|
* curl -H "Authorization: Bearer $CRON_SECRET" https://anouma.org/api/cron/event-reminders
|
|
*/
|
|
export async function GET(request: Request) {
|
|
const secret = process.env.CRON_SECRET;
|
|
if (!secret) {
|
|
return NextResponse.json({ error: "CRON_SECRET is not configured" }, { status: 500 });
|
|
}
|
|
|
|
const authHeader = request.headers.get("authorization");
|
|
if (authHeader !== `Bearer ${secret}`) {
|
|
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
|
|
}
|
|
|
|
try {
|
|
const result = await runEventReminders();
|
|
return NextResponse.json({ ok: true, ...result });
|
|
} catch (error) {
|
|
console.error("event-reminders cron failed", error);
|
|
return NextResponse.json({ error: "Internal error" }, { status: 500 });
|
|
}
|
|
}
|