Initial commit: ANOUMA website with Payload CMS, WebRTC meetings, and booking system

- 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
This commit is contained in:
maro
2026-08-25 16:40:51 +02:00
commit 45261a0461
138 changed files with 23263 additions and 0 deletions
+79
View File
@@ -0,0 +1,79 @@
import type { CollectionConfig } from "payload";
import { isAdmin } from "@/access";
export const EventRegistrations: CollectionConfig = {
slug: "event-registrations",
labels: {
singular: "Anmeldung",
plural: "Anmeldungen",
},
admin: {
useAsTitle: "name",
defaultColumns: ["name", "email", "event", "status", "registeredAt"],
group: "Inhalte",
description: "Anmeldungen zu Terminen — wird beim öffentlichen Anmeldeformular befüllt.",
},
access: {
// Visitors register themselves through the public event page.
create: () => true,
read: isAdmin,
update: isAdmin,
delete: isAdmin,
},
fields: [
{
name: "event",
type: "relationship",
relationTo: "events",
label: "Termin",
required: true,
index: true,
},
{
type: "row",
fields: [
{ name: "name", type: "text", label: "Name", required: true, admin: { width: "50%" } },
{ name: "email", type: "email", label: "E-Mail", required: true, admin: { width: "50%" } },
],
},
{
name: "status",
type: "select",
label: "Status",
required: true,
defaultValue: "registered",
options: [
{ label: "Angemeldet", value: "registered" },
{ label: "Storniert", value: "cancelled" },
{ label: "Teilgenommen", value: "attended" },
],
},
{
name: "registeredAt",
type: "date",
label: "Registriert am",
defaultValue: () => new Date().toISOString(),
admin: { position: "sidebar", date: { pickerAppearance: "dayAndTime" } },
},
{
type: "row",
admin: { position: "sidebar" },
fields: [
{
name: "reminder60Sent",
type: "checkbox",
label: "Reminder 60 Min. gesendet",
defaultValue: false,
admin: { width: "50%" },
},
{
name: "reminder30Sent",
type: "checkbox",
label: "Reminder 30 Min. gesendet",
defaultValue: false,
admin: { width: "50%" },
},
],
},
],
};