Python ETL · PostgreSQL · Star Schema · Power BI · FastAPI · Responsive Web
Canlı Web Uygulaması · English · Türkçe
KentLens; trafik, hava durumu, hava kalitesi ve ilçe verilerini tek bir analitik yapıda birleştirerek belediye ve şehir operasyonları için anlaşılır KPI'lar üretir.
Proje yalnızca bir dashboard değildir. Kaynak keşfinden veri kalitesi kurallarına, Python ETL süreçlerinden PostgreSQL star schema'ya, Power BI raporundan salt okunur FastAPI ve responsive web arayüzüne kadar uçtan uca bir veri ürünü olarak geliştirilmiştir.
| Veri alanı | Kapsam |
|---|---|
| Trafik olayları | 12.075 kayıt |
| İlçeler | 39 ilçe |
| Günlük trafik ve hava verisi | 365 gün |
| Saatlik hava kalitesi | 8.760 kayıt |
| ETL ve API testleri | 18 / 18 başarılı |
Dashboard; karar vericilerin şehir hareketliliğini, çevresel göstergeleri, ilçe farklılıklarını ve veri kalitesini aynı rapor içinde incelemesini sağlar.
| Mobilite | İlçe Karşılaştırma |
|---|---|
![]() |
![]() |
| Çevre | Veri Kalitesi |
|---|---|
![]() |
![]() |
| İlçe Detayı | KPI Sözlüğü |
|---|---|
![]() |
![]() |
KentLens portföy tanıtım videosunu izle
flowchart LR
A[Açık Veri Kaynakları] --> B[Python ETL]
B --> C[Temizleme ve Standardizasyon]
C --> D{Veri Kalitesi Kuralları}
D -->|Geçerli| E[PostgreSQL Star Schema]
D -->|Sorunlu| F[Karantina Katmanı]
E --> G[Salt Okunur Mart View'ları]
G --> H[Power BI]
G --> I[FastAPI]
I --> J[Responsive Web Arayüzü]
J --> K[Canlı API veya Doğrulanmış Snapshot]
KentLens veri hattı aşağıdaki aşamalardan oluşur:
- Kaynak tanımları ve veri sözleşmeleri
- Python ile veri alma ve profil çıkarma
- Temizleme, standartlaştırma ve alan doğrulama
- Kalite kurallarını geçemeyen kayıtların nedenleriyle karantinaya ayrılması
- PostgreSQL star schema'ya yükleme
- Power BI ve API için salt okunur semantik
martview'larının hazırlanması - SQL sonuçlarının dashboard KPI'larıyla karşılaştırılması
- API, web ve UAT doğrulaması
Trafik olayları İstanbul ilçe sınırlarıyla yerel olarak eşleştirilir. Poligon dışında kalan köprü, tünel, kıyı veya İstanbul dışı kayıtlar tahmini bir ilçeye zorlanmak yerine karantinaya alınır.
Power BI raporu aşağıdaki sayfaları içerir:
- Yönetici Özeti
- Mobilite
- İlçe Karşılaştırma
- Çevre
- Veri Kalitesi
- Drill-through İlçe Detayı
- KPI Sözlüğü
Ana analiz sayfalarında filtre sıfırlama ve KPI bilgi düğmeleri bulunur. Dashboard metrikleri, SQL doğrulama sorgularıyla kontrol edilmiştir.
FastAPI yalnızca önceden tanımlanmış ve parametreli SELECT sorguları çalıştırır. Serbest SQL uç noktası bulunmaz.
| Yöntem | Uç | Amaç |
|---|---|---|
GET |
/health |
Veritabanı ve salt okunur işlem kontrolü |
GET |
/api/v1/executive-summary |
Trafik ve çevre yönetici KPI'ları |
GET |
/api/v1/districts |
İstanbul ilçe listesi |
GET |
/api/v1/mobility/districts |
İlçe trafik karşılaştırması |
GET |
/api/v1/mobility/events |
Filtrelenebilir trafik olayları |
GET |
/api/v1/environment/daily |
Günlük hava ve hava kalitesi verileri |
GET |
/api/v1/data-quality |
Kaynak ve kalite kuralı bulguları |
- Ayrı ve salt okunur PostgreSQL API rolü
- Her işlemde
READ ONLYmodu - Parametreli sorgular
- Veri yazma ve tablo değiştirme yetkisi yok
- Sorgu süresi sınırı
- Parolaların yalnızca Git tarafından yok sayılan
.envdosyasında tutulması - Açık veri kaynaklarının API yanıtlarında belirtilmesi
Responsive web deneyimi şu görünümleri içerir:
- Genel Bakış
- İlçeler
- Çevre
- Veri Kalitesi
- Kaynaklar
Arayüz önce yerel FastAPI bağlantısını kullanır. API erişilemezse doğrulanmış 2023 snapshot verisine otomatik geçerek portföy modunda çalışmaya devam eder.
- Python
- Pandas
- SQL
- PostgreSQL
- Veri temizleme ve doğrulama
- Veri kalite kuralları
- Star schema ve semantik view'lar
- Power BI
- Power Query
- DAX
- Drill-through
- KPI sözlüğü
- Veri kalite raporlaması
- FastAPI
- Swagger / OpenAPI
- PostgreSQL read-only roller
- Responsive web arayüzü
- Snapshot fallback
- Problem tanımı
- User story ve acceptance criteria
- As-is / To-be süreç analizi
- Fonksiyonel analiz
- Test senaryoları
- UAT kontrol listesi
- Veri sözlüğü ve kaynak dokümantasyonu
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ..\scripts\profile_sources.ps1.\scripts\run_etl.ps1İşlenmiş veriler data/processed, kalite kurallarını geçemeyen kayıtlar ise neden alanlarıyla data/quarantine altında tutulur.
Proje kökündeki .env.example dosyasını .env olarak kopyalayın ve yerel parola değerlerini belirleyin.
.\scripts\start_postgres.ps1
.\scripts\load_postgres.ps1
.\scripts\setup_readonly_logins.ps1PostgreSQL varsayılan olarak localhost:5434 üzerinde çalışır.
.\scripts\start_api.ps1- Swagger UI:
http://127.0.0.1:8000/docs - Health check:
http://127.0.0.1:8000/health
cd web
npm install
npm run devArayüz: http://localhost:3000
.\.venv\Scripts\python.exe -m pytest -q
.\.venv\Scripts\python.exe -m ruff check backend
.\.venv\Scripts\python.exe -m scripts.check_api_db_securityWeb tarafı:
cd web
npm run lint
npm testProje kapsamında:
- ETL ve API testleri 18/18 başarılıdır
- Dashboard KPI'ları SQL sorgularıyla doğrulanmıştır
- Veri kalitesi hataları karantina akışıyla izlenebilir durumdadır
- MVP, proje sahibi tarafından UAT kontrolüyle kabul edilmiştir
KentLens/
├── backend/ # FastAPI ve API testleri
├── config/ # Veri kaynakları ve kalite kuralları
├── data/ # Ham, işlenmiş ve karantina veri alanları
├── database/ # DDL, migration ve analitik SQL
├── diagrams/ # ER, star schema ve süreç diyagramları
├── docs/ # İş analizi, veri sözlüğü, test ve UAT
├── etl/ # Veri alma, temizleme ve yükleme süreçleri
├── notebooks/ # Keşifsel veri analizi
├── powerbi/ # Power Query, DAX, PBIX ve ekran görüntüleri
├── reports/ # ETL, veri kalitesi ve doğrulama raporları
├── scripts/ # Çalıştırma komutları
├── web/ # Responsive karar destek arayüzü
└── tests/ # Uçtan uca veri ve kalite testleri
- Problem tanımı
- User story ve acceptance criteria
- As-is ve To-be süreç analizi
- Fonksiyonel analiz
- Test senaryoları ve sonuçları
- UAT kontrol listesi
- ETL çalıştırma raporu
- PostgreSQL doğrulama raporu
- FastAPI dokümantasyonu
- Power BI kurulumu
- Web arayüzü
- MVP veri aralığı 2023 yılıyla sınırlıdır.
- Canlı web sürümü, yerel API bulunmadığında doğrulanmış snapshot kullanır.
- Dashboard bir belediye üretim sistemi değil, açık veri tabanlı karar destek ve portföy ürünüdür.
- Kaynak verilerindeki eksik veya coğrafi olarak belirsiz kayıtlar tahmini değerlerle doldurulmaz; karantinaya alınır.
- Üretilen göstergeler bağlamdan bağımsız kesin politika önerileri olarak yorumlanmamalıdır.
KentLens; SQL ve Power BI becerilerini tek başına göstermek yerine, veri kaynaklarından karar verici arayüzüne kadar uzanan izlenebilir, test edilmiş ve dokümante edilmiş bir veri ürünü ortaya koymayı amaçlar.






