Plone 6 Project#
The project template creates a Plone 6 project, with Volto or Classic UI.
uvx cookieplone project
Template ID |
|
Group |
Projects |
Folder in |
|
Folder generated with the default answers |
|
Requirements#
Before its first question, the template checks for:
Cookieplone 2.0.0a2 or later.
uv.
Node.js 20, 22, or 24.
git.
Docker 26 or later. Docker is optional: when it's missing, the check shows a warning.
Questions#
Cookieplone asks these questions in this order.
A default in {{ }} is computed from earlier answers.
Field |
Question |
Default |
Choices |
Validation |
|---|---|---|---|---|
|
Project Title |
|
— |
— |
|
Project Description |
|
— |
— |
|
Project Slug (Used for repository id) |
|
— |
— |
|
Project URL (without protocol) |
|
— |
|
|
Author |
|
— |
— |
|
Author E-mail |
|
— |
|
|
Python Package Name |
|
— |
|
|
Should we use prerelease versions? |
|
— |
— |
|
Plone Version |
|
— |
|
|
Use Volto as frontend? |
|
— |
— |
|
Volto Version (asked only when |
|
— |
|
|
Volto Addon Name (asked only when |
|
— |
|
|
Language |
|
|
|
|
GitHub or GitLab username or organization slug from URL |
|
— |
— |
|
Container Registry |
|
|
— |
|
Which persistent storage to use in the deployment stack? |
|
|
— |
|
Should we setup a caching server? |
|
— |
— |
|
Add Ansible playbooks? |
|
— |
— |
|
Add GitHub Action to Deploy this project? |
|
— |
— |
|
Would you like to add a documentation scaffold to your project? |
|
— |
— |
What your answers change#
The template generates parts of the project with sub-templates:
Sub-template |
Generates |
When |
|---|---|---|
|
|
Always |
|
|
|
|
|
|
|
Cache settings for the project |
|
|
Project settings, such as the site language |
Always |
|
|
Always |
|
|
Always |
Then the post-generation hook:
creates the namespace packages of
python_package_nameinbackend/src;formats the backend code, and the frontend code when
feature_headlessis yes;removes the Ansible files from
devopswhendevops_ansibleis no;removes the GitHub Actions deployment files from
devopswhendevops_gha_deployis no;moves
docs/.readthedocs.yamlto.readthedocs.ymlwheninitialize_documentationis yes;initializes a git repository.
Generated files#
With the default answers, the template generates these files, three levels deep:
project-title/
├── .cookieplone.json
├── .editorconfig
├── .github/
│ ├── dependabot.yml
│ ├── instructions/
│ │ ├── docs.instructions.md
│ │ ├── general/
│ │ └── volto.instructions.md
│ └── workflows/
│ ├── backend.yml
│ ├── changelog.yml
│ ├── config.yml
│ ├── docs.yml
│ ├── frontend.yml
│ ├── main.yml
│ ├── manual_deploy.yml
│ ├── rtd-pr-preview.yml
│ └── varnish.yml
├── .gitignore
├── .readthedocs.yml
├── .vscode/
│ ├── extensions.json
│ ├── launch.json
│ └── settings.json
├── backend/
│ ├── .dockerignore
│ ├── .editorconfig
│ ├── .flake8
│ ├── .gitignore
│ ├── bobtemplate.cfg
│ ├── CHANGELOG.md
│ ├── CONTRIBUTORS.md
│ ├── Dockerfile
│ ├── Dockerfile.acceptance
│ ├── instance.yaml
│ ├── LICENSE.GPL
│ ├── LICENSE.md
│ ├── Makefile
│ ├── mx.ini
│ ├── news/
│ │ ├── .changelog_template.jinja
│ │ └── .gitkeep
│ ├── pyproject.toml
│ ├── README.md
│ ├── scripts/
│ │ └── create_site.py
│ ├── src/
│ │ └── project/
│ ├── tests/
│ │ ├── conftest.py
│ │ └── setup/
│ └── version.txt
├── CHANGELOG.md
├── devops/
│ ├── .env_dist
│ ├── .env_gha
│ ├── .gitignore
│ ├── ansible.cfg
│ ├── etc/
│ │ ├── docker/
│ │ └── keys/
│ ├── inventory/
│ │ ├── group_vars/
│ │ └── hosts.yml
│ ├── Makefile
│ ├── playbooks/
│ │ └── setup.yml
│ ├── README-GHA.md
│ ├── README-GITLAB.md
│ ├── README.md
│ ├── requirements/
│ │ ├── collections.yml
│ │ ├── requirements.txt
│ │ └── roles.yml
│ ├── stacks/
│ │ └── project-title.example.com.yml
│ ├── tasks/
│ │ ├── base/
│ │ ├── handlers/
│ │ └── swarm/
│ └── varnish/
│ ├── Dockerfile
│ └── etc/
├── docker-compose.yml
├── docs/
│ ├── .gitignore
│ ├── .vale.ini
│ ├── docs/
│ │ ├── _static/
│ │ ├── _templates/
│ │ ├── concepts/
│ │ ├── conf.py
│ │ ├── glossary.md
│ │ ├── how-to-guides/
│ │ ├── index.md
│ │ ├── reference/
│ │ ├── robots.txt
│ │ └── tutorials/
│ ├── LICENSE.md
│ ├── Makefile
│ ├── pyproject.toml
│ ├── README.md
│ └── styles/
│ └── config/
├── frontend/
│ ├── .dockerignore
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .npmignore
│ ├── .npmrc
│ ├── .pnpmfile.cjs
│ ├── .prettierignore
│ ├── .prettierrc
│ ├── .storybook/
│ │ ├── main.js
│ │ └── preview.jsx
│ ├── .stylelintrc
│ ├── cypress/
│ │ ├── .gitkeep
│ │ ├── support/
│ │ ├── tests/
│ │ └── tsconfig.json
│ ├── cypress.config.js
│ ├── Dockerfile
│ ├── Makefile
│ ├── mrs.developer.json
│ ├── package.json
│ ├── packages/
│ │ └── volto-project-title/
│ ├── pnpm-workspace.yaml
│ ├── README.md
│ └── volto.config.js
├── Makefile
├── news/
│ ├── .changelog_template.jinja
│ └── .gitkeep
├── README.md
├── repository.toml
├── towncrier.toml
└── version.txt
Next steps#
The generated README.md explains how to work on the project.
From the project folder, install the project, create a Plone site, and start the backend at http://localhost:8080:
make install
make backend-create-site
make backend-start
In another terminal, start the frontend at http://localhost:3000:
make frontend-start
To run the project as a Docker Compose stack at http://project-title.localhost, run make stack-create-site, then make stack-start.