HackNiğde 2026 — Niğde Ömer Halisdemir Üniversitesi ev sahipliğinde gerçekleştirilen hackathon projesi.
Afet anında sosyal medya verilerini anlık olarak analiz eden, kriz haritası oluşturan ve arama-kurtarma ekiplerine öncelikli müdahale bölgelerini ileten izleme & raporlama sistemi.
6 Şubat 2023 depremleri bize çok net bir şey gösterdi: İnsanlar yardım çağrılarını en hızlı şekilde sosyal medya üzerinden duyuruyor. Ancak bu verilerin sahada anlamlı aksiyona dönüştürülmesi hâlâ büyük bir sorun. Dijital kaos, koordineli bir müdahaleyi engelliyor.
AfetİZ bu boşluğu kapatmak için geliştirildi.
| Özellik | Açıklama |
|---|---|
| 🤖 Gemini AI Analizi | Tweet'leri few-shot prompting ile yapılandırılmış JSON'a dönüştürür (şehir, ilçe, ihtiyaç türü, aciliyet skoru) |
| 🗺️ Gerçek Zamanlı Kriz Haritası | Leaflet + ısı katmanı ile kritik noktaları anlık görselleştirir |
| 📡 Baz İstasyonu Simülasyonu | Bölgesel insan yoğunluğunu tahmin ederek haritayı zenginleştirir |
| ✅ AFAD Deprem Doğrulaması | Tweet'leri AFAD verileriyle çapraz kontrol ederek sahte içerikleri filtreler |
| 📊 D3 Analitik Grafikler | İhtiyaç dağılımı, il yoğunluğu ve aciliyet skoru grafikleri |
| 📱 Telegram Entegrasyonu | Kriz raporlarını anlık olarak arama-kurtarma ekiplerine iletir |
| 📄 PDF/Excel Rapor | Tüm analiz verilerini dışa aktarır |
| 🔒 Rate-Limit Koruması | Gemini Flash Lite: 15 RPM / 500 RPD limitinde güvenli çalışır |
Twitter API / Mock Tweet
│
▼
FastAPI Backend ──► Gemini 3.1 Flash Lite (Few-Shot JSON)
│ │
▼ ▼
SQLite DB AFAD Deprem API (Doğrulama)
│
├──► Leaflet Harita + D3 Grafikler (Vite Frontend)
│
└──► Telegram Bot (Kriz Raporu)
afetiz-platform/
├── backend/
│ ├── main.py # FastAPI uygulama giriş noktası
│ ├── report_generator.py # PDF/Excel rapor üreteci
│ ├── requirements.txt
│ └── app/
│ ├── config.py # Environment değişkenleri
│ ├── models.py # Pydantic modeller
│ ├── gemini_service.py # Gemini AI entegrasyonu
│ ├── tweet_service.py # Twitter API polling
│ ├── earthquake_service.py # AFAD deprem verisi
│ ├── credibility_service.py # Güvenilirlik skoru
│ ├── telegram_service.py # Telegram bot
│ ├── database.py # SQLite yönetimi
│ ├── rate_limiter.py # API rate limiting
│ └── users.py # Kullanıcı grupları
├── frontend/
│ ├── index.html
│ ├── vite.config.js
│ └── src/
│ ├── main.js # Ana uygulama mantığı
│ ├── api.js # Backend API çağrıları
│ ├── map.js # Leaflet harita modülü
│ ├── charts.js # D3 grafik modülü
│ └── export.js # Dışa aktarma modülü
└── docs/
└── project-idea.md
- Python 3.11+
- Node.js 18+
- Gemini API anahtarı → Google AI Studio
- Twitter Bearer Token (opsiyonel — mock tweet ile test edilebilir)
- Telegram Bot Token (opsiyonel)
# Ortam oluştur
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Bağımlılıkları yükle
cd backend
pip install -r requirements.txt
# Ortam değişkenlerini ayarla
cp .env.example .env
# .env dosyasını düzenle
# Sunucuyu başlat
uvicorn main:app --reload --port 8000cd frontend
npm install
npm run devGEMINI_API_KEY=your_gemini_api_key
TWITTER_KEY=your_twitter_bearer_token # opsiyonel
TELEGRAM_BOT_TOKEN=your_telegram_bot_token # opsiyonel
DATABASE_PATH=afet_haritasi.db
GEMINI_MODEL=gemini-3.1-flash-lite-preview| Method | Endpoint | Açıklama |
|---|---|---|
GET |
/health |
Servis durumu |
GET |
/tweets |
Analiz edilmiş tweet listesi |
POST |
/analyze |
Tek tweet analizi |
POST |
/mock-tweet |
Test tweet'i ekle |
GET |
/earthquakes |
AFAD deprem verileri |
POST |
/report |
Telegram'a kriz raporu gönder |
GET |
/rate-limit |
Rate limit durumu |
cd backend
pytest tests/ -vBu proje HackNiğde 2026 kapsamında, Niğde Ömer Halisdemir Üniversitesi ev sahipliğinde sınırlı sürede sıfırdan geliştirildi.
| İsim | GitHub |
|---|---|
| Mustafa Can Göktaş | @mustafacangoktas |
| Ahmet İşleyen | @isleyenahmetcan |
| Mehmet Ersolak | @Mers4596 |
| Fehmi Çetinkaya | @FehmiCetinkaya |
| Elif Karaşahin | @elifkarasahin |
Bu proje MIT Lisansı ile lisanslanmıştır.
Twitter / Mock Tweet
│
▼
FastAPI Backend ──► Gemini 3.1 Flash Lite (Few-Shot JSON)
│
▼
SQLite DB
│
▼
Next.js / Vite Frontend ──► Leaflet Harita + D3 Grafikler
- Gemini Few-Shot Prompting — Tweet'i yapılandırılmış JSON'a dönüştürür (
city,district,need_types,urgency_score,map_priority) - Gerçek zamanlı harita — Leaflet + ısı katmanı, kritik noktalar kırmızı gösterilir
- Rate-limit koruması — Gemini 3.1 Flash Lite: 15 RPM / 500 RPD dahilinde çalışır
- D3 analitik grafikler — İhtiyaç dağılımı, il yoğunluğu, aciliyet skoru
- Mock tweet desteği — Demo için gerçek API'ye gerek kalmadan test edilebilir
- Twitter API polling — Her 30 saniyede bir yeni tweet çeker, cache'de tutar
- Python 3.11+ (conda)
- Node.js 18+
- Gemini API anahtarı (Google AI Studio)
- Twitter Bearer Token (opsiyonel)
conda create -n hacknigde python=3.11 -y
conda activate hacknigde
cd backend
cp .env.example .env
# .env dosyasına GEMINI_API_KEY ve TWITTER_KEY ekle
pip install -r requirements.txt
python main.pyBackend http://localhost:8000 adresinde çalışır.
Swagger UI: http://localhost:8000/docs
cd frontend
npm install
npm run devFrontend http://localhost:3000 adresinde açılır.
| Method | Endpoint | Açıklama |
|---|---|---|
GET |
/health |
Sağlık kontrolü |
GET |
/tweets |
Cache'teki tweet'ler |
GET |
/refresh |
Manuel tweet yenile |
POST |
/analyze |
Tek tweet analiz |
POST |
/analyze-all |
Tüm cache'i analiz et |
GET |
/results |
DB'deki tüm analizler |
GET |
/results/{priority} |
Önceliğe göre filtre |
POST |
/mock-tweet |
Demo tweet ekle + analiz |
GET |
/rate-limit |
Gemini rate-limit durumu |
{
"city": "Hatay",
"district": "Antakya",
"neighborhood": "Cumhuriyet Mahallesi",
"need_types": ["arama_kurtarma", "saglik"],
"urgency_score": 5,
"confidence": 0.98,
"summary": "Enkaz altında yaralı kişiler var, acil yardım bekleniyor.",
"map_priority": "critical"
}| Katman | Teknoloji |
|---|---|
| Backend | FastAPI, Python 3.11 |
| AI | Google Gemini 3.1 Flash Lite |
| Veritabanı | SQLite |
| Frontend | Vite (Vanilla JS) |
| Harita | Leaflet.js + leaflet-heat |
| Grafikler | D3.js v7 |
| Tweepy v4 |
chmod 777 — HackNiğde 2026