summaryrefslogtreecommitdiff
path: root/Documentation/source/architecture/content-model.rst
diff options
context:
space:
mode:
authorBertrand Yuan <me@bertyuan.com>2026-04-27 20:52:54 +0800
committerBertrand Yuan <me@bertyuan.com>2026-04-27 20:53:14 +0800
commitdbb5e791f0c228369605d126dd590962ebe1eddc (patch)
tree8c83fc84bd9547630e6733929dec77e102e055a8 /Documentation/source/architecture/content-model.rst
parent658798b3a2378bb6df16cfbb16d707c6fb719e1e (diff)
docs: add comprehensive documentation for operations
This commit introduces a complete set of documentation files covering various aspects of the project, including environment setup, quality checks, command references, and architecture. The documentation is structured to assist developers and contributors in understanding the project's configuration, workflow, and best practices. Additionally, translations for Simplified and Traditional Chinese have been added to ensure accessibility for a wider audience. This enhances the overall usability and maintainability of the project. Signed-off-by: Bertrand Yuan <github@bertyuan.com>
Diffstat (limited to 'Documentation/source/architecture/content-model.rst')
-rw-r--r--Documentation/source/architecture/content-model.rst65
1 files changed, 65 insertions, 0 deletions
diff --git a/Documentation/source/architecture/content-model.rst b/Documentation/source/architecture/content-model.rst
new file mode 100644
index 0000000..12ed092
--- /dev/null
+++ b/Documentation/source/architecture/content-model.rst
@@ -0,0 +1,65 @@
+Content Model
+=============
+
+Payload CMS is configured in ``payload.config.ts`` and collection definitions
+live under ``src/payload/collections``.
+
+Collections
+-----------
+
+.. list-table::
+ :header-rows: 1
+ :widths: 18 58
+
+ * - Collection
+ - Purpose
+ * - ``Posts``
+ - Blog entries with slug, summary, rich text body, status, tags,
+ publication time, author, and optional featured image.
+ * - ``Users``
+ - Admin users for Payload and shared user representation.
+ * - ``Media``
+ - Uploaded images and assets used by posts and the admin.
+
+Post Lifecycle
+--------------
+
+Posts are authored in Payload and exposed publicly only when their status is
+``published``. Public queries in ``src/lib/payload-posts.ts`` consistently
+filter on this status before returning data to pages, feeds, search, or tag
+views.
+
+The normalized frontend shape is ``BlogPost``. It includes:
+
+* ``id`` and ``slug`` for stable identity;
+* ``url`` for public route generation;
+* ``title`` and ``description`` for listing and metadata;
+* ``content`` for Lexical rich text rendering;
+* ``image`` for cover or preview assets;
+* ``author`` and dates for byline display;
+* ``tags`` for topic navigation.
+
+Tag Strategy
+------------
+
+Tags are currently embedded in post documents and counted in memory by
+``getAllTags``. This is simple and sufficient for a small blog. If content
+volume grows, tag aggregation should move closer to the database or a cached
+index.
+
+MDX Content
+-----------
+
+The ``content`` directory is processed by Fumadocs through ``source.config.ts``.
+Its frontmatter includes date, author, tags, and optional image fields. Treat
+MDX content as local authored pages, distinct from Payload-managed posts.
+
+Generated Types
+---------------
+
+Payload writes generated TypeScript types to ``payload-types.ts``. Regenerate
+them after collection schema changes:
+
+.. code-block:: bash
+
+ pnpm payload:generate