--- myst: html_meta: "description": "Volto add-ons development training intro" "property=og:description": "Volto add-ons development training" "property=og:title": "Volto add-ons development intro" "keywords": "Volto" --- (voltoaddons-intro-label)= # Introduction ## Who are you? Tell us about yourselves: - Name, company, country... - What is your Plone experience? - What is your JavaScript experience? - What is your Volto experience? - What are your expectations for this hands-on session? (voltoaddons-intro-what-will-we-do-label)= ## What will we do? Some technologies and tools we use during the training: - [React] & JSX - [Yarn] - [Volto] and [Plone], of course - [generator-volto] This training assumes that you have already taken (either in person at a Plone Conference or online) the existing React and Volto trainings. If you're following this training course on your own, you should first go through the {ref}`volto-label` and {ref}`voltohandson-label` trainings. In a real training the instructor should quickly go through a number of key concepts of React and Volto development, as a refresher. ## What to expect At the end of this course you will know how to extend Volto using add-ons, what are the current capabilities of add-ons, their pros and cons, how to distribute add-ons and how to deploy them. ### Roadmap - bootstrap a Volto project using the `@plone/volto` skeleton generator - bootstrap a Volto add-on from scratch - develop a simple Volto block - write an action/reducer pair for network requests - connect the block to network-fetched async data - learn how to make React code reusable - learn how to make blocks extensible (voltoaddons-intro-documentation-label)= ## The hands-on exercise The hands-on exercise will feature developing an add-on that provides table views for data files (CSV). We will be using real-world patterns and development models based on the experience gained while developing several websites that use these types of add-ons. Here's a preview of the block we'll build: ```{image} _static/final-block.png ``` We will be facing different challenges, and we will be solving them, introducing or refreshing some concepts covered in the previous training classes. We will cover the proper solution to each challenge, and we will provide an overview of what to expect when developing for Volto. ## Before you start You'll need to have a Plone instance with `plone.restapi` integrated. The quickest way to get a Plone instance running is with Docker: ```shell docker run -it --rm --name=plone \ -p 8080:8080 -e SITE=Plone -e ADDONS="plone.volto" \ -e ZCML="plone.volto.cors" \ -e PROFILES="plone.volto:default-homepage" \ plone ``` If you have the whole tool chain setup to develop Plone, you can also clone and use Volto's development backend setup: ```shell git clone https://github.com/plone/volto cd volto make build-backend make start-backend ``` [generator-volto]: https://github.com/plone/generator-volto [plone]: https://plone.org [react]: https://react.dev/ [volto]: https://github.com/plone/volto [yarn]: https://yarnpkg.com