Skip to content
All work
Pacific Watch logoLive

Pacific Watch

Free, real-time hazard monitoring for Hawaiʻi.

Role
Founder & Engineer
Year
2026

Why I built it

In Hawaiʻi, hazard information lives on a dozen different agency sites: USGS for earthquakes and volcanoes, the National Weather Service for storms and surf, the Department of Health for water and air, Hawaiian Electric for outages. When something is happening, nobody should have to open ten tabs to find out if it affects them. Pacific Watch puts it on one screen.

When the government feeds go down

Public data feeds are slow, and sometimes they just stop answering. Every feed in Pacific Watch is cached, and the last good reading is kept three times longer than its normal refresh window. If a source times out, you see the most recent real data instead of an empty card, and a source that's truly down shows up as "unknown" rather than breaking the page.

I also merged the seven feeds behind the emergency banner into a single request. That cut polling from about eight requests a minute per person to one, which matters most on exactly the days everyone opens the app at once.

Fast on a phone

The first dashboard used a charting library for its gauges, and on a phone it crawled. I replaced it with simple hand-built SVG gauges. The mobile Lighthouse score went from 8 to 53, and the time the page was frozen while loading dropped from over seven seconds to under one. Later I cut the hurricane page from 4.9 MB to 1.9 MB.

Keeping it free

Pacific Watch started on Vercel. I moved it to a small server I run myself, and now it costs about $55 a month, all in: database, server, domain, and Apple's developer fee. A funding meter on the site shows how close donations are to covering that month.

The iOS app is a Capacitor wrapper around the live site with real native push notifications. It went live on the App Store in April 2026.

Bugs that taught me the most

Push alerts caused the scariest bug. The weather service sometimes sent the same alert twice, the check that stopped duplicates failed without saying anything, and phones got the same alert again every 30 seconds. In another bug, the emergency banner was blank in production for about two months, because an error was being caught and thrown away quietly.

💡 What I learned

In a safety app, a silent failure is the worst kind. A blank banner looks exactly like "nothing is happening," which is the opposite of what someone needs to know.

Now every source that fails says so, and errors get logged instead of swallowed. I'd rather show "unknown" than show calm when I can't be sure.

Highlights

  • Free for everyone with no ads or paywalls, funded by me and community donations
  • About 100 API routes pulling from USGS, NWS, Hawaiʻi DOH, ArcGIS, and more
  • Real-time status dashboard with color-coded threat indicators across 8 categories
  • Live scenic, surf, and volcano webcams with HLS streaming
  • Interactive maps for tsunami zones, evacuation shelters, and power outages
  • Health surveillance tracking for COVID, flu, and RSV with 12-week trend charts