A Plone add-on supporting the creation of forms inside blocks.
This add-on is composed of two packages:
- Backend:
plone.formblock, for Plone 6.1 and 6.2. - Frontend:
@plone/volto-form-block, for Volto 19 or later.
In order to have the complete solution you need to install both of them in your project, please follow the instructions: backend and frontend.
This add-on began as an evolution of RedTurtle Technology's volto-form-block and collective.volto.formsupport, but has since taken its own direction and is not compatible with forms created by those add-ons.
- An operating system that runs all the requirements mentioned.
- uv
- nvm
- Node.js and pnpm 24
- Make
- Git
- Docker (optional)
-
Clone this repository, then change your working directory.
git clone git@github.com:plone/form-block.git cd form-block -
Install this code base.
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 shell session, 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 the following.
- Docker images for Backend and Frontend πΌοΈ
- A stack with a Traefik router and a PostgreSQL database ποΈ
- Accessible at http://form-block.localhost π
Run the following commands in a shell session.
make stack-create-site
make stack-startAnd... 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 plone.formblock.
- 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 repository (excluding existing add-ons 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 check your code against quality standards, run the following shell command.
make checkTo format and rewrite the code base, ensuring it adheres to quality standards, run the following shell command.
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 i18nThis add-on is built on top of the awesome add-ons volto-form-block and collective.volto.formsupport developed by RedTurtle Technology.
The current version of the codebase was developed by kitconcept GmbH and sponsored by the Fachhochschule Nordwestschweiz.
Generated using Cookieplone (2.0.0b3) and cookieplone-templates (6678734) on 2026-06-10 18:43:35.112495. A special thanks to all contributors and supporters!