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",      # Optional: If you have a Home model ('home.Home')
    "careers.apps.indexes",
    "careers.apps.jobs",
    "careers.apps.tags",
    "careers.cms",
    "careers.ui",

    # Dependencies
    "rest_wind",              # Optional: REST API
    "rest_framework",         # Optional: REST API
    "wagtail_blocks",
    "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), jobs (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-1.0.2.tar.gz (61.7 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-1.0.2-py3-none-any.whl (87.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: django_w_careers-1.0.2.tar.gz
  • Upload date:
  • Size: 61.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure

File hashes

Hashes for django_w_careers-1.0.2.tar.gz
Algorithm Hash digest
SHA256 218090995be32d80591773bef92170439cc0452aa7bf330821daf49cdddec60d
MD5 e859b80f7f691df71cb9ed88fb3762c0
BLAKE2b-256 d635431d94404a30e296a4d54ed3d2bbc5506df1add5d562e846bc461332e361

See more details on using hashes here.

File details

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

File metadata

  • Download URL: django_w_careers-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 87.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.12.3 Linux/6.11.0-1018-azure

File hashes

Hashes for django_w_careers-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 bfd70c27a5e5eaa583162ad94640f4e2791117d96a3926373e79ee54a595f85d
MD5 8763447dc702a9c05cb8651e82e77020
BLAKE2b-256 4ffad655ab68e08ed3f274e1d63b18c99251fbc12a93230de0602b59f8d15d85

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