@hazardprep/core
v0.1.0
Published
Multi-hazard personal risk assessment engine using federal open data (FEMA, USGS, NOAA)
Downloads
93
Maintainers
Readme
@hazardprep/core
Multi-hazard personal risk assessment engine using federal open data (FEMA, USGS, NOAA).
Enter any US address and get a composite risk profile covering floods, earthquakes, wildfires, hurricanes, tornadoes, and more.
Install
npm install @hazardprep/coreQuick Start
import { HazardScorer } from '@hazardprep/core';
const scorer = new HazardScorer();
const profile = await scorer.assess('1600 Pennsylvania Ave, Washington, DC');
console.log(profile.overallScore); // 45
console.log(profile.overallLevel); // 'moderate'
console.log(profile.topRisks); // [{ type: 'flood', score: 68, ... }, ...]
console.log(profile.recommendations); // [{ title: 'Flood Preparedness', ... }]Data Sources
All data comes from free, public US federal government APIs:
| Provider | Data | API | |----------|------|-----| | FEMA | Disaster declarations, National Risk Index | OpenFEMA | | USGS | Earthquake history & seismic hazard | USGS Earthquake Hazards | | NOAA | Active weather alerts, severe storms | NWS API | | NIFC | Active wildfires, fire perimeters | NIFC Open Data |
No API keys required.
Custom Providers
Extend BaseProvider to add your own data source:
import { BaseProvider, HazardType, scoreToLevel } from '@hazardprep/core';
import type { HazardScore, Location } from '@hazardprep/core';
class MyCustomProvider extends BaseProvider {
readonly id = 'my-provider';
readonly name = 'My Custom Data Source';
readonly hazardTypes = [HazardType.Flood];
protected async assess(location: Location): Promise<HazardScore[]> {
// Fetch from your data source
const score = 42;
return [{
type: HazardType.Flood,
score,
level: scoreToLevel(score),
description: 'Custom flood risk assessment',
source: { name: 'My Source', url: 'https://example.com' },
}];
}
}
const scorer = new HazardScorer({ providers: [new MyCustomProvider()] });License
Apache 2.0
