# volto-middleware-binary **Repository Path**: mirrors_collective/volto-middleware-binary ## Basic Information - **Project Name**: volto-middleware-binary - **Description**: A new add-on for Volto that improves upon the standard binary middleware by offering superior performance and lower memory consumption. - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-08 - **Last Updated**: 2026-05-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Volto Middleware Binary (volto-middleware-binary) A new add-on for Volto that improves upon the standard binary middleware by offering superior performance and lower memory consumption. For more information and benchmarks, please refer to the original pull request: [plone/volto#5299](https://github.com/plone/volto/pull/5299) and [plone/volto#6317](https://github.com/plone/volto/pull/6317). [![npm](https://img.shields.io/npm/v/volto-middleware-binary)](https://www.npmjs.com/package/volto-middleware-binary) [![](https://img.shields.io/badge/-Storybook-ff4785?logo=Storybook&logoColor=white&style=flat-square)](https://collective.github.io/volto-middleware-binary/) [![Code analysis checks](https://github.com/collective/volto-middleware-binary/actions/workflows/code.yml/badge.svg)](https://github.com/collective/volto-middleware-binary/actions/workflows/code.yml) [![Unit tests](https://github.com/collective/volto-middleware-binary/actions/workflows/unit.yml/badge.svg)](https://github.com/collective/volto-middleware-binary/actions/workflows/unit.yml) ## Features * **Better Performance**: Offers superior performance and lower memory consumption compared to the default middleware. * **Full Header Proxying**: Seamlessly proxies all request and response headers between the client and the Plone backend. * **Proxy-Aware Headers**: Implements standard `X-Forwarded-For` and `X-Forwarded-Host` headers, ensuring the backend is aware of the original request's context. * **Query String Forwarding**: Correctly forwards any query strings from the original request to the backend. ## Installation To install your project, you must choose the method appropriate to your version of Volto. ### Volto 17 and earlier Create a new Volto project (you can skip this step if you already have one): ``` npm install -g yo @plone/generator-volto yo @plone/volto my-volto-project --addon volto-middleware-binary cd my-volto-project ``` Add `volto-middleware-binary` to your package.json: ```JSON "addons": [ "volto-middleware-binary" ], "dependencies": { "volto-middleware-binary": "*" } ``` Download and install the new add-on by running: ``` yarn install ``` Start volto with: ``` yarn start ``` ### Volto 18 and later Add `volto-middleware-binary` to your `package.json`: ```json "dependencies": { "volto-middleware-binary": "*" } ``` Add `volto-middleware-binary` to your `volto.config.js`: ```javascript const addons = ['volto-middleware-binary']; ``` ## Test installation Visit http://localhost:3000/ in a browser, login, and check the awesome new features. ## Development The development of this add-on is done in isolation using a new approach using pnpm workspaces and latest `mrs-developer` and other Volto core improvements. For this reason, it only works with pnpm and Volto 18 (currently in alpha). ### Pre-requisites - [Node.js](https://6.docs.plone.org/install/create-project.html#node-js) - [Make](https://6.docs.plone.org/install/create-project.html#make) - [Docker](https://6.docs.plone.org/install/create-project.html#docker) ### Make convenience commands Run `make help` to list the available commands. ```text help Show this help install Installs the add-on in a development environment start Starts Volto, allowing reloading of the add-on during development build Build a production bundle for distribution of the project with the add-on i18n Sync i18n ci-i18n Check if i18n is not synced format Format codebase lint Lint, or catch and remove problems, in code base release Release the add-on on npmjs.org release-dry-run Dry-run the release of the add-on on npmjs.org test Run unit tests ci-test Run unit tests in CI backend-docker-start Starts a Docker-based backend for development storybook-start Start Storybook server on port 6006 storybook-build Build Storybook acceptance-frontend-dev-start Start acceptance frontend in development mode acceptance-frontend-prod-start Start acceptance frontend in production mode acceptance-backend-start Start backend acceptance server ci-acceptance-backend-start Start backend acceptance server in headless mode for CI acceptance-test Start Cypress in interactive mode ci-acceptance-test Run cypress tests in headless mode for CI ``` ### Development environment set up Install package requirements. ```shell make install ``` ### Start developing Start the backend. ```shell make backend-docker-start ``` In a separate terminal session, start the frontend. ```shell make start ``` ### Lint code Run ESlint, Prettier, and Stylelint in analyze mode. ```shell make lint ``` ### Format code Run ESlint, Prettier, and Stylelint in fix mode. ```shell make format ``` ### i18n Extract the i18n messages to locales. ```shell make i18n ``` ### Unit tests Run unit tests. ```shell make test ``` ### Run Cypress tests Run each of these steps in separate terminal sessions. In the first session, start the frontend in development mode. ```shell make acceptance-frontend-dev-start ``` In the second session, start the backend acceptance server. ```shell make acceptance-backend-start ``` In the third session, start the Cypress interactive test runner. ```shell make acceptance-test ``` ## License The project is licensed under the MIT license. ## Credits and Acknowledgements 🙏 Crafted with care by **Generated using [Cookieplone (0.8.2)](https://github.com/plone/cookieplone) and [cookiecutter-plone (d9b5293)](https://github.com/plone/cookiecutter-plone/commit/d9b52933cbc6efd137e93e35a270214e307359f0) on 2025-01-23 23:24:51.282833**. A special thanks to all contributors and supporters!