Skip to content

About

An accessible full-stack dashboard for exploring recent NASA FIRMS satellite thermal detections across New York State, excluding New York City.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

Β 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”₯ New York State Fires

An accessible, full-stack dashboard for exploring recent NASA FIRMS satellite thermal detections across New York State, excluding the five New York City boroughs.

πŸš€ Live: New York State Fires

Important

NASA FIRMS detections represent satellite-observed thermal anomalies, not confirmed wildfires or emergency alerts. They may reflect wildfires, prescribed burns, industrial activity, or other heat sources.


🌟 Features

  • πŸ›°οΈ NASA FIRMS integration – Retrieves recent satellite-observed thermal detections.
  • πŸ•’ Rolling 48-hour window – Displays detections acquired during the previous 48 hours.
  • πŸ—ΊοΈ Interactive map – Explore detection locations throughout New York State.
  • πŸ™οΈ New York City exclusion – Removes detections located within the five NYC boroughs.
  • πŸ”₯ FRP severity levels – Categorizes detections using Fire Radiative Power:
    • Moderate: 2–14.9 MW
    • High: 15 MW or higher
  • πŸ“Š Detection statistics – Displays total detections and the newest acquisition time.
  • πŸ“ Detailed map markers – View FRP, confidence, brightness, satellite, detection time, and coordinates.
  • πŸ”„ Manual reload control – Request the latest stored detection data directly from the dashboard.
  • πŸŒ“ Light and dark modes – Includes an accessible theme toggle with saved preferences.
  • πŸ“± Responsive layout – Designed for desktop, tablet, and mobile screens.
  • β™Ώ Accessibility features – Includes keyboard-accessible controls, dialogs, map markers, skip links, status updates, and reduced-motion support.
  • ⚑ Browser caching – Uses a 15-minute cache to reduce unnecessary requests and provide a temporary fallback during API interruptions.
  • ☁️ Vercel deployment – Hosts the frontend and backend with a scheduled data refresh.

πŸ›°οΈ About the NASA FIRMS Data

The dashboard uses data from NASA's Fire Information for Resource Management System (FIRMS), which distributes satellite-observed fire and thermal-anomaly data from Earth-observing instruments.

The application currently retrieves near-real-time VIIRS data from:

  • Suomi National Polar-orbiting Partnership (S-NPP)
  • NOAA-20
  • NOAA-21

Detections usually include:

  • Latitude and longitude
  • UTC acquisition date and time
  • Satellite and instrument
  • Brightness temperature
  • Detection confidence
  • Fire Radiative Power
  • Day or night designation

The backend processes the FIRMS data before it appears on the map:

  1. Retrieves recent VIIRS detections from NASA FIRMS.
  2. Keeps detections located within the New York State boundary.
  3. Removes detections located within the five New York City boroughs.
  4. Excludes records below 2 MW Fire Radiative Power.
  5. Stores the processed records in PostgreSQL through Supabase.
  6. Returns detections from the latest 48-hour window to the frontend.

The backend is scheduled to retrieve updated FIRMS data once per day through Vercel Cron. The frontend requests the latest stored data when the dashboard opens and whenever the user selects Reload.

Note

Satellite observations may be delayed, duplicated, obscured by cloud cover, or caused by non-wildfire heat sources.


πŸ”§ Technologies Used

Frontend

  • React.js – Builds the dashboard interface.
  • React Leaflet – Provides React components for the interactive map.
  • Leaflet – Handles map controls, markers, popups, and geographic layers.
  • OpenStreetMap and CARTO – Supply the map tile layers.
  • Axios – Sends requests to the backend API.
  • Create React App – Provides the frontend build and development environment.

Backend

  • Node.js – Runs the backend application.
  • Express.js – Handles API routes and local server requests.
  • NASA FIRMS API – Supplies near-real-time satellite thermal-detection data.
  • Turf.js – Performs geographic point-in-polygon filtering.
  • Axios – Retrieves data from NASA FIRMS.

Database and Hosting

  • Supabase PostgreSQL – Stores processed thermal-detection records.
  • Vercel Serverless Functions – Hosts the production backend API.
  • Vercel Cron – Schedules the daily FIRMS data refresh.
  • Vercel – Hosts the production frontend.

πŸ“ Project Structure

