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.1.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.1-py3-none-any.whl (76.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: django_w_careers-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 43fbf670cbe6d4a1874f40eae17c9b41c27c9045343aae92a642797bc0967201
MD5 bcf20a792ddf8599d6ba062268d4ed18
BLAKE2b-256 1ae10223fca60925a81e53a7d5dd30b3181f4b34f75d755e27b54b09fbda19d9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: django_w_careers-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 93356ce0b9e4d2fb5264072601fc7bdb6a5dc40a70cb7720440ab018ecd2b621
MD5 30177bdd2626fbd305cc7dea540080fa
BLAKE2b-256 8bc15d8feaa63f752529ebd9d96503a6cb71e9fa93b15ae9308df4e9ac2ef70e

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