A new project using Plone 6.
Ensure you have the following installed:
- Python 3.11 🐍
- Node 22 🟩
- pnpm 🧶
- Docker 🐳
- Clone the repository:
git clone [email protected]:collective/fluffy.git
cd fluffy
- Install both Backend and Frontend:
make install
- Create a new Plone site on your first run:
make backend-create-site
- Start the Backend at http://localhost:8080/:
make backend-start
- In a new terminal, start the Frontend at http://localhost:3000/:
make frontend-start
Voila! Your Plone site should be live and kicking! 🎉
Deploy a local Docker Compose
environment that includes:
- Docker images for Backend and Frontend 🖼️
- A stack with a Traefik router and a Postgres database 🗃️
- Accessible at http://fluffy.localhost 🌐
Execute the following:
make stack-start
make stack-create-site
And... you're all set! Your Plone site is up and running locally! 🚀
This monorepo consists of the following distinct sections:
- backend: Houses the API and Plone installation, utilizing pip instead of buildout, and includes a policy package named fluffy.
- frontend: Contains the React (Volto) package.
- devops: Encompasses Docker Stack, Ansible playbooks, and Cache settings.
- docs: Scaffold for writing documentation for your project.
- All necessary codebases to run the site are contained within the repo (excluding existing addons for Plone and React).
- Specific GitHub Workflows are triggered based on changes in each codebase (refer to .github/workflows).
- Simplifies the creation of Docker images for each codebase.
- Demonstrates Plone installation/setup without buildout.
To automatically format your code and ensure it adheres to quality standards, execute:
make check
To format the codebase, it is possible to run format
:
make format
Section | Tool | Description | Configuration |
---|---|---|---|
backend | Ruff | Python code formatting, imports sorting | backend/pyproject.toml |
backend | zpretty |
XML and ZCML formatting | -- |
frontend | ESLint | Fixes most common frontend issues | frontend/.eslintrc.js |
frontend | prettier | Format JS and Typescript code | frontend/.prettierrc |
frontend | Stylelint | Format Styles (css, less, sass) | frontend/.stylelintrc |
Formatters can also be run within the backend
or frontend
folders.
or lint
:
make lint
Section | Tool | Description | Configuration |
---|---|---|---|
backend | Ruff | Checks code formatting, imports sorting | backend/pyproject.toml |
backend | Pyroma | Checks Python package metadata | -- |
backend | check-python-versions | Checks Python version information | -- |
backend | zpretty |
Checks XML and ZCML formatting | -- |
frontend | ESLint | Checks JS / Typescript lint | frontend/.eslintrc.js |
frontend | prettier | Check JS / Typescript formatting | frontend/.prettierrc |
frontend | Stylelint | Check Styles (css, less, sass) formatting | frontend/.stylelintrc |
Linters can be run individually within the backend
or frontend
folders.
Generate translation files for Plone and Volto with ease:
make i18n
Generated using Cookieplone (0.9.6) and cookieplone-templates (3344406) on 2025-04-09 01:38:26.336045. A special thanks to all contributors and supporters!