import path from 'path'; import { fileURLToPath } from 'url'; import { buildConfig } from 'payload'; import { postgresAdapter } from '@payloadcms/db-postgres'; import { lexicalEditor } from '@payloadcms/richtext-lexical'; import { formBuilderPlugin } from '@payloadcms/plugin-form-builder'; // Collections import { Users } from './payload/collections/Users'; import { Media } from './payload/collections/Media'; import { Services } from './payload/collections/Services'; import { Categories } from './payload/collections/Categories'; import { Posts } from './payload/collections/Posts'; import { TeamMembers } from './payload/collections/TeamMembers'; import { Testimonials } from './payload/collections/Testimonials'; import { FAQs } from './payload/collections/FAQs'; // Globals import { Navigation } from './payload/globals/Navigation'; import { Footer } from './payload/globals/Footer'; import { SiteSettings } from './payload/globals/SiteSettings'; const filename = fileURLToPath(import.meta.url); const dirname = path.dirname(filename); export default buildConfig({ serverURL: process.env.NEXT_PUBLIC_SITE_URL || 'http://localhost:3000', secret: process.env.PAYLOAD_SECRET || 'dev-secret-change-in-production', admin: { user: 'users', meta: { titleSuffix: '— Axil Accountants CMS', }, }, editor: lexicalEditor(), db: postgresAdapter({ pool: { connectionString: process.env.DATABASE_URI, }, }), collections: [Users, Media, Services, Categories, Posts, TeamMembers, Testimonials, FAQs], globals: [Navigation, Footer, SiteSettings], upload: { limits: { fileSize: 10_000_000, // 10MB }, }, plugins: [ formBuilderPlugin({ fields: { text: true, email: true, select: true, checkbox: true, textarea: true, }, }), ], typescript: { outputFile: path.resolve(dirname, 'payload-types.ts'), }, });