I worked on this project during my internship at fffunction Ltd. The client wanted a website for their surf clubs, but a website where the content can be modify by administrators. For that, we used Wagtail, a CMS programmed in Python. With Wagtail, we created blocks for each pages: title and description, people, locations... There is different page template: home page, standard page, blog/press page... The things that change between them is what blocks you can file. We also created snippets: in Wagtail, we used them as a "category" where we only need a title and the slug: people, locations, blog categories, job categories...
The main challenge was to create a secure website, as the content will be modify by the client. For example, we don't want the website to break if the client forgot to file a block. For that we used condition: if content exists then shows content. For the blog and press page, it works with a for loop: for every article, shows them. It works the same for images: if there is not image, replace them by the fallback image. Another challenge was to fit the back-end with the front-end/design of the website. Sometimes, designers will create a block with markups that can't be done in the back-end. Our job was to make everything working together.