diff --git a/precommit-hooks/ensure-apps-are-short b/precommit-hooks/ensure-apps-are-short
new file mode 100755
index 0000000..905cdee
--- /dev/null
+++ b/precommit-hooks/ensure-apps-are-short
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+# Webserver apps directory should be short -- apps that fail this category should become their own.
+
+for file in `find roles/WebServer/files/apps -type f`; do
+ if [[ $(wc -l "$file" | awk '{ print $1; }') -gt 10 ]]; then
+ echo "$file" is too long to be deployed as a mini-app under the WebServer role.
+ fi
+done
diff --git a/roles/WebServer/README.md b/roles/WebServer/README.md
index 337dff6..103b452 100644
--- a/roles/WebServer/README.md
+++ b/roles/WebServer/README.md
@@ -10,6 +10,16 @@ Of security note are the default.csp.conf and sec.conf files in [the conf folder
**Please note:** We offer a redirect on www.aninix.net and http://aninix.net:80/ only as a legacy convenience as browsers do not yet support 443 by default -- no data is transmitted on these. When the webhosting community acknowledges the death of the empty www. subdomain and the necessity of encryption, we will drop these. However, for usability, we include them for now.
+## Apps
+
+We include `files/apps` here for apps that are too small to warrant their own project. These include things like:
+
+* AniNIX/Scratch -- a scratchpad in cache
+* AniNIX/BlackPage -- a blackout page for the monitor
+* AniNIX/WhatIsMyIP -- an IP-returning service, reducing the load on upstream [WhatIsMyIP](https://whatismyip.com)
+
+These apps must be short -- a hook is in place to ensure this.
+
# Available Clients
Users should use [Chrome](http://google.com/chrome/browser/desktop/) where possible, though other standard browsers will work. [AniNIX/Maat](https://maat.aninix.net) builds google-chrome as a package for ArchLinux.
diff --git a/roles/WebServer/files/apps/blackpage.html b/roles/WebServer/files/apps/blackpage.html
new file mode 100644
index 0000000..d684d56
--- /dev/null
+++ b/roles/WebServer/files/apps/blackpage.html
@@ -0,0 +1,9 @@
+
+