Skip to content

mustafacangoktas/afetiz-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AfetİZ — Crisis Monitoring & Reporting Platform

Python FastAPI Gemini Leaflet License

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.


🚨 Problem

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.


✨ Özellikler

Ö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

🏗️ Mimari

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)

📁 Proje Yapısı

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

🚀 Kurulum

Gereksinimler

  • 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)

Backend

# 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 8000

Frontend

cd frontend
npm install
npm run dev

Ortam Değişkenleri (.env)

GEMINI_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

🔌 API Endpoints

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

🧪 Testler

cd backend
pytest tests/ -v

👥 Takım

Bu 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

📄 Lisans

Bu proje MIT Lisansı ile lisanslanmıştır.


Mimari

Twitter / Mock Tweet
        │
        ▼
  FastAPI Backend  ──►  Gemini 3.1 Flash Lite (Few-Shot JSON)
        │
        ▼
    SQLite DB
        │
        ▼
  Next.js / Vite Frontend  ──►  Leaflet Harita + D3 Grafikler

Özellikler

  • 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

Kurulum

Gereksinimler

  • Python 3.11+ (conda)
  • Node.js 18+
  • Gemini API anahtarı (Google AI Studio)
  • Twitter Bearer Token (opsiyonel)

Backend

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.py

Backend http://localhost:8000 adresinde çalışır.
Swagger UI: http://localhost:8000/docs

Frontend

cd frontend
npm install
npm run dev

Frontend http://localhost:3000 adresinde açılır.


API Endpoint'leri

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

Örnek Analiz Çıktısı

{
  "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"
}

Teknoloji Yığını

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
Twitter Tweepy v4

Ekip

chmod 777 — HackNiğde 2026


Lisans

MIT

About

Afet anlarında veriyi toplayıp analiz ederek kriz yönetimini kolaylaştıran yapay zekâ destekli sistem

Topics

Resources

License

Stars

Watchers

Forks

Contributors