One HTML file powers it all.
CrisisPulse — crisispulse.org — monitors conflicts worldwide, crunches emergency supply needs, and serves English or Chinese users. No backend database. No React sprawl. No build step dragging you down. Just 99KB of pure HTML, CSS, JS, laced with D3.js for that interactive world map. And it updates daily. Facts first: this isn’t vaporware; it’s live, free, zero signup.
Netlify’s the quiet hero here — their scheduled functions kick off every day, slurping Bing RSS feeds from 25 conflict hot zones. Parses headlines, tallies article counts into intensity scores, spots deltas week-over-week. Then — batch translates to Chinese using Google’s undocumented gtx endpoint. Stores it all in Netlify Blobs, their built-in KV store. No Postgres bills stacking up. No Redis ops nightmares.
How Does a Single HTML File Pull Off Daily Global Updates?
Look, visitor traffic? Handled serverlessly too. Every page load pings a Netlify Edge Function. Grabs your country from context.geo — that’s Netlify’s free geolocation magic. Increments a per-country counter in Blobs. Falls back to browser GPS if you’re precise. Returns fresh stats for the sidebar panel. Zero cookies. Zero trackers. Privacy by design, and it scales without you touching infra.
Here’s the dev straight from the creator:
When I started building CrisisPulse, I had one constraint: it had to work without a backend database, a framework, or a build pipeline. The result is crisispulse.org — a live global conflict monitor + emergency supply calculator, shipped as a single HTML file.
That constraint? Forced genius. Every line sweats for its keep.
But — and here’s my sharp take — this echoes the 1990s GeoCities era, when hobbyists mashed Perl CGI scripts into static sites for dynamic hits. Back then, it birthed viral tools before AWS dreams. Today, Netlify Blobs revives that scrappy spirit, but with global edge caching. Unique insight: expect a surge in these “static + functions” indiehacks as Vercel/Netlify commoditize serverless. VCs chasing megaframeworks? They’ll miss this lean wave.
Parsing Bing’s feeds? Tricky beast. Their RSS doubles-encodes redirects:
https://www.bing.com/news/apiclick.aspx?url=https%3A%2F%2F…&ref=…
Ampersands wreck URL parsing. Fix is a gritty little function — replace & with &, decode entities, yank the real param. Simple, but non-obvious. Proves: even free feeds demand battle-tested hacks.
Static CONFLICT_ZH map hardcodes 25 zones’ basics — names, types, blurbs. Dynamic headlines? gtx translates on-the-fly batches. Early bug: caching pre-translated strings, so lang switches served stale junk. Now? Recalcs risks fresh each toggle. Smart pivot.
Why Netlify Blobs Crushes Databases for Indie Projects?
Blobs handles visitor counts, conflict data, even subscriber emails. KV simplicity — get/set keys, done. Included in Netlify’s free tier. No external keys. No vendor lock horror stories (yet).
Market dynamics: serverless KV like Blobs, Cloudflare KV, Vercel KV — they’re exploding. Why? Devs burned by Supabase/PlanetScale scaling surprises. In 2023, Netlify’s edge functions hit 10T invocations; Blobs rode that wave. For CrisisPulse-scale (thousands daily?), it’s perfect. Costs? Pennies. Reliability? Battle-tested.
Downside? That free Google Translate gtx. Undocumented. Could vanish tomorrow — creator admits it’d get axed in prod. Fair warning. Swap to DeepL or LibreTranslate? Easy lift.
The single-file ethos shines brightest in deployment. Fork the repo, drag-drop to Netlify. Instant global CDN. No npm install hell. D3.js? Vanilla script tag. World map renders smooth — zoom on Ukraine, Sudan, Gaza; intensity bars pulse with news volume.
Supply calculator? Inputs people, days; spits food/water/meds needs. Ties to conflict scores. Practical, life-saving math in JS.
Can This Serverless HTML Trick Scale to Millions?
Short answer: for data-light apps, yes. Blobs caps at 100MB per site (free tier), but sharding’s trivial. Functions? Edge-distributed, sub-50ms cold starts. Bing RSS limits? 25 feeds daily — lightweight.
But push to millions? You’d shard Blobs, maybe federate feeds via RSSHub proxies. Or — bold prediction — this blueprints the next TikTok embed trend: single-file widgets powering dashboards everywhere. DevTools like this democratize crisis intel; NGOs could fork it yesterday.
Skepticism check: is it hype? Nah. Live site proves it. But PR spin on “zero everything” glosses real tradeoffs — like gtx fragility. Still, for solo devs shipping fast? Gold standard.
Netlify wins here. Their geo, blobs, schedules — integrated tighter than AWS Lambda rituals. Competitors like Deno Deploy lag on KV ease.
And the map? D3 mastery — projections crisp, tooltips bite with deltas (e.g., +23% Yemen chatter). Chinese toggle smoothly. Feels premium, ships trivial.
Bottom line: CrisisPulse isn’t just cute; it’s a serverless architecture masterclass. Proves you can monitor wars globally without infra debt. Devs, bookmark this pattern.
🧬 Related Insights
- Read more: An AI Agent Vanished for 7 Hours — And No One Cared
- Read more: AI Meets WhatsApp: 1000+ Deployments Expose the Real Traps
Frequently Asked Questions
What is CrisisPulse and how does it work?
CrisisPulse is a free web app at crisispulse.org tracking 25 global conflict zones via news volume, with supply calculators. Runs entirely serverless in one HTML file using Netlify.
How to build a serverless app in a single HTML file?
Use Netlify Functions for dynamic bits (counters, updates), Blobs for storage, scheduled functions for feeds. Embed D3.js vanilla; deploy drag-drop.
Is Netlify Blobs good for production data storage?
Yes for low-med volume (visitors, configs). KV limits apply; scales via sharding. Cheaper, simpler than DBs for many indies.