How abdullahmahfouz/neo-watch works
NeoWatch ingests NASA near-Earth-object data, estimates impact energy, stores approach and risk history, and serves a dashboard and per-asteroid history to a React 3D interface. The graph preserves the documented ingestion, read, and display stages. Some frontend component wiring and backend cache configuration were not sampled, so those internal connections are shown only where the README or sampled source supports them.
Main entry points: AsteroidService.java Asteroid service · App.jsx Frontend app · OrbitView.jsx 3D home view · config Request filters
Components 28
Data ingestion
- NASA feed client
src/main/java/com/abdullah/neowatch/client/NasaClient.java - Ingest endpoint
src/main/java/com/abdullah/neowatch/controller/IngestController.java
API and persistence
- Asteroid service
src/main/java/com/abdullah/neowatch/service/AsteroidService.java - Asteroid repository
src/main/java/com/abdullah/neowatch/repository/AsteroidRepository.java - Approach repository
src/main/java/com/abdullah/neowatch/repository/CloseApproachRepository.java - Risk snapshot repository
src/main/java/com/abdullah/neowatch/repository/RiskSnapshotRepository.java - PostgreSQL
- Redis cache
- NEO read API
src/main/java/com/abdullah/neowatch/controller/NeoController.java - Dashboard response row
src/main/java/com/abdullah/neowatch/dto/DashboardRow.java - Detail data API
src/main/java/com/abdullah/neowatch/controller/NeoController.java
Dashboard frontend
- Frontend app
frontend/src/App.jsx - Dashboard data hook
frontend/src/hooks/useAsteroidData.js - Asteroid detail hook
frontend/src/hooks/useAsteroidDetail.js - API client
frontend/src/api/client.js - 3D home view
frontend/src/pages/OrbitView.jsx - Asteroid list view
frontend/src/pages/ArchiveView.jsx - Impact detail view
frontend/src/pages/ImpactView.jsx - 3D scene
frontend/src/three/SystemScene.jsx - Dashboard panels
frontend/src/components/hud - Energy explanations
frontend/src/components/EnergyExplainer.jsx - Asteroid table
frontend/src/components/AsteroidTable.jsx
Request safeguards
- Request filters
src/main/java/com/abdullah/neowatch/config - Web configuration
src/main/java/com/abdullah/neowatch/config/WebConfig.java
Other components
- Daily scheduler
- Ingest operator
- Dashboard visitor
- NASA NeoWs
Connections 32
- Daily scheduler → Asteroid service: triggers daily ingest
- Ingest operator → Request filters: requests ingest
- Request filters → Ingest endpoint: passes request
- Ingest endpoint → Asteroid service: calls ingest
- Asteroid service → NASA feed client: fetches feed
- NASA feed client → NASA NeoWs: requests NEO feed
- Asteroid service → Asteroid repository: upserts asteroids
- Asteroid service → Approach repository: upserts approaches
- Asteroid service → Risk snapshot repository: records energy snapshots
- Asteroid repository → PostgreSQL: reads and writes
- Approach repository → PostgreSQL: reads and writes
- Risk snapshot repository → PostgreSQL: reads and writes
- Asteroid service → Redis cache: evicts read caches
- NEO read API → Asteroid service: requests read data
- Asteroid service → Redis cache: serves cached reads
- Asteroid service → Dashboard response row: builds dashboard rows
- Dashboard visitor → Frontend app: uses dashboard
- Frontend app → 3D home view: shows home
- Frontend app → Asteroid list view: shows asteroid list
- Frontend app → Impact detail view: shows asteroid detail
- 3D home view → Dashboard data hook: loads dashboard data
- Asteroid list view → Dashboard data hook: loads asteroid data
- Impact detail view → Asteroid detail hook: loads histories
- Dashboard data hook → API client: requests dashboard
- Asteroid detail hook → API client: requests histories
- API client → Request filters: calls read API
- 3D scene → Dashboard panels: presents scene status
- 3D home view → 3D scene: renders globe
- 3D home view → Energy explanations: explains impact energy
- Asteroid list view → Asteroid table: renders tracked objects
- Impact detail view → Detail data API: displays approach and energy history
- Web configuration → Request filters: configures web access