diff options
| author | Bertrand Yuan <bert.yuan@outlook.com> | 2025-12-16 00:12:49 +0800 |
|---|---|---|
| committer | Bertrand Yuan <bert.yuan@outlook.com> | 2025-12-16 00:12:49 +0800 |
| commit | 02ae938c238c9d18448d17a8ec92c0edd8c17463 (patch) | |
| tree | dcd6a30505adb52522b20af2c0ac27f713403f10 /src/payload/collections/Posts.ts | |
| parent | 48b07bc308a35734a6a7a305c8fdccbfa47de7d8 (diff) | |
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.
Diffstat (limited to 'src/payload/collections/Posts.ts')
| -rw-r--r-- | src/payload/collections/Posts.ts | 93 |
1 files changed, 93 insertions, 0 deletions
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', + }, + }, + }, + ], +}; |
