Skip to main content

Django app to show system status

Project description

Build Status Pypi codecov Documentation Status

Status page application with browser and REST API interface.


Install the package

pip install django-statusboard

Add the following applications to your Django projects


Update your urlconf:

# myproject/
urlpatterns += [
    url(r'^statusboard/$', include('statusboard.urls')),

Update your database

./manage migrate


You can configure the app using the dict STATUSBOARD in

from django.contrib.staticfiles.templatetags.staticfiles import static
# for Django >= 3.0: from django.templatetags.static import static

    "FAVICON_DEFAULT": static('statusboard/images/statusboard-icon-default.png'),
        0: static('statusboard/images/statusboard-icon-operational.png'),
        1: static('statusboard/images/statusboard-icon-performance.png'),
        2: static('statusboard/images/statusboard-icon-partial.png'),
        3: static('statusboard/images/statusboard-icon-major.png'),
  • INCIDENT_DAYS_IN_INDEX: number of days to show in index (1 = today).
  • OPEN_INCIDENT_IN_INDEX: show not fixed incidents in index, whether or not the incident is older than INCIDENT_DAYS_IN_INDEX.
  • AUTO_REFRESH_INDEX_SECONDS: auto refresh home page every N seconds (0 = disabled).
  • FAVICON_DEFAULT: default favicon.
  • FAVICON_INDEX_DICT: favicon for index, based on the worst status (default: FAVICON_DEFAULT). The keys (0, 1, 2, 3) are the status values (see SERVICE_STATUSES in statusboard/

Customize pages

The following blocks are customizable in statusboard/base.html:

  • title: title of the page
  • branding: branding in fixed navbar
  • bootstrap_theme: bootstrap theme
  • header: header of the page
  • userlinks: links in the header
  • footer: footer div
  • style: CSS files
  • script: JavaScript files

Example: change branding and title

In Django >= 1.9, the templates can be extended recursively (see

Create a statusboard/base.html in one of your templates dir:

{% extends `statusboard/base.html %}

{% block title %}
ACME, Inc.
{% endblock %}

{% block branding %}
<a class="navbar-brand" href="{% url 'statusboard:index' %}">ACME status</a>
{% endblock %}


django-statusboard doesn’t provide an out-of-the-box notification system, but it’s easy to implement using django signals.

Moreover, django-statusboard tracks the previous status of a service (Service._status).

from django.dispatch import receiver
from django.db.models.signals import post_save
from django.core.mail import mail_admins

from statusboard import Service

@receiver(post_save, sender=Service)
def notify_service_update(sender, instance, **kwargs):
    # Send an email to admins if the service is getting worse, otherwise do nothing.
    if instance.status > instance._status:
        mail_admins("Alert", "Service {} is {}".format(, instance.get_status_display()))


django-statusboard comes with a set of REST API to manage its models, based on Django REST Framework ModelViewSet.

Project details

Download files

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

Files for django-statusboard, version 0.10.0
Filename, size File type Python version Upload date Hashes
Filename, size django-statusboard-0.10.0.tar.gz (432.2 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page