A modern, production-ready Next.js application for exploring, analyzing, and downloading high-resolution satellite imagery from NASA, Copernicus, and NASA GIBS. Designed for researchers, educators, emergency responders, and enthusiasts, this app provides a seamless, interactive map interface with robust logging, advanced filtering, and a modern, responsive UI.
-
Multi-Provider Support:
- NASA Earth API: Fetches true-color imagery for any location and date, with user-selectable field of view (
dim
) and resolution. - Copernicus Sentinel-2: Advanced search for available scenes, cloud cover filtering, and high-res image download. Requires Copernicus API credentials.
- NASA GIBS: Browse and download daily global imagery from multiple satellites/layers. Supports high-res stitched images via tile compositing.
- NASA Earth API: Fetches true-color imagery for any location and date, with user-selectable field of view (
-
Interactive Map Explorer:
- Built with
react-leaflet
for smooth pan/zoom and location picking. - Floating action button for quick actions.
- Info panel with real-time feedback, available dates, and scene selection.
- Built with
-
Modern UI/UX:
- Fully responsive, dark/light mode, Google-inspired minimal design.
- Fira Code and Geist fonts for a clean, technical look.
- Collapsible controls, clear expand/collapse hints, and accessible navigation.
-
Granular Logging:
- All user actions (map clicks, input changes, button presses, etc.) are logged client-side and sent to
/api/client-log
. - All backend API requests, responses, and errors are logged to
logs/api-requests.log
for deep debugging and auditing.
- All user actions (map clicks, input changes, button presses, etc.) are logged client-side and sent to
-
Robust Error Handling:
- If a requested date is unavailable, the UI lists available dates/scenes (±7 days) as clickable chips.
- Always displays the actual image date from the API, not just the requested date.
-
Security & Production Readiness:
- API keys and credentials are never exposed to the client.
- All sensitive operations are handled server-side.
- MIT licensed for open use and contribution.
- Fetches true-color imagery for any coordinates and date.
- User-selectable
dim
(field of view in degrees) and resolution. - Returns the actual image date from NASA, not just the requested date.
- Lists available dates if the requested date is unavailable.
- Scene availability check (±7 days) with cloud cover filtering.
- User selects from available scenes; only valid acquisition times are used for image fetch.
- Supports
dim
and resolution parameters. - Requires Copernicus API credentials (see setup below).
- Browse daily global imagery from multiple satellites/layers (e.g., MODIS, VIIRS).
- Preview tiles and fetch high-res stitched images (using
sharp
). - Actual image date is determined from GIBS capabilities XML.
dim
is not used for GIBS (by design).
git clone <repository-url>
cd <repository-folder-name>
npm install
# or
yarn install
# or
pnpm install
# or
bun install
Create a .env
file in the root directory with the following:
NASA_API_KEY=your_nasa_api_key_here
COPERNICUS_CLIENT_ID=your_copernicus_client_id_here
COPERNICUS_CLIENT_SECRET=your_copernicus_client_secret_here
- NASA API Key: Get an API key for NASA here
- Copernicus Credentials: Register for Dataspade api here
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
The app will be available at http://localhost:3000 (or another port if 3000 is in use).
npm run build
npm start
src/app/InteractiveMapExplorer.tsx
— Main map UI and logicsrc/app/api/
— All backend API routes (NASA, Copernicus, GIBS, logging)logs/api-requests.log
— All API and client logspublic/
— Static assets, including custom faviconscreenshots/
— Example images for documentation
- All user actions and API requests are logged for transparency and debugging.
- Logs are written to
logs/api-requests.log
(ensure this directory is writable). - For deep debugging, inspect this log file or add additional logging as needed.
- Missing Images:
- Check available dates/scenes in the UI; try selecting a different date.
- Ensure your API keys/credentials are correct and not rate-limited.
- Copernicus Errors:
- Make sure both
COPERNICUS_CLIENT_ID
andCOPERNICUS_CLIENT_SECRET
are set in.env
.
- Make sure both
- GIBS High-Res Errors:
- Ensure the server has enough memory for image stitching (uses
sharp
).
- Ensure the server has enough memory for image stitching (uses
- Port Issues:
- If port 3000 is in use, Next.js will prompt for another port.
- Deploy on Vercel or any Node.js server.
- Ensure all environment variables are set in your deployment environment.
- For production, use
npm run build
andnpm start
.
You can run this app in a Docker container for easy deployment anywhere.
docker build -t satellite-intelligence-explorer .
docker run -p 3000:3000 \
-e NASA_API_KEY=your_nasa_api_key_here \
-e COPERNICUS_CLIENT_ID=your_copernicus_client_id_here \
-e COPERNICUS_CLIENT_SECRET=your_copernicus_client_secret_here \
satellite-intelligence-explorer
# Use official Node.js image
FROM node:20-alpine
WORKDIR /app
COPY . .
RUN npm install && npm run build
EXPOSE 3000
CMD ["npm", "start"]
- Make sure to set all required environment variables (
NASA_API_KEY
,COPERNICUS_CLIENT_ID
,COPERNICUS_CLIENT_SECRET
) when running the container. - You can also use a
.env
file with Docker Compose for local development.
MIT License — see LICENSE for details. Open for use, modification, and contribution.
Satellite Intelligence Explorer — Explore, analyze, and unlock insights from real-time NASA & Copernicus satellite imagery. Earth observation, reimagined.
Planning to take Satellite Intelligence Explorer to the next level by integrating advanced drone connectivity and real-time operations. Here's what's coming soon:
- DJI Drone Integration:
- Seamless connection to DJI drones using the DJI Mobile SDK.
- Unified interface for both satellite and aerial imagery.
- Live Video Streaming:
- Access and display real-time video feeds directly from the drone's camera within the app.
- Support for robust video streaming protocols for low-latency, high-quality viewing.
- Image Capture & Download:
- Trigger photo capture remotely from the app.
- Instantly download and analyze images from the drone's camera.
- Command & Control:
- Programmatically control drone flight: takeoff, landing, waypoints, and more.
- Intuitive map-based flight planning and execution.
- Telemetry & Flight Data:
- Access real-time telemetry: GPS position, altitude, speed, battery status, and more.
- Display and log all critical flight information for safety and analysis.
The vision:
- To create a unified platform for earth observation—combining the power of satellites and drones for research, rapid response, and discovery.