3. The Case Study – Mastering Plone 6 development

3. The Case Study#

3.1. Background#

For this training we will build a website for a fictional Plone conference on Mars. By 2050 human civilisation has reached the stars and each year the conference is held on a different planet.

The conference website we want to create should be reusable in the following years, so some things should be configurable.

3.2. Requirements#

Here are some requirements that we want to meet when the site is done:

  • As a visitor I want to find current information on the conference.

  • As a visitor I want to find information about talks, trainings and keynotes.

  • As a speaker I want to be able to submit talks.

  • As a speaker I want to see and edit my submitted talks.

  • As an organizer I want to see a list of all proposed talks.

  • As an organizer I want to display the sponsors of the conference.

  • As a jury member I want to vote on talk submission.

  • As an organizer I want to decide which talks to accept and publish on the site, and which not.

Note that requirements connect roles with capabilities. This is important because we'll want to limit the capabilities to those to whom we assign particular roles.

3.3. Changing requirements#

If you have ever organized a conference, you will find that this story is pretty rough. Like in many real projects new requirements will come up during the development of the project.

Here are some specific feature requirements that will come up:

  • Talks should be assignable to rooms

  • Available values for audience, type of talk and rooms should be changable by a site administrator

  • Talks should have a time and date to display them in a calendar

  • We want a calendar view that shows the talks in a time table with rooms as columns

  • Talks should be able to have multiple speakers (e.g. for panel discussions)

  • We want to be able to easily submit lightning talks

We will see how you can adapt and extend the project to meet these changing requirements.

3.4. Tasks#

During the course of the training you will solve the following tasks.

  • Installation of backend and frontend

  • Create users and organize them

  • Configure some basic settings of the website

  • Create content with info about the conference using the default features

  • Create a Plone add-on to hold our own python code in a backend add-on

  • Create a content type 'talk' to store all the data required for a talk

  • Create a view to display a talk in a nice way

  • Create a Volto block variation that shows a list of talks to allow an easy overview

  • Create a new field to mark arbitrary content as 'featured'

  • Display this featured content on a dynamic frontpage

  • Add date and time to talks to assign them in a schedule

  • Display date and time on talks

  • Allow potential speakers to self-register and then create and submit talks

  • Store the data on the speaker in a custom content type

  • Create a relation from speaker to talk upon creation of a talk

  • Allow multiple speakers for one talk

  • Create a sponsor content type to manage sponsors

  • Store non-visible information about the sponsor in the sponsor-type

  • Display sponsors on all pages sorted by level

  • Allow some settings to be configurable by an admin in a control panel

  • Create a separate add-on to allow voting on talks

  • Create a React component for voting and connect it to the backend with a custom restapi-endpoint