Next generation Wagtail demo, born in Reykjavik
Alternatives To Bakerydemo
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
3 days ago21bsd-3-clausePython
Next generation Wagtail demo, born in Reykjavik
Wagtail Pipit183
9 days ago23mitPython
Pipit is a Wagtail CMS boilerplate which aims to provide an easy and modern developer workflow with a React-rendered frontend.
Docker Wagtail Develop56
17 days ago5Shell
Cookiecutter Django Wagtail48
9 months ago3bsd-3-clausePython
Cookiecutter Django + Wagtail
Nhsx Website34
9 days ago17mitPython
NHSX Website - built with Wagtail
Airavata Django Portal23
a month ago55apache-2.0Python
Apache Airavata Django Portal Framework
5 days ago59mitPython
The Polytechnic's content management system
20 days ago44agpl-3.0Python
Project Moore: a Wagtail/Django based web-application for the UTN IT infrastructure
3 years ago1bsd-3-clauseCSS
Theme for Wagtail
Docker Wagtail9
5 years ago
Simple starting point for wagtail with docker
Alternatives To Bakerydemo
Select To Compare

Alternative Project Comparisons

Wagtail demo project

This is a demonstration project for the amazing Wagtail CMS.

The demo site is designed to provide examples of common features and recipes to introduce you to Wagtail development. Beyond the code, it will also let you explore the admin / editorial interface of the CMS.

Note we do not recommend using this project to start your own site - the demo is intended to be a springboard to get you started. Feel free to copy code from the demo into your own project.

Wagtail Features Demonstrated in This Demo

This demo is aimed primarily at developers wanting to learn more about the internals of Wagtail, and assumes you'll be reading its source code. After browsing the features, pay special attention to code we've used for:

  • Dividing a project up into multiple apps
  • Custom content models and "contexts" in the "breads" and "locations" apps
  • A typical weblog in the "blog" app
  • Example of using a "base" app to contain misc additional functionality (e.g. Contact Form, About, etc.)
  • "StandardPage" model using mixins borrowed from other apps
  • Example of customizing the Wagtail Admin via wagtail_hooks
  • Example of using the Wagtail "snippets" system to represent bread categories, countries and ingredients
  • Example of a custom "Galleries" feature that pulls in images used in other content types in the system
  • Example of creating ManyToMany relationships via the Ingredients feature on BreadPage
  • Lots more

Document contents


If you want to see what Wagtail is all about, we suggest trying it out through Gitpod. If you want to set up Wagtail locally instead, and you're new to Python and/or Django, we suggest you run this project on a Virtual Machine using Vagrant or Docker (whichever you're most comfortable with). Both Vagrant and Docker will help resolve common software dependency issues. Developers more familiar with virtualenv and traditional Django app setup instructions should skip to Setup with virtualenv.

Setup with Gitpod

Set up a development environment and run this demo website with a single click (requires a Github account):

Open in Gitpod

Once Gitpod has fully started, and a preview of the bakery website has appeared in the "Simple Browser" panel, click the arrow button to the right of the URL bar to open the website in a new tab. Go to /admin/ and login with admin / changeme.

Setup with Vagrant



Once you've installed the necessary dependencies run the following commands:

git clone
cd bakerydemo
vagrant up
vagrant ssh
# then, within the SSH session:
./ runserver

The demo site will now be accessible at http://localhost:8000/ and the Wagtail admin interface at http://localhost:8000/admin/.

Log into the admin with the credentials admin / changeme.

Use Ctrl+c to stop the local server. To stop the Vagrant environment, run exit then vagrant halt.

Setup with Docker



Run the following commands:

git clone
cd bakerydemo
docker compose up --build -d

After this command completes and returns to the command prompt, wait 10 more seconds for the database setup to complete. Then run:

docker compose run app /venv/bin/python load_initial_data

If this fails with a database error, wait 10 more seconds and re-try. Finally, run:

docker compose up

The demo site will now be accessible at http://localhost:8000/ and the Wagtail admin interface at http://localhost:8000/admin/.

Log into the admin with the credentials admin / changeme.

Important: This docker-compose.yml is configured for local testing only, and is not intended for production use.


To tail the logs from the Docker containers in realtime, run:

docker compose logs -f

Setup with Virtualenv

You can run the Wagtail demo locally without setting up Vagrant or Docker and simply use Virtualenv, which is the recommended installation approach for Django itself.



With PIP and virtualenvwrapper installed, run:

mkvirtualenv wagtailbakerydemo
python --version

Confirm that this is showing a compatible version of Python 3.x. If not, and you have multiple versions of Python installed on your system, you may need to specify the appropriate version when creating the virtualenv:

rmvirtualenv wagtailbakerydemo
mkvirtualenv wagtailbakerydemo --python=python3.9
python --version

Now we're ready to set up the bakery demo project itself:

cd ~/dev [or your preferred dev directory]
git clone
cd bakerydemo
pip install -r requirements/development.txt

Next, we'll set up our local environment variables. We use django-dotenv to help with this. It reads environment variables located in a file name .env in the top level directory of the project. The only variable we need to start is DJANGO_SETTINGS_MODULE:

cp bakerydemo/settings/ bakerydemo/settings/
touch .env

To set up your database and load initial data, run the following commands:

./ migrate
./ load_initial_data
./ runserver

Log into the admin with the credentials admin / changeme.

Next steps

Hopefully after you've experimented with the demo you'll want to create your own site. To do that you'll want to run the wagtail start command in your environment of choice. You can find more information in the getting started Wagtail CMS docs.


If you're a Python or Django developer, fork the repo and get stuck in! If you'd like to get involved you may find our contributing guidelines a useful read.

Preparing this archive for distribution

If you change content or images in this repo and need to prepare a new fixture file for export, do the following on a branch:

./ dumpdata --natural-foreign --indent 2 -e auth.permission -e contenttypes -e wagtailcore.GroupCollectionPermission -e wagtailcore.revision -e wagtailimages.rendition -e sessions -e wagtailsearch.indexentry -e wagtailsearch.sqliteftsindexentry -e wagtailcore.referenceindex -e wagtailcore.pagesubscription -e wagtailcore.modellogentry -e wagtailcore.pagelogentry > bakerydemo/base/fixtures/bakerydemo.json
prettier --write bakerydemo/base/fixtures/bakerydemo.json

Please optimize any included images to 1200px wide with JPEG compression at 60%. Note that media/images is ignored in the repo by .gitignore but media/original_images is not. Wagtail's local image "renditions" are excluded in the fixture recipe above.

Make a pull request to wagtail/bakerydemo

Other notes

Note on demo search

Because we can't (easily) use ElasticSearch for this demo, we use wagtail's native DB search. However, native DB search can't search specific fields in our models on a generalized Page query. So for demo purposes ONLY, we hard-code the model names we want to search into search.views, which is not ideal. In production, use ElasticSearch and a simplified search query, per

Sending email from the contact form

The following setting in and ensures that live email is not sent by the demo contact form.

EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

In production on your own site, you'll need to change this to:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'

and configure SMTP settings appropriate for your email provider.

Ownership of demo content

All content in the demo is public domain. Textual content in this project is either sourced from Wikimedia (Wikipedia for blog posts, Wikibooks for recipes) or is lorem ipsum. All images are from either Wikimedia Commons or other copyright-free sources.

Popular Wagtail Projects
Popular Docker Projects
Popular Content Management Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.