diff --git a/src/app.lisp b/src/app.lisp
index 951042e..c34f727 100644
--- a/src/app.lisp
+++ b/src/app.lisp
@@ -32,7 +32,8 @@
                      :directory "src/routes")
   (jg:static-path *app* "/assets/" "src/assets/")
   (jg:install-middleware *app* mw:*public-files*)
-  (jg:install-middleware *app* mw:*normalize-path*))
+  (jg:install-middleware *app* mw:*normalize-path*)
+  (jg:install-middleware *app* mw:*recovery*))
 
 (defun update ()
   (stop)
diff --git a/src/middlewares/recovery.lisp b/src/middlewares/recovery.lisp
new file mode 100644
index 0000000..91f9214
--- /dev/null
+++ b/src/middlewares/recovery.lisp
@@ -0,0 +1,15 @@
+(defpackage #:hp/middlewares/recovery
+  (:use #:cl)
+  (:export #:*recovery*))
+(in-package #:hp/middlewares/recovery)
+
+;;; TODO: insert logger
+
+(defparameter *recovery*
+  (lambda (app)
+    (lambda (env)
+      (handler-case
+          (funcall app env)
+        (error (c)
+          `(500 (:content-type "text/plain")
+                (,(format nil "Internal Server Error: ~a~%" c))))))))