DurianPy CMS is the central "Source of Truth" for the DurianPy ecosystem. Built on Payload CMS, it provides a unified, enterprise-grade backend to power the DurianPy Website and all subsequent projects and microservices.
DurianPy CMS is designed to be a headless content hub. By centralizing our data—from blog posts and site layouts to user roles and global configurations—we ensure consistency across all our digital touchpoints while providing our engineering and content teams with a powerful, flexible interface.
- Centralized Content: One dashboard to manage all DurianPy assets.
- API-First: Content delivered via highly-performant REST and GraphQL endpoints.
- Enterprise Ready: Built-in access control, audit logs (versions), and scalable AWS-backed infrastructure.
We strongly enforce using DevContainers to ensure a consistent environment across all machines.
- Review the Prerequisites by OS.
- Follow the IDE Setup Guide to open the project in your container.
- Once inside the container, follow the Running the Project guide to install dependencies, initialize git hooks, and start the local server.
Note: Manual OS setup (without DevContainers) is the "Forbidden Path" and is strictly unsupported. See the warning here if you must proceed at your own risk.
To maintain code quality and a clean commit history, all contributors must follow our established workflows.
Please read our comprehensive Developer Workflow Guide before contributing. It covers:
- Adding new collections.
- Creating data seeders.
- Guidelines on when to use database migrations.
Naming convention: <type>/<ticket-id>-task-title
feat/DP-123-add-custom-blocksfix/DP-456-fix-media-uploadchore/update-dependencies
We strictly follow Conventional Commits. Our hooks will reject non-compliant messages (e.g., feat: implement user profiles).
Keep your branch updated with main:
git fetch origin
git rebase origin/main -r- Ticket: Get assigned to a task.
- Branch:
git checkout -b <type>/<ticket-id>-title. - Setup:
npm i && npx prek install --hook-type pre-commit --hook-type commit-msg --prepare-hooks. - Code: Implement changes & follow Conventional Commits.
- PR: Push and create a Pull Request on GitHub.
- Payload Config: Custom-tailored in
src/payload.config.ts. - Infrastructure: AWS+GCP-backed serverless architecture (ECR, Lambda, SSM, S3, Firestore).
- Database: MongoDB (managed via
@payloadcms/db-mongodband hosted through Firestore). - Storage: AWS S3 (managed via
@payloadcms/storage-s3).
- Local Setup Guides: Detailed instructions in
.wiki/local-setup/ - API Overview: How to consume the CMS in
.wiki/consuming-cms-api/ - Migrations: Guide for database schema changes in
.wiki/migrations/ - Workflow Detail: Deep dive into our Developer Workflow
For assistance, contact the DurianPy Engineering Leads.