Files
anouma/payload.config.ts
T
maro 45261a0461 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
2026-08-25 16:40:51 +02:00

74 lines
2.2 KiB
TypeScript

import { postgresAdapter } from "@payloadcms/db-postgres";
import { lexicalEditor } from "@payloadcms/richtext-lexical";
import path from "path";
import { buildConfig } from "payload";
import { fileURLToPath } from "url";
import sharp from "sharp";
import { Users } from "@/collections/Users";
import { Media } from "@/collections/Media";
import { Events } from "@/collections/Events";
import { Posts } from "@/collections/Posts";
import { Offers } from "@/collections/Offers";
import { EventRegistrations } from "@/collections/EventRegistrations";
import { Customers } from "@/collections/Customers";
import { Availability } from "@/collections/Availability";
import { AvailabilityOverrides } from "@/collections/AvailabilityOverrides";
import { BookingRequests } from "@/collections/BookingRequests";
import { Home } from "@/globals/Home";
import { About } from "@/globals/About";
import { AngeboteIntro } from "@/globals/AngeboteIntro";
import { AktuellesIntro } from "@/globals/AktuellesIntro";
import { Contact } from "@/globals/Contact";
import { Booking } from "@/globals/Booking";
import { MeetingSettings } from "@/globals/MeetingSettings";
import { BookingSettings } from "@/globals/BookingSettings";
const filename = fileURLToPath(import.meta.url);
const dirname = path.dirname(filename);
export default buildConfig({
serverURL: process.env.NEXT_PUBLIC_SERVER_URL || "http://localhost:3000",
admin: {
user: Users.slug,
importMap: {
baseDir: path.resolve(dirname),
},
meta: {
titleSuffix: "— Anouma Admin",
},
},
collections: [
Users,
Customers,
Media,
Events,
Posts,
Offers,
EventRegistrations,
Availability,
AvailabilityOverrides,
BookingRequests,
],
globals: [Home, About, AngeboteIntro, AktuellesIntro, Contact, Booking, MeetingSettings, BookingSettings],
editor: lexicalEditor(),
secret: process.env.PAYLOAD_SECRET || "",
typescript: {
outputFile: path.resolve(dirname, "payload-types.ts"),
},
db: postgresAdapter({
pool: {
connectionString: process.env.DATABASE_URI || "",
},
}),
sharp,
// Server-side upload size limit; the Media collection restricts formats.
upload: {
limits: {
fileSize: 10 * 1024 * 1024, // 10 MB
},
},
plugins: [],
});