Supafastsupafast.tech
All Products
Earthquake logo
iOS · Maps

Earthquake

Real-time earthquake tracker on a 3D globe

Real-time earthquake tracker on a 3D Apple Maps globe. Live USGS data, magnitude filters, and push alerts.

Overview

Earthquake is a native iOS app that visualises global seismic activity on a stunning 3D hybrid globe powered by Apple Maps. Data comes directly from the USGS GeoJSON feed — no backend, no middleman, updated every 5 minutes.

Magnitude pins are colour-coded from grey to dark red and scale logarithmically, giving you an immediate visual sense of severity. A bottom sheet lists recent events; tap any one to zoom the globe and see details.

Filters let you narrow by time window (1h, 24h, 7d, 30d) and minimum magnitude. Push notifications alert you when a major event (M ≥ 6.0) occurs anywhere in the world. Dark mode only.

The problem

Seismic data is publicly available from USGS but the existing apps present it as flat lists or low-resolution maps. There was no way to see the global distribution of earthquakes on a proper 3D globe in real time, or to get instant alerts with location context.

What we built

  • Full-screen 3D hybrid globe with realistic elevation via MapKit
  • Live USGS data updated every 5 minutes, with Firestore as unified data layer
  • Magnitude pins colour-coded from grey (minor) to dark red (major)
  • Filters by time window (1h, 24h, 7d, 30d) and minimum magnitude
  • Push notifications for major earthquakes (M ≥ 6.0) via Firebase Cloud Messaging
  • Live earthquake map website at earthquakes.site with MapLibre GL JS

Tech stack

iOS App

SwiftUISwiftSwiftDataMapKit

Data

USGS GeoJSON feedFirebase Firestore

Push

Firebase Cloud MessagingUNUserNotificationCenter

Website

Astro 5ReactMapLibre GL JSVercel

Under the hood

No-backend iOS → direct USGS pull

The app pulls USGS GeoJSON directly — no proxy, no backend. SwiftData persists the last batch locally. BGAppRefreshTask updates the cache every 5 minutes in the background. This keeps the app free to operate with zero hosting cost.

Firestore as unified data layer

A VPS2 poller runs every 5 minutes, batch-writing earthquake data to Firestore. Both the iOS app and the website (earthquakes.site) read from Firestore — this eliminated data source divergence and allowed the website live map to use Firestore's onSnapshot for real-time updates.

MapKit hybrid globe

MapStyle.hybrid(elevation: .realistic) renders satellite imagery on a true 3D sphere. Pins are MapAnnotation views sized logarithmically by magnitude. The intro flyby runs once per cold launch: 600ms delay → easeInOut 2.2s pan to user location.

All Products