v1.7.02026-04-14
Expanded Data Coverage
- QLD now covers all incident types (structure fires, rescues, MVAs, hazmat) via ESCAD, not just bushfires
- TAS incidents now include real geographic coordinates (previously placeholder geometry)
- WA warnings feed added (CAP-AU format with alert polygons and circles)
- Geoscience Australia earthquake data added nationally (Australian earthquakes, magnitude 2.0+)
- Feed count increased from 10 to 12
- Poller resilience improved with Docker health checks and log rotation
- NT duplicate incident ID issue resolved
- Terms of Service agreement checkbox added to signup
- Attribution endpoint updated with all data sources including SA pager feeds and GA earthquakes
v1.6.02026-04-13
SEO and Analytics
- Open Graph and Twitter card meta tags for link previews
- XML sitemap (emergencyapi.com/sitemap.xml)
- Canonical URLs and structured metadata (19 keywords)
- Vercel Analytics for visitor tracking and page view metrics
v1.5.02026-04-13
Production Polish
- Landing page stats are now live from the database (not hardcoded)
- State coverage table pulls real-time feed status, incident counts, and last polled timestamps
- Agency labels show all agencies per state (not just primary feed)
- WA and NT event type mapping improved (25+ new types, reduced "other" count)
- Status values standardised to "healthy/degraded/down/unknown" across all code
- Better sample JSON response on landing page
v1.4.02026-04-13
Security Hardening and Next.js 16
- Full security audit: 20 findings identified, 11 fixed in code
- Removed service key from client-side bundle
- IP-based rate limiting on auth routes (login 5/min, signup 3/hr)
- Signup no longer reveals if an email is already registered
- Auth callback redirect validated against path allowlist
- Max 10 API keys per user account
- Password change now requires current password verification
- Docker container runs as non-root user
- Cursor pagination validates input format
- Feed status endpoint no longer exposes internal error details
- Upgraded from Next.js 14 to 16, React 18 to 19 (zero code changes needed)
v1.3.02026-04-12
SA Pager Feed Integration
- Integrated SA CFS/MFS and SES pager feeds from urgmsg.net RSS
- Dispatch-level data: exact addresses, units dispatched, incident details
- Automatic deduplication between government and pager feed data
- Address token matching merges pager enrichment into government incidents
v1.2.02026-04-12
Auth System and Dashboard
- Email/password signup with Supabase Auth email verification
- User dashboard with API key management (create, name, revoke)
- Live feed status panel showing all 10 feeds (8 government + 2 SA pager)
- Quick test panel to try API endpoints from the dashboard
- 7-day usage history tracking
- Settings page with profile editing and password change
- Forgot/reset password flow
- Per-user rate limiting across all API keys (500 requests/day shared)
v1.1.02026-04-12
Design System and Landing Page
- Retro Macintosh System 7 design aesthetic
- Chicago font, Mac window chrome, teal desktop background
- Design system document (DESIGN-SYSTEM.md) for consistency
- Security headers: CSP, X-Frame-Options, X-Content-Type-Options
- robots.txt and security.txt (RFC 9116)
v1.0.02026-04-10
Initial Launch
- 8 Australian state feeds: QLD, NSW, VIC, SA, WA, ACT, TAS, NT
- 6 API endpoints: incidents, incidents/:id, incidents/nearby, states, status, attribution
- GeoJSON FeatureCollection responses aligned with CAP-AU standards
- Cursor-based pagination, bbox filtering, geo-radius search
- Poller deployed on Raspberry Pi 4B with Docker
- Resilience: cockatiel retry/circuit breaker, email alerting, stale detection
- API deployed on Vercel at emergencyapi.com
- 212+ tests passing
v0.1.02026-04-07
Project Kickoff
- Monorepo scaffolded with pnpm workspaces
- Database schema designed and deployed to Supabase
- Unified incident type definitions aligned with CAP-AU and GeoJSON RFC 7946
- First two feed parsers: QLD QFD and ACT ESA
- Research completed: competition, legal, technical feasibility, pricing, demand