summaryrefslogtreecommitdiff
path: root/backend/bin
diff options
context:
space:
mode:
authorAnjana Vakil <contact@anjana.dev>2025-08-26 12:40:16 -0500
committerAnjana Vakil <contact@anjana.dev>2025-08-26 12:40:16 -0500
commit1dc4f56425209d4ce1d7bb78ec8b5e7b5a755a82 (patch)
tree58d06cd695ae17302daff7a87d9096f1d39ea54a /backend/bin
reset
Diffstat (limited to 'backend/bin')
-rwxr-xr-xbackend/bin/www90
1 files changed, 90 insertions, 0 deletions
diff --git a/backend/bin/www b/backend/bin/www
new file mode 100755
index 0000000..4b20e4d
--- /dev/null
+++ b/backend/bin/www
@@ -0,0 +1,90 @@
+#!/usr/bin/env node
+
+/**
+ * Module dependencies.
+ */
+import debugLog from 'debug';
+import app, { set } from '../server.js';
+const debug = debugLog('backend:server');
+import { createServer } from 'http';
+
+/**
+ * Get port from environment and store in Express.
+ */
+
+const port = normalizePort(process.env.PORT || '3000');
+set('port', port);
+
+/**
+ * Create HTTP server.
+ */
+
+const server = createServer(app);
+
+/**
+ * Listen on provided port, on all network interfaces.
+ */
+
+server.listen(port);
+server.on('error', onError);
+server.on('listening', onListening);
+
+/**
+ * Normalize a port into a number, string, or false.
+ */
+
+function normalizePort(val) {
+ const port = parseInt(val, 10);
+
+ if (isNaN(port)) {
+ // named pipe
+ return val;
+ }
+
+ if (port >= 0) {
+ // port number
+ return port;
+ }
+
+ return false;
+}
+
+/**
+ * Event listener for HTTP server "error" event.
+ */
+
+function onError(error) {
+ if (error.syscall !== 'listen') {
+ throw error;
+ }
+
+ const bind = typeof port === 'string'
+ ? 'Pipe ' + port
+ : 'Port ' + port;
+
+ // handle specific listen errors with friendly messages
+ switch (error.code) {
+ case 'EACCES':
+ console.error(bind + ' requires elevated privileges');
+ process.exit(1);
+ break;
+ case 'EADDRINUSE':
+ console.error(bind + ' is already in use');
+ process.exit(1);
+ break;
+ default:
+ throw error;
+ }
+}
+
+/**
+ * Event listener for HTTP server "listening" event.
+ */
+
+function onListening() {
+ const addr = server.address();
+ const bind = typeof addr === 'string'
+ ? 'pipe ' + addr
+ : 'port ' + addr.port;
+ debug('Listening on ' + bind);
+}