Real-time global affairs crisis tracker. Aggregates headlines from Reuters, Al Jazeera, AP News, and BBC into a unified reverse-chronological timeline.
- Frontend — Next.js 14 + TypeScript + Tailwind CSS
- Backend — Python FastAPI
- Ingestion —
feedparserpolling RSS feeds every 60 seconds, in-memory store
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
uvicorn main:app --reloadAPI runs at http://localhost:8000. Feeds load on startup; the store refreshes every 60 seconds.
cd frontend
npm install
npm run devUI runs at http://localhost:3000.
| Method | Path | Description |
|---|---|---|
| GET | /api/feed?limit=100 |
Latest articles (max 200) |
| GET | /api/feed/search?q=<term> |
Keyword search across title + summary |
| GET | /health |
Health check |
sitroom/
├── backend/
│ ├── main.py # FastAPI app, CORS, lifespan, background refresh
│ ├── requirements.txt
│ └── app/
│ ├── store.py # Thread-safe in-memory ArticleStore
│ ├── feed_parser.py # feedparser + normalization logic
│ └── routes/feed.py # /api/feed endpoints
└── frontend/
└── src/
├── app/ # Next.js App Router (layout, page, globals.css)
├── components/ # Header, SourceFilter, Timeline, ArticleCard
└── lib/ # types.ts, api.ts, utils.ts