diff --git a/VIPSWeb/local_settings_sample.py b/VIPSWeb/local_settings_sample.py
index a10a0242757376c92b2fe5cec44306fda01c205c..c95ad114b495a099f1baeac49e8c52aee50b6bcb 100644
--- a/VIPSWeb/local_settings_sample.py
+++ b/VIPSWeb/local_settings_sample.py
@@ -26,6 +26,7 @@ import os
 from django.utils.translation import ugettext_lazy as _
 
 DEBUG = True
+MAINTENANCE_MODE = False
 TEMPLATE_DEBUG = DEBUG
 
 # Hosts/domain names that are valid for this site; required if DEBUG is False
diff --git a/VIPSWeb/settings.py b/VIPSWeb/settings.py
index 5366f8dfcac09ea244872b70e160d1798a9aa3f2..1f0025d55974a3702576c2c1cd74d5553f4169c0 100644
--- a/VIPSWeb/settings.py
+++ b/VIPSWeb/settings.py
@@ -93,6 +93,7 @@ MIDDLEWARE_CLASSES = (
     'django.contrib.messages.middleware.MessageMiddleware',
     'common.middleware.whodid.WhodidMiddleware',
     'django.middleware.locale.LocaleMiddleware',
+    'maintenancemode.middleware.MaintenanceModeMiddleware',
     # Uncomment the next line for simple clickjacking protection:
     # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 )
diff --git a/VIPSWeb/templates/503.html b/VIPSWeb/templates/503.html
new file mode 100644
index 0000000000000000000000000000000000000000..e535b03b576b34e37b3b756567ec70e932555bee
--- /dev/null
+++ b/VIPSWeb/templates/503.html
@@ -0,0 +1,7 @@
+{% extends "base.html" %}
+{% load i18n %}
+{% block title %}{% trans "Temporarily down for maintenance" %}{% endblock %}
+{% block content %}
+<h1>{% trans "Temporarily down for maintenance" %}</h1>
+<p>{% trans "We are sorry, but the web site is currently underdoing maintenance. We should be back online shortly." %}</p>
+{% endblock %}
diff --git a/requirements.txt b/requirements.txt
index 006a05f2b9e01b5504d4186bd967460d73194c53..1642a65d6b7cf112fa43cd5dce1a449efb46d798 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -23,3 +23,4 @@ Pillow
 requests==2.0.1
 django-tinymce
 python-dateutil==1.5
+django-maintenancemode