NEWYORKSTATEFIRES/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ api/
β”‚   β”‚   └── fires.js
β”‚   β”œβ”€β”€ database.js
β”‚   β”œβ”€β”€ fireService.js
β”‚   β”œβ”€β”€ newyork.geojson
β”‚   β”œβ”€β”€ newyorkcity.geojson
β”‚   β”œβ”€β”€ server.js
β”‚   β”œβ”€β”€ vercel.json
β”‚   └── package.json
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ public/
β”‚   β”‚   β”œβ”€β”€ favicon.ico
β”‚   β”‚   β”œβ”€β”€ index.html
β”‚   β”‚   β”œβ”€β”€ logo192.png
β”‚   β”‚   β”œβ”€β”€ logo512.png
β”‚   β”‚   β”œβ”€β”€ manifest.json
β”‚   β”‚   β”œβ”€β”€ newyork.geojson
β”‚   β”‚   β”œβ”€β”€ newyorkcity.geojson
β”‚   β”‚   └── robots.txt
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ FireMap.js
β”‚   β”‚   β”‚   β”œβ”€β”€ high_fire.png
β”‚   β”‚   β”‚   └── medium_fire.png
β”‚   β”‚   β”œβ”€β”€ App.css
β”‚   β”‚   β”œβ”€β”€ App.js
β”‚   β”‚   β”œβ”€β”€ App.test.js
β”‚   β”‚   β”œβ”€β”€ Index.css
β”‚   β”‚   β”œβ”€β”€ index.js
β”‚   β”‚   └── setupTests.js
β”‚   β”œβ”€β”€ package.json
|   └── .env.example
β”œβ”€β”€ .env.example
β”œβ”€β”€ .gitignore
β”œβ”€β”€ index.js
β”œβ”€β”€ LICENSE
β”œβ”€β”€ package.json
└── README.md

πŸ› οΈ Getting Started

1️⃣ Clone the Repository

git clone https://github.com/jillmpla/newyorkstatefires.git
cd newyorkstatefires

2️⃣ Install Dependencies

Install the root dependencies:

npm install

Install the backend and frontend dependencies:

npm run install:all

You can also install them individually:

npm install --prefix backend
npm install --prefix frontend

3️⃣ Configure the Backend Environment

Create a root .env file based on .env.example:

DATABASE_URL=your_supabase_postgres_url
DATABASE_SSL=true
PG_POOL_MAX=1

NASA_API_KEY=your_nasa_firms_api_key
CRON_SECRET=your_long_random_secret

FIRMS_DAYS=2
FIRMS_PRODUCTS=VIIRS_SNPP_NRT,VIIRS_NOAA20_NRT,VIIRS_NOAA21_NRT
CORS_ORIGINS=http://localhost:3000

4️⃣ Configure the Frontend Environment

Create frontend/.env based on frontend/.env.example:

REACT_APP_API_URL=http://localhost:5000
REACT_APP_CARTO_KEY=your_carto_basemap_key

Never commit real .env files, database credentials, API keys, or cron secrets to GitHub.

5️⃣ Start the Backend

From the repository root, run:

npm run backend:dev

The backend normally runs at:

http://localhost:5000

6️⃣ Start the Frontend

In a second terminal, run:

npm run frontend:start

The frontend normally runs at:

http://localhost:3000

βœ… Testing and Building

Check the Backend Files

npm run check --prefix backend

Run the Frontend Tests

npm run test:ci --prefix frontend

Create a Production Build

npm run build --prefix frontend

The optimized production files will be created in:

frontend/build

πŸ”Œ API

Retrieve Recent Detections

GET /api/fires?hours=48&limit=5000

Query Parameters

Parameter Description Example
hours Number of previous hours to include 48
limit Maximum number of detections to return 5000

Example Response

{
  "fires": [
    {
      "id": 26,
      "latitude": 42.6526,
      "longitude": -73.7562,
      "brightness": 329.96,
      "confidence": "n",
      "acq_date": "2026-07-21",
      "acq_time": "1834",
      "satellite": "N",
      "frp": 2.66,
      "daynight": "N",
      "acq_ts": "2026-07-21T18:34:00.000Z"
    }
  ],
  "count": 1,
  "meta": {
    "lookback_hours": 48,
    "start_utc": "2026-07-19T18:56:00.000Z",
    "end_utc": "2026-07-21T18:56:00.000Z"
  }
}

⚠️ Data Limitations

NASA FIRMS provides valuable near-real-time satellite observations, but several limitations should be considered:

  • A thermal detection does not automatically indicate a wildfire.
  • Clouds, smoke, terrain, and satellite timing can affect detection coverage.
  • Multiple observations may represent the same thermal event.
  • Industrial facilities and other persistent heat sources may produce detections.
  • Small or short-lived fires may not be detected.
  • Detection information may not appear immediately after an event begins.

For emergency information, consult official state and local public-safety agencies.


πŸ“„ License

This project is licensed under the MIT License. See LICENSE for details.


⭐ Support the Project

If you find New York State Fires useful or interesting, consider giving the repository a star.

About

An accessible full-stack dashboard for exploring recent NASA FIRMS satellite thermal detections across New York State, excluding New York City.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages