From 02ae938c238c9d18448d17a8ec92c0edd8c17463 Mon Sep 17 00:00:00 2001 From: Bertrand Yuan Date: Tue, 16 Dec 2025 00:12:49 +0800 Subject: feat(back-end): introduce payload Payload is the next.js Headless CMS and App Framework, I would like to pick it up and modify it as it is MIT licensed. Many features in Payload is not applicable for our project. So, I modify it so that it is light and clear. --- src/payload/collections/Posts.ts | 93 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/payload/collections/Posts.ts (limited to 'src/payload/collections/Posts.ts') diff --git a/src/payload/collections/Posts.ts b/src/payload/collections/Posts.ts new file mode 100644 index 0000000..6ecf898 --- /dev/null +++ b/src/payload/collections/Posts.ts @@ -0,0 +1,93 @@ +import type { CollectionConfig } from 'payload'; + +export const Posts: CollectionConfig = { + slug: 'posts', + labels: { + singular: 'posts', + plural: 'posts', + }, + admin: { + useAsTitle: 'title', + defaultColumns: ['title', 'status', 'publishedAt', 'updatedAt'], + }, + access: { + read: () => true, + }, + fields: [ + { + name: 'title', + label: 'title', + type: 'text', + required: true, + }, + { + name: 'slug', + label: 'slug', + type: 'text', + required: true, + unique: true, + admin: { + description: 'example:my-first-post', + }, + }, + { + name: 'description', + label: 'description', + type: 'textarea', + }, + { + name: 'content', + label: 'content', + type: 'richText', + required: true, + }, + { + name: 'featuredImage', + label: 'image', + type: 'upload', + relationTo: 'media', + }, + { + name: 'author', + label: 'author', + type: 'text', + defaultValue: 'Admin', + }, + { + name: 'tags', + label: 'tag', + type: 'array', + fields: [ + { + name: 'tag', + label: 'tag', + type: 'text', + }, + ], + }, + { + name: 'status', + label: 'status', + type: 'select', + defaultValue: 'draft', + options: [ + { label: 'draft', value: 'draft' }, + { label: 'published', value: 'published' }, + ], + admin: { + position: 'sidebar', + }, + }, + { + name: 'publishedAt', + label: 'publishedAt', + type: 'date', + admin: { + position: 'sidebar', + date: { + pickerAppearance: 'dayAndTime', + }, + }, + }, + ], +}; -- cgit v1.2.3