Toplu taşıma verilerini tarayıcıda açın — tablo, harita ve canlı araç takibi
Ne İşe Yarar? · Özellikler · Kurulum · Kullanım · Dağıtım
İçindekiler
GTFS Decoder, belediyelerin ve operatörlerin yayımladığı toplu taşıma veri setlerini (GTFS) tarayıcıda açmanızı sağlar. Zip dosyası yükleyebilir, bir indirme linki verebilir veya hazır feed'lerden birini seçerek işlemi başlatabilirsiniz.
Uygulama veriyi okunabilir hale getirir ve şu sorulara yanıt vermenize yardımcı olur:
- Hangi duraklar, hatlar ve seferler var?
- Durak zamanları ve hat geometrileri nasıl görünüyor?
- Veri seti harita üzerinde nereye oturuyor?
- Varsa canlı araç konumları ve anlık bildirimler neler?
GTFS Realtime (.pb) dosyası eklerseniz araçların güncel konumunu haritada ve tablolarda takip edebilirsiniz. Büyük dosyalarda işlem arka planda devam eder; ilerleme çubuğuyla durumu izlersiniz.
(başa dön)
- Dosya veya link ile yükleme — GTFS zip ve isteğe bağlı canlı veri (
.pb) - Hazır feed'ler — Sakarya ve İstanbul İETT tek tıkla
- Zip içeriği önizleme — Yüklemeden önce zorunlu dosyaların varlığını kontrol
- Tablo görünümü — Duraklar, seferler, durak zamanları ve diğer GTFS tabloları sayfalı listelenir
- Harita — Duraklar ve hat şekilleri; büyük veri setlerinde otomatik optimize edilmiş görünüm
- Canlı katman — Araç konumları, sefer güncellemeleri ve uyarılar (PB verisi varsa)
- Karanlık / aydınlık tema — Harita ve arayüz teması
(başa dön)
| Katman | Teknoloji |
|---|---|
| Sunucu | Rust, Axum, Tokio |
| Web arayüzü | Angular 21, PrimeNG, Tailwind CSS |
| Harita | MapLibre GL |
| Dağıtım | Docker, nginx, Dokploy |
(başa dön)
- Rust (stable) ve Cargo
- Node.js 20+ ve npm
- (Opsiyonel) Docker ve Docker Compose
Sunucu
cd gtfs-decoder-backend
cp .env.example .env
cargo runWeb arayüzü
cd gtfs-decoder-frontend
npm install
npm startTarayıcıda http://localhost:4200 adresini açın.
(başa dön)
- Yükleme sayfasına gidin.
- Hazır feed kartından Sakarya veya İstanbul İETT'yi seçin — veri otomatik indirilir ve işlenir.
- Alternatif olarak GTFS zip dosyası veya doğrudan
.zipindirme linki yükleyin; isteğe bağlı canlı veri (.pb) dosyası veya linki ekleyin. - Sağ panelde Zip İçeriği bölümünden zorunlu dosyaların tamam olup olmadığını kontrol edin.
- Yükle ve İşle ile devam edin; büyük dosyalarda ilerleme çubuğu görünür.
- İşlem bitince özet, tablolar, harita ve (varsa) canlı veri sayfalarına geçin.
İBB/IETT gibi kaynaklardan gelen dosyalar uzantısız veya .csv formatında olabilir; uygulama bunları otomatik olarak tanır ve düzenler.
(başa dön)
| Feed | Kaynak | Canlı veri | Not |
|---|---|---|---|
| Sakarya | sbbpublicapi.sakarya.bel.tr | Evet | GTFS + araç konumları |
| İstanbul İETT | İBB Açık Veri | Hayır | Birden fazla CSV kaynağı birleştirilir |
(başa dön)
Kocaeli Büyükşehir Belediyesi açık veri kaynağında stop_times dosyası yayımlanmadığı için GTFS Decoder bu kaynakla tam sorgu yapamaz. stop_times GTFS'in zorunlu dosyalarından biridir.
(başa dön)
Sunucu yapılandırması için gtfs-decoder-backend/.env.example dosyasına bakın.
Tip üretimi (Rust → TypeScript)
cd gtfs-decoder-frontend
npm run generate:typesSunucu testleri
cd gtfs-decoder-backend
cargo test
cargo test -- --ignored # ağ gerektiren Sakarya / İBB testleri(başa dön)
Monorepo içinde sunucu ve web arayüzü ayrı servis olarak deploy edilir.
| Servis | Dockerfile | Port |
|---|---|---|
| Sunucu | Dockerfile |
3000 |
| Web | Dockerfile.frontend |
80 |
Yerel test:
cp gtfs-decoder-backend/.env.example gtfs-decoder-backend/.env
docker compose up --buildTarayıcıda http://localhost:8080 adresini açın.
Sunucu servisi
- Build context: repo kökü
- Dockerfile:
Dockerfile - Ortam:
gtfs-decoder-backend/.env.examplereferans alınarak.envdeğişkenleri CORS_ORIGINS: web arayüzünün domain'i (ör.https://app.ornek.com)
Web servisi
- Build context: repo kökü
- Dockerfile:
Dockerfile.frontend - Ortam değişkeni:
BACKEND_URL=https://api.ornek.com(sunucunun public URL'i, sondaki/olmadan)
Path filter (opsiyonel):
- Sunucu:
gtfs-decoder-backend/**,gtfs-realtime.proto,Dockerfile - Web:
gtfs-decoder-frontend/**,deploy/**,Dockerfile.frontend
(başa dön)
Herkese açık kullanım için tasarlanmıştır; temel koruma katmanları:
- Zip dosyalarında boyut ve içerik limitleri (zip bomb önleme)
- Kullanıcı tarafından verilen indirme linklerinde güvenli adres kontrolü
- Hazır feed'ler yalnızca önceden tanımlı güvenilir kaynaklardan çekilir
- İstek hızı sınırları — kötüye kullanım ve aşırı yük önleme
- Production ortamında teknik dokümantasyon endpoint'i kapalı tutulur
- İzin verilen web adresleri listesi (CORS); wildcard kullanılmaz
(başa dön)
Proje lisansı için gtfs-decoder-frontend/LICENSE.md dosyasına bakın.
(başa dön)