Afterlight

Inspiration

Wildfire information is spread across alerts, incident feeds, maps, after-action reports, and household memory. Even when the evidence is public, families rarely get a safe way to turn it into repeatable coordination practice. That gap matters most when a household depends on mobility assistance, medication continuity, essential power, animal care, transportation backup, or a trusted nearby contact.

Most fire tools focus on the current incident. Afterlight addresses a different community problem: preserving what happened, keeping every interpretation attributable, and helping people practice responsibilities before the next incident—without presenting historical evidence as live advice.

What It Does

Afterlight keeps three trust domains visibly separate:

  1. Live Source Monitor checks current NIFC WFIGS, National Weather Service, and NASA EONET records after a coarse city, ZIP, or neighborhood search. It shows source health and freshness, not a prediction, route, or leave time.
  2. Historical Replay reconstructs attributable parts of the Palisades and Eaton Fires from timestamped source rows. Its deterministic detector accepts only internally consistent warning or order evidence and deliberately refuses to score the archive-only Camp Fire case.
  3. Household Drill Builder converts reviewed lessons and non-sensitive constraints into structured decisions with primary and backup roles, a practiced handoff, unresolved gaps, and a printable pre-incident card.

The new Consented-Neighbor Relay lets a household include an opted-in nearby check-in role without storing names or contact details. The Primary-Role Absence Stress Test removes each primary role on paper and classifies the handoff as unresolved, same-role, backup named but unpracticed, or practiced backup. It reports rehearsal states only—never a readiness or safety score.

Community Impact

Community resilience is not just access to information. It is whether people know who checks the official alert, who backs up a mobility or animal-care task, and what happens when the expected person is unavailable.

Afterlight makes that invisible coordination work inspectable. A household can expose fragile dependencies, add a consented trusted-neighbor relay, rehearse a bounded handoff, and carry forward a source-backed historical lesson. During an active incident, the product tells users to stop using the practice card for decisions and follow current local authorities.

How I Built It

React 19, TypeScript, and Vite power the interface. Leaflet renders OpenStreetMap tiles, bundled historical road geometry, and attributable ArcGIS perimeter data. Browser source connectors normalize NIFC WFIGS, NWS, and NASA EONET records. A same-origin geocoder proxy validates coarse-only input, minimizes the response to a bounded regional label and two-decimal coordinates, and fails closed in deployed environments without shared rate-control storage.

Historical evidence, current records, household memory, drill state, judge-mode state, and the pure handoff-resilience engine remain separate modules. Versioned local storage accepts only structured decisions and bounded role labels and rejects obvious exact addresses, contact details, coordinate pairs, access codes, and route-like text.

Technical Execution

  • Current public-source monitoring with distinct provider health, provider record time, alert effective time, and source check time.
  • Six attributable source rows each for the Palisades and Eaton Fires.
  • A fail-closed historical detector plus Camp Fire as an archive-only negative control.
  • Non-sensitive constraints for mobility, medications, animals, essential power, transportation, and a consented neighbor relay.
  • Structured primary/backup assignments whose practiced state is invalidated when the plan changes.
  • A deterministic primary-role absence stress test with no fake safety or readiness score.
  • A printable practice card explicitly labeled not emergency guidance.
  • An isolated 90-second judge path that never reads or writes saved household data.

Challenges

The hardest problem was not drawing the map—it was preventing one trustworthy-looking surface from blurring live records, historical evidence, and private household practice. I built explicit boundaries between those systems, added negative controls and freshness labels, and made the application fail closed whenever evidence is incomplete or configuration is unsafe.

A second challenge was making collaboration useful without collecting sensitive contact details. The consented-neighbor relay therefore stores only bounded roles and structured decisions; names and contact information stay in the household's official plan.

Accomplishments

  • Turned wildfire history into an actionable, community-oriented rehearsal workflow.
  • Built an absence stress test that surfaces fragile handoffs without manufacturing a score.
  • Added coarse-location privacy, bounded persistence, strict import validation, and shared production rate-control contracts.
  • Shipped a responsive, keyboard-accessible judge path across desktop and mobile.
  • Repaired the build toolchain to zero known npm vulnerabilities.

What I Learned

I learned that trustworthy civic technology depends as much on refusals as features. Source attribution, negative controls, data minimization, and visible uncertainty make the product more useful because users can see exactly what it knows—and what it does not.

I also learned to translate an abstract goal like community resilience into testable state transitions: a role is assigned, a backup is distinct, the handoff is practiced, and edits invalidate stale practice.

Verification

  • 262/262 unit and integration tests passed across 28 files.
  • Coverage: 88.41% statements, 82.62% branches, 93.33% functions, 90.87% lines.
  • 42/42 Playwright checks passed across desktop Chrome and a 390-pixel touch viewport.
  • Production Vite build and Cloudflare Worker dry-run passed.
  • npm audit reports zero vulnerabilities.
  • Desktop and mobile inspection found zero horizontal overflow and no application console errors.

Run locally with npm ci and npm run dev. The deterministic judge path is available at /?judge=1.

AI and Codex Disclosure

AI assisted prototyping, implementation, test generation, review, and documentation. Afterlight does not use a runtime generative or machine-learning model to predict wildfire behavior, recommend a route, choose an evacuation time, or generate emergency advice. The historical detector and handoff stress test are deterministic and fail closed.

Codex helped translate product safety boundaries into maintainable React and TypeScript modules, trace failures to their real causes, add red-green regression tests, audit privacy and attribution boundaries, repair vulnerable dependencies, run desktop/mobile QA, and prepare this submission. Rushil supplied the product direction, source material, community-impact goal, safety constraints, and final decisions.

What's Next

Next I would run structured usability sessions with households, neighborhood preparedness groups, accessibility advocates, and emergency-preparedness professionals; measure whether participants can complete a handoff drill; and add more carefully sourced historical cases without weakening the live-versus-historical boundary.

Honest Limitations

Human and emergency-preparedness stakeholder validation is still pending, so I claim no impact metric or participant quote. Afterlight is not official emergency guidance, an alert service, a route planner, a prediction system, or a readiness certification. Only the Palisades and Eaton cases contain granular source rows; Camp Fire remains intentionally unscored. No public runtime demo or video is claimed; the public source repository is the evaluation method.

Built With

Share this project:

Updates

Submission history