← back to Zendesk Chat Analyzer
Auto-refresh data.json on boot(if stale)+every 6h so deployed dashboard stays current
83d1c2f8d993ea20fdbfef9f8a684b4f27338a7f · 2026-08-11 08:54:55 -0700 · Steve
Files touched
Diff
commit 83d1c2f8d993ea20fdbfef9f8a684b4f27338a7f
Author: Steve <steve@designerwallcoverings.com>
Date: Tue Aug 11 08:54:55 2026 -0700
Auto-refresh data.json on boot(if stale)+every 6h so deployed dashboard stays current
---
server.js | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/server.js b/server.js
index 04b0bae..0f3606f 100644
--- a/server.js
+++ b/server.js
@@ -37,3 +37,17 @@ http.createServer((req, res) => {
res.end(buf);
});
}).listen(PORT, () => console.log('DW Chat Analyzer → http://localhost:' + PORT));
+
+// Keep the dashboard data fresh: refresh data.json on boot (if stale) + every REFRESH_HOURS.
+const REFRESH_HOURS = Number(process.env.REFRESH_HOURS || 6);
+function refreshData(reason) {
+ execFile('/usr/bin/python3', [path.join(__dirname, 'pull.py')],
+ { env: { ...process.env, START: '1760000000', MAX_PAGES: '80' }, maxBuffer: 32 * 1024 * 1024 },
+ (err, so) => console.log(`[auto-refresh ${reason}] ` + (err ? 'FAILED: ' + err : (so || '').trim())));
+}
+try {
+ const dj = path.join(ROOT, 'data.json');
+ const stale = !fs.existsSync(dj) || (Date.now() - fs.statSync(dj).mtimeMs) > REFRESH_HOURS * 3600e3;
+ if (stale) setTimeout(() => refreshData('boot'), 4000);
+} catch (e) {}
+setInterval(() => refreshData('interval'), REFRESH_HOURS * 3600 * 1000);
← fd2c68c Token reads from env var (pm2) for Kamatera deploy
·
back to Zendesk Chat Analyzer
·
SECURITY: bind app to 127.0.0.1 (localhost-only) so nginx Ba b6d80b4 →