Skip to main content

A reusable, production-ready job posting application (One employer) built with Python, Django, Django REST Framework, and Wagtail CMS, styled with Tailwind CSS and daisyUI. It provides modern theming, optional APIs, and sensible defaults.

Project description

django-w-careers

CI CD Code Style: Black Code Linting: Ruff Docker Image Docker Publish PyPI - Version PyPI - Python Version PyPI - Downloads PyPI - License

Overview

A reusable, production-ready job posting application (One employer) built with Python, Django, Django REST Framework, and Wagtail CMS, styled with Tailwind CSS and daisyUI. It provides modern theming, optional APIs, and sensible defaults so you can deploy quickly and grow with confidence.


Key features

  • Full CMS: Wagtail-powered editorial interface with pages, media management, search, and governance.
  • Modern UI: Utility-first styling with Tailwind CSS and responsive layouts.
  • Theming: Out-of-the-box daisyUI themes plus support for custom themes.
  • API ready: Optional REST endpoints for headless use and integrations.
  • CI/CD: GitHub Actions workflows for automated testing, linting, and deployment.
  • Dependencies: Managed by Poetry for reproducible installs.
  • Formatting: Black for consistent, automatic code styling.
  • Linting: Ruff for fast, comprehensive code quality checks.
  • Testing: Django test runner for unit and integration suites.
  • Boilerplate included: .gitignore, pyproject.toml, and other config files to jump-start your project.

Installation

pip install django-w-careers

Configuration

Add installed apps

# project/settings.py

INSTALLED_APPS = [
    "careers",
    "careers.api",            # Optional: REST API
    "careers.apps.categories",
    "careers.apps.home",
    "careers.apps.jobs",
    "careers.apps.tags",
    "careers.cms",
    "careers.ui",

    # Dependencies
    "rest_wind",              # Optional: REST API
    "rest_framework",         # Optional: REST API
    "django_countries",
    "django_filters",
    "wagtail.contrib.search_promotions",
    "wagtail.contrib.forms",
    "wagtail.contrib.redirects",
    "wagtail.embeds",
    "wagtail.sites",
    "wagtail.users",
    "wagtail.snippets",
    "wagtail.documents",
    "wagtail.images",
    "wagtail.search",
    "wagtail.admin",
    "wagtail",
    "modelcluster",
    "taggit",
    # ...
]

Run migrations

python manage.py migrate

Update URL configuration

# project/urls.py

from django.urls import include, path
from wagtail import urls as wagtail_urls
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.documents import urls as wagtaildocs_urls

urlpatterns = [
    path("", include("careers.ui.urls")),
    path("api/", include("careers.api.urls")),       # Optional: REST API
    path("api/", include("rest_framework.urls")),    # Optional: REST API
    # ...
    path("documents/", include(wagtaildocs_urls)),
    path("dashboard/", include(wagtailadmin_urls)),
    path("", include(wagtail_urls)),                 # Always last
]

Theming and templates

All templates in django-w-careers extend careers/base.html. Create and customize this base template to match your brand.

Create the template directory

mkdir -p your_app/templates/careers

Create the base template

touch your_app/templates/careers/base.html

You can extend or override any provided template for full control.

Available blocks and context

  • careers/base.html

    • Blocks: theme, toggle_theme, head, title, styles, navbar, branding, navbar_center, navbar_end, content, footer, drawer_branding, drawer_content
    • Context: home (site root page)
  • careers/index.html

    • Blocks: all from careers/base.html
    • Context: index (jobs index page), articles (latest postings)
  • careers/category_index.html

    • Blocks: all from careers/base.html
    • Context: category (Category instance)
  • careers/category.html

    • Blocks: all from careers/base.html
    • Context: category (CategoryIndex instance)
  • careers/job.html

    • Blocks: all from careers/base.html
    • Context: job (Job instance), form (application form)
  • careers/job_landing.html

    • Blocks: all from careers/job.html
    • Context: job (Job instance)
  • careers/job_list.html

    • Blocks: all from careers/base.html
    • Context: job_list (Job queryset), filter (Filter object)
  • careers/search.html

    • Blocks: all from careers/base.html
    • Context: search_results (PageQuerySet results)

Contributing

We welcome contributions from the community. Please review our CONTRIBUTING guide for setup, coding conventions, and workflow. Opening an issue before major changes helps align on scope.


Support

For questions, bug reports, or feature requests, open an issue or start a thread in GitHub Discussions.


License

This project is released under the MIT License. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_w_careers-0.1.0.tar.gz (53.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_w_careers-0.1.0-py3-none-any.whl (76.7 kB view details)

Uploaded Python 3

File details

Details for the file django_w_careers-0.1.0.tar.gz.

File metadata

  • Download URL: django_w_careers-0.1.0.tar.gz
  • Upload date:
  • Size: 53.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.7 Windows/11

File hashes

Hashes for django_w_careers-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5fd257a129c630762ba244b03b5c4206daf25fbb4414cafd088635ae744ea9a5
MD5 10b89c71cc4212296e08f10992778282
BLAKE2b-256 07c8ddbe0df93d0e97a021cf981511b48bf92cce108641cb31a0028f1997b8ed

See more details on using hashes here.

File details

Details for the file django_w_careers-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: django_w_careers-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 76.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.4 CPython/3.13.7 Windows/11

File hashes

Hashes for django_w_careers-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d8f95dbdb5376920bee91df19e950e30cedc440f714c504ca8e15ef5fa2c0526
MD5 5674f30512ce0e48d93d19b444ae828b
BLAKE2b-256 10ed9af5e350896869dabafb219de4b4bc4da02e25722faa03e6336e8db587b6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page