Skip to content

engineervix/cookiecutter-wagtail-vix

Repository files navigation

Welcome to cookiecutter-wagtail-vix 👋

a minimal, batteries-included, reusable project skeleton to serve as a starting point for a Wagtail project.

Continuous Integration Coverage Status Updates python 3.12 Code style: black

License: MIT GitHub commits since latest release (by SemVer including pre-releases) GitHub last commit (branch)

Commitizen friendly Conventional Commits Conventional Changelog

Contents generated with DocToc

Screenshot

Introduction

Embarking on any project "from scratch" is a formidable undertaking, entailing intricate configurations and setup that can quickly become overwhelming. Whether it's the time-consuming task of handling dependencies, structuring the project, or setting up a cohesive development environment – the challenges are universal.

Enter cookiecutter-wagtail-vix – a template crafted to simplify the kick-off of Wagtail projects. This template is designed to streamline the setup process, sparing you from the headaches that often accompany the early stages of a project. By starting your new Wagtail project using cookiecutter-wagtail-vix, you leapfrog the tedious setup tasks, allowing you to focus on what truly matters – crafting your project's unique functionality with ease.

Features ✨

Here are some key highlights:

  • Tech stack
    • Docker
    • Python 3.12, with Poetry for dependency management, and Black + ruff for linting.
    • Django 5.0
    • Wagtail 5.2
    • Node.js 18, with Webpack 5 to bundle frontend assets
  • A good starting point for any Wagtail project, with essential batteries included and very minimal assumptions on what you are building.
  • Production-ready setup, so you don't waste time going from development to production.
  • Includes 3 Django apps to start with:
    • home: Has a HomePage model which just extends the Wagtail Page model and does nothing else. This gives you freedom to set it up as you please.
    • core: has search functionality and wagtail-font-awesome-svg configuration. The idea is to use this app for global functions, utilities, etc. Feel free to rename it to utils or utilities if you like!
    • users: Custom User model as recommended in the Django docs. The model just extends AbstractUser and does nothing else, so you can customise it as you please.
  • Ready to run background tasks via Django-RQ:
    • The django-rq package is installed, and all the configuration available, though commented out. Please see note below.
  • Custom Bootstrap 5 Compilation using Sass. No other frontend dependencies.
  • Configured to work with pytest in conjunction with pytest-django (plus other pytest plugins), factory_boy and wagtail-factories. You have a starting test coverage of 100%! Ain't that great?
  • Task execution and automation using invoke.
  • Includes some useful packages to boost your DX and productivity, for instance:
  • Linting and formatting:
  • Detailed documentation via MkDocs
  • A minimal, ready to use VSCode configuration, just update the path to your python executable in the generated .vscode/settings.json.
  • Continuous integration (CI) via Github Actions / Gitlab CI/CD.
  • Automatic dependency management via Renovate (for Github repos only).

Getting Started 🚀

In order to generate a new project from this cookiecutter template:

  1. ensure that you have cookiecutter installed on your computer
  2. run cookiecutter https://github.com/engineervix/cookiecutter-wagtail-vix.git in your favourite shell. You’ll be prompted for some values, such as project_name, , project_slug, email etc. A new wagtail project will be created in a folder named according to the project_slug at your current location.
  3. Thereafter, cd into the project folder created above and follow the instructions in your shiny new project's README.

A note regarding django-rq

If you would like to run background tasks via django-rq, you'll need to make the following changes:

  1. in settings/base.py

    • uncomment the entry in the THIRD_PARTY_APPS list
    • uncomment RQ_QUEUES
  2. in settings/production.py

    • uncomment RQ_QUEUES
    • uncomment the commented out items in the LOGGING dict
  3. in Procfile

    • uncomment the worker entry
  4. in .env

    • uncomment the line RQ_QUEUE=redis://redis:6379/0
  5. in urls.py

    • uncomment the line with path("dj-rq/", include("django_rq.urls")),
  6. in docker-compose.yml

    • uncomment the redis service entry
    • uncomment the worker service entry

Contributing 🤝

This project follows the all-contributors specification. Contributions, issues and feature requests are most welcome!

Feel free to check the issues page and take a look at the contributing guide before you get started.

To maintain code quality and formatting consistency, we utilize pre-commit hooks. These hooks automatically check and format your code before each commit. This helps ensure that the codebase remains clean and consistent throughout the development process. Set up the Git pre-commit hooks by running the following

pre-commit install && pre-commit install --hook-type commit-msg

See pre-commit-config.yaml for more details. In addition, please note the following:

  • if you're making code contributions, please try and write some tests to accompany your code, and ensure that the tests pass. Also, were necessary, update the docs so that they reflect your changes.
  • your commit messages should follow the conventions described here. Write your commit message in the imperative: "Fix bug" and not "Fixed bug" or "Fixes bug".

Once you are done, please create a pull request.

Show your support 🙌

Please give a ⭐️ if this project helped you!

Credits 👏

Author 🧑‍💻

👤 Victor Miti

License 📝

Copyright © 2020 - 2024 Victor Miti.

This project is licensed under the terms of the MIT license.