Point it at a URL, get back a report on the site's health — HTTP status, response time, security headers, basic SEO/meta checks.
- POST
/api/scanwith a URL; runs a full scan (fetch + cheerio parse) and returns a JSON report - Saves reports to SQLite, addressable by id, with a
/api/recentfeed - Blocks scans of localhost / private IP ranges
- Per-IP daily rate limit (25 scans/day free tier)
- Static SPA in
public/for the dashboard
Node.js + Express + better-sqlite3 + cheerio.
npm install
npm start # listens on $PORT (default 3090)
npm run dev # node --watch- Listens on
PORTenv var, defaults to3090. - SQLite file
pulse.dbis created in the project root; gitignored. nginx.confandecosystem.config.cjs(PM2) are the deployed-host configs, kept for reference.