Back to Projects

AlertDeck

Sole DeveloperPersonal ProjectMar 2026

Customizable Home Front Command threat alert system with granular notification control.

1 week
Built in
3
Alert Sources
34
Custom Sounds
<10s
Failover Time

The Problem

During missile escalations, the Israeli Home Front Command app sends 'Extreme Alert' notifications 5-6 minutes before each alarm — even when the alert isn't in your area. You can't disable early alerts while keeping real alerts. If you have a shelter at home, these early warnings just wake you up for nothing.

How It Works

The backend connects to multiple alert sources simultaneously: two real-time WebSocket feeds (Tzofar and Tzevadom) for sub-100ms delivery, plus an HTTP polling source as a redundant fallback. This multi-source redundancy ensures alerts are never missed even if one source goes down — sources are swappable as upstream APIs change.

Content-based deduplication prevents duplicate notifications when the same alert arrives from multiple sources. The system uses a unique constraint on (city, timestamp, category) to detect duplicates regardless of the source's data format.

Users organize cities into groups with independent rules — different alert types (missiles, drones, all-clear, early warnings), notification sounds (34 options), sound priority (critical/normal/silent), and quiet hours per group. Delivery runs over Expo push with a Telegram channel as an alternative.

Key Challenges

Any single alert feed can go down, rate-limit, or change its format without notice

Automatic failover across redundant WebSocket feeds, with HTTP polling as a gap-recovery fallback when a feed drops. Content-based deduplication on (city, timestamp, category) means overlapping sources never double-notify, and source adapters are swappable as upstream APIs change.

30+ cities alerting simultaneously would flood users with notifications

Wave-based batching with a 3-second window by wave ID. All cities from the same wave are consolidated into a single push notification. Sound priority logic picks the most urgent sound style across all affected groups.

Delivering safety-critical alerts even when phone is on silent

iOS time-sensitive notifications (interruptionLevel: time-sensitive) and an Android notification channel with importance: MAX, so alerts surface immediately and break through standard notification batching.

Tech Stack

Backend

Express + TypeScriptFast API development with type safety for complex alert processing logic
SQLite (WAL mode)Lightweight embedded database with concurrent read support — no separate DB service needed
PrometheusCustom metrics: alerts total, dispatch latency, WebSocket connection state, active users

Mobile

React Native + ExpoCross-platform mobile with native push notification capabilities
Expo NotificationsCritical alert support on iOS, heads-up display on Android

Real-Time

WebSocket clientsSub-100ms alert delivery from Tzofar and Tzevadom feeds
HTTP polling (2s)Fallback for OREF official API with automatic failover logic