• Stars
    star
    435
  • Rank 99,535 (Top 2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 8 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

React-based frontend for the Plone Content Management System

Volto

Volto logo png

Volto logo png

NPM Unit Tests Acceptance Tests Build Status Docs

Introduction

Volto is a ReactJS-based frontend for the Plone Content Management System. It will become the default UI for the upcoming Plone 6 release.

Plone is a CMS built on Python with more than 20 years of history and experience.

Plone has very interesting features that appeal to developers and users alike, such as customizable content types, hierarchical URL object traversing and a sophisticated content workflow powered by a granular permissions model. This allows you to build anything from simple websites to enterprise-grade intranets.

Volto exposes all these features and communicates with Plone via its REST API. Volto has the ability of being easily extensible, themeable, and customizable.

It features the Pastanaga editor, a modern block-based content layout editor. It is extensible and customizable, so you can adapt the default blocks provided to match your requirements, or build new ones to cover them.

Volto is extensible using add-ons. You can build your own or choose from the community released ones:

Demo

You can try a Volto online demo in https://6.demo.plone.org/

Try the demo locally

If you want to give Volto a quick try and you have Docker installed in your computer, bootstrap the demo using docker-compose:

git clone https://github.com/plone/volto.git
cd volto
docker-compose up

Go to http://localhost:3000 in your browser.

Quick Start

First get all the requirements installed on your system.

Prerequisites

The versions of Python that are supported in Volto depend on the version of Plone that you use.

Plone Python Volto
5.2 2.7, 3.6-3.8 15.0
6.0 3.8-3.11 16.0

Create a Volto project using the generator

Create a new Volto project by using the @plone/generator-volto utility.

It will bootstrap a Volto project in a folder of your choice with all the required boilerplate to start customizing your Volto site.

npm install -g yo @plone/generator-volto
yo @plone/volto

follow the prompts questions, provide myvoltoproject as project name then, when it finishes:

cd myvoltoproject

Bootstrap the Plone API backend

You can bootstrap a ready Docker Plone container with all the dependencies and ready for Volto use. We recommend to use the Plone docker builds based in pip plone/plone-backend image:

docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.5

or as an alternative if you have experience with Plone and you have all the dependencies installed on your system, you can use the supplied convenience buildout in the api folder by issuing the command:

make build-backend

Recommended Plone version

Volto is the default UI for Plone 6, so it will work for all Plone 6 released versions.

For the Plone 5 series, the latest released version of Plone 5 (with Python 3) is recommended (at the time of writing 5.2.10).

KGS (known good set of versions) for backend packages

On Plone 6, we recommend using the known good set (KGS) of package versions that are specified in the Plone release.

On Plone 5, Volto is currently tested with the following packages pinned to specific versions, and we recommend using the same versions, which are:

  • plone.restapi 8.32.6
  • plone.rest 2.0.0
  • plone.volto 4.0.3

This would be the docker command to spawn a Plone 5 container with the right KGS versions:

docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e ADDONS="plone.restapi==8.32.6 plone.volto==4.0.3 plone.rest==2.0.0" -e PROFILES="plone.volto:default-homepage" plone/plone-backend

Start Volto

yarn start

Browsing

Go to http://localhost:3000 in your browser.

Volto in Production

Volto is actively developed since 2017 and used in production since 2018 on the following websites:

Please create a new issue or pull request to add your Volto-site here!

Documentation

You can find the latest (in-progress) documentation in https://6.docs.plone.org/

Training

On the Plone Training website, you'll find Volto-dedicated training materials, plus other JavaScript-centered trainings.

Talks

Plone Conference Ferrara 2019

VΓ­ctor FernΓ‘ndez de Alba - Plone Beyond 2020: Jump into Volto today!

Rob Gietema - How to create your own Volto site!

Timo Stollenwerk - On the Road - Plone 6 and Beyond

Rodrigo Ferreira de Souza - Data migration to Plone 5.2 and Volto

Nicola Zambello - A Volto story: building a website by prototyping

Luca Pisani - Plone and React.js: An interview to Volto

Plone Conference Tokyo 2018

Rob Gietema - Volto

Rob Gietema / VΓ­ctor FernΓ‘ndez de Alba - Volto Extensibility Story

VΓ­ctor FernΓ‘ndez de Alba - Theming Volto

Timo Stollenwerk / VΓ­ctor FernΓ‘ndez de Alba / Ramon Navarro - Volto Case Studies

Timo Stollenwerk - Reinventing Plone, Roadmap to the Modern Web

Node Support

  • Node 18: Supported since Volto 17
  • Node 16: Supported since Volto 14
  • Node 14: No longer supported. It was supported from Volto 8.8.0 - 16
  • Node 12: No longer supported. It was supported from Volto 4 - 15
  • Node 10: No longer supported. It was supported from Volto 1 - 12

Browser support

Volto works well with any modern (evergreen) browser, including their mobile flavors: Chrome, Firefox, Safari, Edge.

We do not guarantee that deprecated browsers (e.g., Internet Explorer 11) are supported by Volto. Although proven possible, it's too great an effort to maintain. It is left to the integrator to provide support for it.

Upgrades

You can find the upgrade guide here: https://6.docs.plone.org/volto/upgrade-guide/index.html

Volto Development

For Volto development you need all the requirements already mentioned on the Quick Start section.

Checkout the Volto repository

git clone https://github.com/plone/volto.git

Install dependencies

yarn

Install Plone backend

Either using a Docker command:

docker run -it --rm --name=plone -p 8080:8080 -e SITE=Plone -e PROFILES="plone.volto:default-homepage" plone/plone-backend:6.0.5

or using the convenience makefile command:

make start-backend-docker

or running Plone on your machine (advanced), additional dependencies might be required, only for Plone experienced integrators/developers. Check the Plone Installation Documentation.

make build-backend

Run frontend

Either using a Docker command:

docker run -it --rm --name=volto --link backend -p 3000:3000 -e RAZZLE_INTERNAL_API_PATH=http://backend:8080/Plone -e RAZZLE_DEV_PROXY_API_PATH=http://backend:8080/Plone plone/plone-frontend:latest

or using the convenience makefile command:

make start-frontend-docker

or from the local repository code:

yarn && yarn start

Browsing

Browse to http://localhost:3000 in your browser.

Testing

yarn test

Acceptance testing

Here you can find a guide on how acceptance testing is done in Volto:

https://6.docs.plone.org/volto/developer-guidelines/acceptance-tests.html

Translations

If you would like contribute to translate Volto into several languages, please, read the Internationalization (i18n) guide.

Contributors

Alternative backends

Volto also supports other APIs like Guillotina, a Python resource management system, inspired by Plone and using the same basic concepts like traversal, content types, and permissions model.

Last but not least, it also supports a Volto Node.js-based backend reference API implementation that demos how other systems could also use Volto to display and create content through it.

Run a Guillotina backend

Disclaimer: Guillotina doesn't support the full API/features that Plone provides. Contributors are welcome.

docker-compose -f g-api/docker-compose.yml up -d

or using the convenience makefile command:

make start-backend-docker-guillotina

Running the acceptance tests with Guillotina backend

If you want to use Guillotina as a backend to run the tests you should run:

yarn ci:start-api-plone-guillotina

License

MIT License. Copyrights hold the Plone Foundation.

See LICENSE.md for details.

More Repositories

1

Plone

The Plone CMS: root integration package
Python
223
star
2

Products.CMFPlone

The core of the Plone content management system
Python
220
star
3

guillotina

Python AsyncIO data API to manage billions of resources
Python
182
star
4

ansible-playbook

An Ansible playbook for automated deployment of full-stack Plone servers.
Perl
90
star
5

plonedev.vagrant

A Vagrant setup for a Plone development VirtualBox
Shell
85
star
6

plone.restapi

RESTful API for Plone.
Python
79
star
7

plone.api

The Plone API
Python
78
star
8

buildout.coredev

Plone Core Development Buildout
Python
73
star
9

documentation

Plone Documentation
Makefile
71
star
10

plone.docker

plone on docker
Python
59
star
11

training

Plone Trainings
Makefile
48
star
12

mockup

A collection of client side patterns for faster and easier web development
JavaScript
45
star
13

diazo

Diazo applies a static HTML theme to a dynamic website
Python
41
star
14

plone.app.mosaic

Plone Mosaic main repository
JavaScript
33
star
15

plone.app.cmsui

Python
33
star
16

Installers-UnifiedInstaller

Linux/BSD/OSX Installer
Shell
28
star
17

plone.app.deco

Deco is a drag-and-drop layout composition system for Plone
JavaScript
27
star
18

heroku-buildpack-plone

Instructions to Heroku on how to run a Plone app.
Python
24
star
19

bobtemplates.plone

Python Code Templates for Plone Projects with mr.bob
CSS
24
star
20

plone.dexterity

Base framework for building content types, both through-the-web and as filesystem code for Zope (CMF/Plone)
Python
22
star
21

plone.app.theming

Integrates the Diazo theming engine with Plone
Python
21
star
22

buildout.deco

DEPRECATED: Deco and CMSUI buildout
19
star
23

plonecli

Plone Command Line Client - for creating and working with custom add-ons and themes
Python
19
star
24

plonetheme.barceloneta

The default theme for Plone Classic UI
CSS
18
star
25

plone.app.multilingual

Plone Multilingual Content Add-on
Python
18
star
26

Products.TinyMCE

TinyMCE integration Plone 4.x.y (4.3.7+ is on branch 1.3.x [default], master is stalled)
Python
18
star
27

plone.app.dexterity

Dexterity is a content type system for Plone
Python
18
star
28

plone.app.event

Event content type for Plone
Python
17
star
29

plone.app.toolbar

DEPRECATED The goal of plone.app.toolbar is to provide an even easier way to theme Plone by creating managing toolbar inside iframe.
Python
16
star
30

plone.app.discussion

General commenting system for Plone content
Python
15
star
31

plone-devstart

Script to set up a "safe" development environment for Plone
Python
15
star
32

plone.app.users

User registration and profile forms for the Plone CMS
Python
14
star
33

plone.app.contenttypes

Dexterity-based content types for Plone
Python
13
star
34

pastanaga

Pastanaga UI for the Plone CMS
13
star
35

plone.restapi-angular

A simple Angular SDK to build web sites easily on top of the Plone RESTAPI
TypeScript
12
star
36

plonetheme.sunburst

The default theme for Plone 4
CSS
12
star
37

Products.Archetypes

Default Content Type Framework for Plone 2.1-4.x
Python
12
star
38

plone.app.portlets

provides a Plone-specific user interface for plone.portlets, as well as a standard set of portlets that ship with Plone
Python
12
star
39

plone.app.workflowmanager

GUI for managing custom workflows in Plone
JavaScript
12
star
40

plone.org

Plone.org
JavaScript
11
star
41

planet.plone.org

Planet Plone Site Configuration and buildout. Add your feed here.
CSS
11
star
42

plone.app.blocks

A 'blocks' rendering model for Plone
Python
11
star
43

plone.recipe.codeanalysis

provides static code analysis for Buildout-based Python projects, including flake8, JSHint, CSS Lint, and other code checks
Python
11
star
44

plone.app.robotframework

Provides Robot Framework compatible resources and tools for writing functional Selenium tests (including acceptance tests) for Plone CMS and its add-ons.
Python
11
star
45

plone.app.layout

Core visual components for Plone, such as viewlets and general views
Python
10
star
46

plone-backend

Plone backend Docker images using Python 3 and pip.
Shell
10
star
47

plone.rest

Plone support for HTTP verbs (GET, POST, PUT, DELETE, ...)
Python
10
star
48

buildout.jenkins

Python
10
star
49

plone.reload

Configuration and code reload for Zope 2 and Plone without server restarts.
Python
10
star
50

create-volto-app

Set up the Volto with a single command
JavaScript
9
star
51

jenkins.plone.org

https://jenkins.plone.org settings docs at
Shell
9
star
52

volto-quanta

Quanta Design System - Volto package
HTML
9
star
53

ansible.plone_server

Ansible role to create a plone server
Jinja
9
star
54

plone.schemaeditor

Provides through-the-web editing of a Zope schema/interface.
Python
8
star
55

guillotina_elasticsearch

Python
8
star
56

pastanaga-angular

Angular implementation of the Pastanaga UI
TypeScript
8
star
57

plone.app.debugtoolbar

Debug toolbar for Plone
Python
8
star
58

plone.app.upgrade

Database upgrade steps for the Plone CMS
Python
8
star
59

plone.i18n

Text normalization logic and language, country, cctld data.
Python
8
star
60

plone.app.standardtiles

Plone Standard tiles (reflecting viewlets et al) to be used with Plone Mosaic
Python
8
star
61

plone.namedfile

Handle File and Image fields targeting, but not depending on, Plone Dexterity content
Python
8
star
62

papyrus

A buildout to run multiple versions of the plone documentation
Python
8
star
63

ploneorg.core

Core policy package of the plone.org site project.
Python
7
star
64

plone.protect

HTTP protection utilities for the Plone CMS
Python
7
star
65

plone.app.content

Various views for Plone, such as folder_contents, as well as general content infrastructure, such as base classes and name choosers.
Python
7
star
66

plone.app.widgets

Integrating plone.widgets into plone
Python
7
star
67

Products.PloneOrg

Plone.org website
Python
7
star
68

plone.server

This project has moved to https://github.com/plone/guillotina
Python
7
star
69

plone.outputfilters

Provides a framework for registering filters that get applied to text as it is rendered.
Python
6
star
70

setup-plone

Github Action to setup Plone
6
star
71

plone.recipe.zope2instance

zc.buildout recipe to setup and configure a Zope 2 instance.
Python
6
star
72

Products.PlonePAS

User and group implementation for the Plone CMS and Zope PluggableAuthService
Python
6
star
73

plone-frontend

Plone frontend Docker images using Node 16.
Makefile
6
star
74

Products.LinguaPlone

multilingual/translation solution for Plone content based on Archetypes
Python
6
star
75

Products.ResourceRegistries

Provides a registry for linked Stylesheet and Javascript files.
Python
6
star
76

svn-migrate

Scripts and docs for SVN to Github migration
Python
6
star
77

plone.formwidget.recurrence

Recurrence widgets for Plone
Python
6
star
78

plone.app.controlpanel

Plone's "Site Setup" UI
Python
6
star
79

plone.app.tiles

Plone UI integration for plone.tiles
Python
6
star
80

plone.app.linkintegrity

link integrity checking for Plone content
Python
6
star
81

training.plone.org

Landing Page for
CSS
6
star
82

plone.event

Tools for RFC2445 based calendarish content . Part of PLIP10886
Python
5
star
83

plone.app.z3cform

A Plone specific integration and HTML mark-up for z3c.form
Python
5
star
84

guillotina_cms

WIP implementation of guillotina layer to offer Plone REST API
Python
5
star
85

plone.supermodel

Provides XML import and export for schema interfaces based on zope.schema fields
Python
5
star
86

plone.app.versioningbehavior

Behavior enabling CMFEditions versioning functionality for dexterity contents
Python
5
star
87

blocks-conversion-tool

A tool to convert HTML (as used in Plone Classic) to Blocks (as used on Volto)
JavaScript
5
star
88

plone.openid

Zope2 PAS Plugin for OpenID Authentication
Python
5
star
89

heroku-button-plone

A template for a simple Heroku-hosted Plone site.
5
star
90

plone.app.page

None
Python
5
star
91

collective.indexing

collective.indexing is an approach to provide an abstract framework for queuing and optimizing index operations in Plone as well as dispatching them to various backends.
Python
5
star
92

ploneconf.org

Site for the 2022 Plone Conference
JavaScript
5
star
93

plone-vs-snippets

Visual Studio Code Snippets
5
star
94

Products.CMFEditions

Provides versioning in Plone
Python
5
star
95

plone.dotfiles

collection of snippets/templates for dotfiles that Plone developers use to make our lives easier
Shell
5
star
96

plone.restapi-client

JavaScript Plone RESTAPI client - JS framework agnostic library based on TanStack Query
TypeScript
5
star
97

communication.plone5-posters

artwork for the Plone 5 launch posters
4
star
98

volto-reference-backend

Volto Reference Backend
JavaScript
4
star
99

plone_client

CSS
4
star
100

plone.multilingualbehavior

adds multilingual behavior to content types built with Dexterity. Plone 4 only
Python
4
star