Sakuna is a free, real-time Philippines disaster map that tracks earthquakes, typhoons, volcanic activity, wildfires, and floods on a single live dashboard. It pulls from six independent data sources, normalizes everything into a unified severity-scored feed, and refreshes every 15 minutes. No ads, no paywall, no login.
01 . why this existsA calm signal in a noisy emergency
The Philippines gets hit by an average of 20 typhoons per year and sits on the Pacific Ring of Fire. When disaster strikes, people scramble across PAGASA, PHIVOLCS, USGS, and social media for updates. Sakuna consolidates those sources into one Philippines disaster map with a four-tier severity system so you can see what matters in one place.
It was built by Tom Tokita, an AI operations architect based in Manila, as a public-good utility for the Filipino community. It is deliberately not a news site, not a forecast, and not an alerting authority. It is a fast, honest view of the public data, with a plain-language read on what each event means, and a perimeter tool to filter by distance from where you are.
02 . data sourcesSix public feeds, one boundary
Every source is filtered to the Philippine geographic boundary (116-127E, 4.5-21.5N), normalized into a single event shape, and scored for severity. Attribution stays with each originating agency.
- USGS (United States Geological Survey) -- earthquake data via the FDSNWS API. Magnitude 2.0+ events with depth, felt reports, community intensity, Modified Mercalli, alert level, tsunami flag, and review status.
- NASA EONET (Earth Observatory Natural Event Tracker) -- active volcanic events, wildfires, and severe storms detected by satellite imagery. Multi-geometry support for events that move over time.
- GDACS (Global Disaster Alerting Coordination System) -- multi-hazard alerts with three-tier severity scoring (green, orange, red) for earthquakes, tropical cyclones, floods, droughts, wildfires, and volcanic eruptions.
- NASA FIRMS (Fire Information for Resource Management System) -- near-real-time fire hotspot detection from VIIRS NOAA-20 and MODIS satellite instruments. Brightness temperature, fire radiative power, and detection confidence per hotspot.
- PAGASA (Philippine Atmospheric, Geophysical and Astronomical Services Administration) -- Philippine typhoon bulletins and tropical cyclone signal warnings. Parsed from the official severe weather bulletin page during active storms.
- Open-Meteo -- current precipitation data for 20 monitoring cities across the Philippines. Free weather API, no authentication required.
03 . hazard typesFive event categories
| Icon | Type | Source | What it tracks |
|---|---|---|---|
| Seismograph | Earthquake | USGS, GDACS | Seismic events M2.0+ within the Philippine boundary. Depth, magnitude type, felt reports, and Modified Mercalli Intensity when available. |
| Spiral | Typhoon | PAGASA, GDACS | Active tropical cyclones with signal numbers, wind speed, and gust data. PAGASA bulletins scraped during active storms. |
| Cone | Volcano | NASA EONET | Elevated volcanic activity detected by satellite. Includes SO2 emissions and alert levels when reported. |
| Flame | Fire | NASA FIRMS | Satellite-detected fire hotspots from VIIRS and MODIS instruments. Brightness temperature (K) and fire radiative power (MW) indicate intensity. |
| Wave | Flood | GDACS | Flood alerts for river basins and low-lying areas. Severity derived from GDACS alert color (green, orange, red). |
04 . severityFour tiers, colour means data, never decoration
Severity is the only thing that carries colour on Sakuna. Everything else stays monochrome, so a red marker always means one thing: pay attention.
| Level | Earthquake | Typhoon | Fire | GDACS Alert |
|---|---|---|---|---|
| Low | Below M4.0 | Signal #1 | Low confidence | |
| Moderate | M4.0 to 4.9 | Signal #2 | Nominal confidence | Green |
| High | M5.0 to 5.9 | Signal #3 | High confidence | Orange |
| Critical | M6.0+ | Signal #4 to 5 | Red |
Severity colors appear on map markers, event cards, and the detail view. Critical events pulse on the map and trigger the alert banner. Impact radius estimates are approximate, based on magnitude, wind speed, or fire intensity.
05 . how it worksA serverless pipeline that costs nothing to run
The architecture runs entirely on the Cloudflare free tier with no traditional server. A Cloudflare Worker fires every 15 minutes, fetches data from six public APIs (USGS FDSNWS, NASA EONET, GDACS RSS, NASA FIRMS CSV, PAGASA HTML, and Open-Meteo), filters to the Philippine bounding box (116-127E, 4.5-21.5N), normalizes each event into a unified schema, scores severity, and writes the result to Cloudflare R2 object storage. The frontend is a static site on Cloudflare Pages that polls the Worker endpoint every 30 seconds.
| Step | What happens |
|---|---|
| 01 . poll | The Worker hits all six sources every 15 minutes. |
| 02 . filter | Events outside the PH bounding box are dropped. |
| 03 . normalize | Each source's format maps to one common event shape. |
| 04 . score | Every event gets one of four severity tiers. |
| 05 . serve | Results are stored as JSON in R2; the map refreshes every 30 seconds. |
No framework, no build step, no database. The entire frontend is vanilla HTML, CSS, and JavaScript. Fonts are self-hosted. The location search runs against a bundled 148-city Philippine gazetteer with no external geocoding API. Impact radii and affected-city lists are computed client-side using haversine distance.
06 . built withThe full stack
| Layer | Technology | Role |
|---|---|---|
| Data pipeline | Cloudflare Workers | Cron-triggered poller, fetches 6 APIs every 15 minutes |
| Storage | Cloudflare R2 | Object storage for events.json and meta.json |
| Frontend | Cloudflare Pages | Static site hosting with edge caching and custom domain |
| Map | Leaflet 1.9 + Carto basemaps | Interactive map with light/dark tile swap |
| Fonts | Source Serif 4 + JetBrains Mono | Self-hosted, same typography as tokita.online |
| AI tooling | Claude Code (Anthropic) | Coding assistant used to build the Worker, frontend, deploy pipeline, and security hardening |
| Design | Claude (Anthropic) | UI/UX design system, component architecture, responsive layout |
| Security | Nuclei + OWASP ZAP | Subdomain vulnerability scanning and header auditing |
Total infrastructure cost: $0/month. The entire stack runs within Cloudflare's free tier limits. No server provisioning, no database, no third-party SaaS dependencies beyond the data source APIs themselves.
07 . proximityHow close is it to me?
Search a city or province, or use your device location, and Sakuna drops a marker and draws an adjustable perimeter ring on the map. Slide the radius from 25 to 500 km and the feed re-sorts by distance, dims everything outside your ring, and tells you exactly how many events (and how many high/critical) fall inside it. It is the fastest way to turn a national map into a personal one.
Distance calculations use the haversine formula against a bundled 148-city Philippine gazetteer covering all 17 administrative regions plus BARMM, from Metro Manila to Batanes. No external geocoding API needed.
08 . coverageBatanes to Tawi-Tawi
Sakuna covers the entire Philippine archipelago from Batanes (20.4N) to Tawi-Tawi (5.0N), spanning 116E to 127E longitude. Events outside this boundary are excluded. The location search covers 148 cities and provincial capitals from Metro Manila to the BARMM region.
09 . faqFrequently asked
Is Sakuna affiliated with PAGASA or PHIVOLCS?
No. Sakuna is an independent, non-commercial project built by Tom Tokita. It aggregates publicly available data from government and scientific agencies but is not affiliated with, endorsed by, or funded by any of them.
How often is the data updated?
The data pipeline polls all sources every 15 minutes. The browser dashboard checks for new data every 30 seconds. Satellite-based sources (FIRMS, EONET) depend on orbital pass schedules and may lag by 1 to 3 hours.
What earthquake magnitude does Sakuna track?
Magnitude 2.0 and above within the Philippine geographic boundary, sourced from the USGS Earthquake Hazards Program (FDSNWS API).
Are the impact radii accurate?
No. Impact radii are rough estimates based on magnitude, wind speed, or fire intensity. They indicate potential reach, not confirmed damage zones. Always follow official agency advisories for evacuation and safety decisions.
Who built Sakuna?
Tom Tokita is an AI operations architect based in Manila, Philippines. He is the president of Aether Global Technology Inc., a Salesforce consulting partner serving enterprise clients across aviation, banking, and logistics. Sakuna is one of his public-good projects, built on a zero-cost Cloudflare serverless stack to demonstrate cross-API data aggregation, real-time geospatial visualization, and production-grade cron-driven data pipelines. The entire system (6 international data sources, 15-minute polling cycle, unified event schema, interactive Philippines disaster map) runs on Cloudflare Workers and R2 with zero server costs. The project was built with Claude Code by Anthropic as the AI coding assistant.
Can I use Sakuna data?
The aggregated event feed is available at /data/events.json and is licensed under CC0 1.0. Attribution is appreciated but not required. Upstream data is subject to the terms of each originating agency (USGS, NASA, GDACS, PAGASA).
10 . disclaimerImportant
Sakuna is an awareness tool, not an emergency service. In a real emergency, follow official advisories from PAGASA, PHIVOLCS, and your local DRRMO, and call the appropriate hotline. Never make evacuation or safety decisions based on this map alone.
Built in Manila by Tom Tokita, on a zero-cost Cloudflare serverless stack. Sakuna is a working demonstration of cross-API data aggregation, real-time geospatial visualization, and cron-driven pipelines.