---
myst:
html_meta:
"description": "Developer roadmap"
"property=og:description": "Developer roadmap"
"property=og:title": "Developer roadmap"
"keywords": "Volto, Plone, Development, Newbie"
---
# Developer roadmap
If you're coming to Volto as a backend Plone developer, you'll have to learn
and adjust to the new frontend-centered development.
But if you already have some frontend development experience any JS frameworks
such as AngularJS, Vue or React, you'll find that Volto is a relatively shallow
framework, structured as a typical Redux-centered React application. Although
there will be Volto-specific knowledge to be gained along the way, you can be
productive in a short time.
As a reference, here's an overview of knowledge and frameworks, for a more
complete and accurate picture of the Volto framework.
## The foundation
As is the case with similar modern JavaScript-based applications, you should know:
- Modern JavaScript development. Volto uses next-generation JavaScript. Follow
the [ES6 guide](https://flaviocopes.com/es6/) to get up to speed.
- React knowledge - [basic level is
fine](https://react.dev/learn/tutorial-tic-tac-toe) for the beginning, you'll progress
along the way. React itself is a simple and well documented framework.
- A basic understanding of JavaScript
[CommonJS](https://flaviocopes.com/commonjs/),
[NPM packages](https://flaviocopes.com/npm/),
[Yarn](https://flaviocopes.com/yarn/),
[Babel](https://flaviocopes.com/babel/) and
[Webpack](https://flaviocopes.com/webpack/).
## Basic Volto development
Once you've bootstrapped your Volto project you can already start hacking. Some
of the things you can do at this stage:
- Configure your text editor for JavaScript and Volto development
- Volto project-based development
- Understand and debug React errors
- Understand React component lifecycle
- Customize (shadow) Volto's builtin components
- Write a new block
- Adjust Volto's builtin settings
- Extend the Pastanaga theme
- Extend the richtext editor capabilities with new buttons and styles
- Use the Redux store
- Deploy your first project
After you've mastered the foundation and basic Volto development, the
learning-curve smoothes out. Volto uses simple and familiar concepts,
there is nothing on the level of ZCA that needs to be internalized before you
can be really productive.
## Normal, everyday Volto development
- Write new Redux actions and reducers
- Create new views for Plone content.
- Install and integrate new JavaScript libraries or third-party React
components
- Create a new Volto addon
- Integrate addon LESS with Volto's theme variables
- Use schema-based forms to write block components
- Write new form widgets
- Write tests for jest
- Write integration tests for Cypress
- Split your code and lazy-load libraries, to improve performance
- Use more advanced React concepts: hooks, context providers, etc.
- Make your code reusable, separate business logic and repeated behaviors as
Higher Order Components (HOCs)
- Write extensible blocks
## Advanced
Not really advanced but perhaps less common, here's some stuff you can do:
- Provide backend-based integration to your Volto code, write plone.restapi
endpoints, adapters and other extensions
- Custom integration for blocks to the backend using the block transfomers
concept
- Write Express middleware for Volto's server
- Customize Volto's Webpack configuration or project loader using Razzle
- Write a Redux middleware
- Start hacking on Volto.