Build a serverless geospatial intelligence dashboard that aggregates real-time global events and converts them into meaningful insights.
-
Next.js (App Router)
-
React
-
Tailwind CSS
-
Map:
- 2D: Leaflet + react-leaflet
- 3D (optional): react-globe.gl
- Next.js API routes
- Edge functions (optional)
- Primary: Vercel Edge Cache
- Optional: Upstash Redis (free tier)
- USGS (earthquakes)
- NASA FIRMS (fires)
- Cloudflare Radar (cyber trends)
- Submarine Cable Map (static dataset)
/app
/api
/earthquakes/route.ts
/fires/route.ts
/cyber/route.ts
/events/route.ts
/components
Map.tsx
EventCard.tsx
Filters.tsx
/lib
fetchers.ts
normalizers.ts
ruleEngine.ts
cache.ts
/types
event.ts
/hooks
useEvents.ts
page.tsx
/public
cables.json
export type GeoEvent = {
id: string
type: "earthquake" | "fire" | "cyber"
source: string
location: {
lat: number
lng: number
region?: string
country?: string
}
timestamp: number
severity: number // 1–10
metadata: Record<string, any>
insight: string
}External APIs → Fetchers → Normalizers → Rule Engine → Cache → API Route → Frontend
-
Endpoint: GeoJSON feed
-
Extract:
- magnitude
- coordinates
- depth
- Create fetcher
- Normalize to GeoEvent
- Add severity logic
-
Extract:
- brightness
- coordinates
- Fetch data
- Normalize
- Map intensity → severity
- Use summaries/trends only
- Fetch trend data
- Convert to regional events
- Static JSON dataset
- Add to public/
- Render on map
Convert structured data into human-readable insights.
if (event.type === "earthquake") {
if (event.metadata.magnitude > 7)
return "High magnitude earthquake detected"
}- Marker clustering
- Lazy rendering
- Debounce updates
- Setup map
- Add markers
- Add clustering
- Add filters
- react-globe.gl
- Limit number of points
- Use arcs/points selectively
- DO NOT render 1000+ markers directly
- Use clustering
- Cache API responses (5–10 min)
- Avoid frequent re-renders
Hybrid:
Rules → Structured Insight → Optional AI polish
- HuggingFace inference API
- Small 1B–3B models
- AI only for final sentence polishing
- NOT for logic
- Aggregates all sources
- Returns unified data
- Combine all fetchers
- Apply rule engine
- Return final events
- Setup project
- USGS integration
- Basic map
- NASA FIRMS
- Event schema
- Rule engine
- Cyber data
- UI polish
- Filters
- Caching
- Deployment
- Cleanup
- No database
- No heavy scraping
- No unnecessary domains (finance, etc.)
- Serverless only
A deployed application that:
- Displays global events on a map
- Provides structured insights
- Uses multiple real-world data sources
- Runs fully serverless
"Built a serverless geospatial intelligence platform aggregating real-time global event data with custom signal processing and visualization."