HateWatch is a hate speech intelligence platform that monitors Telegram channels, scores messages for toxicity using Google's Perspective API, detects spikes in hate speech, and provides a dashboard for journalists and fact-checkers.
- Backend: Python 3.13, FastAPI, SQLAlchemy, SQLite
- Frontend: React, Recharts
- APIs: Telegram (Telethon), Google Perspective API
- Scraping: Telethon for Telegram channels
- Hosting: Render (backend), Vercel (frontend)
scraper/telegram_scraper.py- Fetches messages from Telegram channelsprocessing/perspective.py- Scores toxicity via Perspective APIanalysis/spike_detector.py- Detects unusual toxicity increasesapi/main.py- FastAPI backenddashboard/src/App.jsx- React dashboard
# Start API server
uvicorn api.main:app --reload --port 8000
# Start dashboard
cd dashboard && npm start
# Run scraper
python scripts/run_scraper.py --continuous
# Run processor
python scripts/run_processor.py --continuous- Machine: MacBook
- Pattern: DevOps / Deployment
- Files changed: 12
- Notes: Deployed HateWatch to production. Backend on Render (hatewatch-api.onrender.com), frontend on Vercel (dashboard-bay-tau.vercel.app). Added Dockerfile, nixpacks.toml, render.yaml, Procfile for deployment configs. Created /api/seed-demo endpoint for seeding demo data. Added "Last updated" timestamp to dashboard footer.
- Machine: MacBook
- Pattern: Full Stack Development
- Files changed: 46
- Notes: Built complete HateWatch MVP from spec - Telegram scraper, Perspective API integration, spike detection, FastAPI backend, React dashboard with country filtering. Added Claude Code skills for /scrape, /process, /detect, /status, /report commands.