diff --git a/assets/maintenance.ejs b/assets/maintenance.ejs
new file mode 100644
index 00000000..9d5d776a
--- /dev/null
+++ b/assets/maintenance.ejs
@@ -0,0 +1,59 @@
+
+
+
+
+
+
+
+ traxxx | maintenance
+
+
+
+
+
+
+
+
+
+ <% if (analytics.enabled) { %>
+
+ <% } %>
+
+
+
+
+
+
+ <%= text %>
+
+
+
diff --git a/config/default.js b/config/default.js
index 435f735f..482ad1f5 100755
--- a/config/default.js
+++ b/config/default.js
@@ -36,6 +36,10 @@ module.exports = {
maxAge: 2629800000, // 1 month
},
},
+ maintenance: {
+ enabled: false,
+ text: 'Traxxx is currently under maintenance. We will be back shortly!',
+ },
},
redis: {
host: 'localhost',
diff --git a/public/img/maintenance_ella_reese.jpeg b/public/img/maintenance_ella_reese.jpeg
new file mode 100755
index 00000000..a058df97
Binary files /dev/null and b/public/img/maintenance_ella_reese.jpeg differ
diff --git a/src/web/server.js b/src/web/server.js
index a96ccca9..45e53dbf 100755
--- a/src/web/server.js
+++ b/src/web/server.js
@@ -162,7 +162,19 @@ async function initServer() {
});
router.use(errorHandler);
- app.use(router);
+
+ if (config.web.maintenance.enabled) {
+ app.use(express.static('public'));
+
+ app.get('/', (req, res) => {
+ res.status(503).render(path.join(__dirname, '../../assets/maintenance.ejs'), {
+ analytics: config.analytics,
+ text: config.web.maintenance.text,
+ });
+ });
+ } else {
+ app.use(router);
+ }
const server = app.listen(config.web.port, config.web.host, () => {
const { address, port } = server.address();