The_AI_Herald / server.js
Gorantla
Initial commit: The AI Herald
27cc612
Raw
History Blame Contribute Delete
1.37 kB
require("dotenv").config();
const path = require("path");
const express = require("express");
const cron = require("node-cron");
const { generateNewsletter, getLatestNewsletter } = require("./lib/generate");
const app = express();
const PORT = process.env.PORT || 7860;
app.use(express.static(path.join(__dirname, "public")));
app.get("/api/newsletter", (req, res) => {
try {
const issue = getLatestNewsletter();
res.json(issue);
} catch (err) {
console.error("Failed to read newsletter:", err);
res.status(500).json({ error: err.message });
}
});
app.get("/api/generate-now", async (req, res) => {
try {
const issue = await generateNewsletter();
res.json({ ok: true, issueDate: issue.issueDate, volume: issue.volume });
} catch (err) {
console.error("Manual generation failed:", err);
res.status(500).json({ ok: false, error: err.message });
}
});
// Runs automatically every Monday at 06:00 UTC.
cron.schedule(
"0 6 * * 1",
() => {
console.log("Running scheduled weekly newsletter generation...");
generateNewsletter()
.then((issue) => console.log(`Generated issue dated ${issue.issueDate}`))
.catch((err) => console.error("Scheduled generation failed:", err));
},
{ timezone: "UTC" }
);
app.listen(PORT, () => {
console.log(`The AI Herald running at http://localhost:${PORT}`);
});