CompactAI's picture
Upload 126 files
f6b8770 verified
Raw
History Blame Contribute Delete
1.31 kB
// Glint Research's Legally Distinct Clone — server entrypoint.
// Zero config: `node server/index.js` and go.
const http = require('http');
const path = require('path');
const express = require('express');
const { load } = require('./db');
const { seed } = require('./seed');
const { router } = require('./api');
const realtime = require('./realtime');
load();
seed();
const app = express();
app.use('/api', router);
app.use(express.static(path.join(__dirname, '..', 'public')));
// SPA fallback for hash-less deep links
app.get('*splat', (req, res) => {
res.sendFile(path.join(__dirname, '..', 'public', 'index.html'));
});
const server = http.createServer(app);
realtime.attach(server, router);
const START_PORT = Number(process.env.PORT) || 3000;
server.on('listening', () => {
const { port } = server.address();
console.log('');
console.log(' ✦ Glint Research\'s Legally Distinct Clone');
console.log(` ✦ running at http://localhost:${port}`);
console.log('');
});
function listen(port, triesLeft) {
server.once('error', (err) => {
if (err.code === 'EADDRINUSE' && triesLeft > 0) {
console.log(`port ${port} busy, trying ${port + 1}`);
listen(port + 1, triesLeft - 1);
} else {
throw err;
}
});
server.listen(port);
}
listen(START_PORT, 10);