
The problem
During fast-moving emergencies, responders lack a real-time, geolocated read on what people are reporting across social platforms.
What I built
An event-driven microservices system: FastAPI workers ingest BlueSky data, Gemini enriches and classifies it, PostGIS stores geospatial records, and a Next.js + Mapbox frontend renders live incident maps. Redis and Celery coordinate the async pipeline, all containerized with Docker.
How it works
I pull live posts from BlueSky, run them through Gemini to find and tag crisis reports, and drop the geolocated ones onto a Mapbox map as they come in. FastAPI workers handle ingest, Redis and Celery move work between them, PostGIS runs the geo queries, and everything ships in Docker.
Stack
- FastAPI
- Next.js
- PostgreSQL
- PostGIS
- Gemini API
- MapboxJS
- Google OAuth 2.0
- JWT
- Docker
- Redis
- Celery
- TailwindCSS