turkiyem 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,175 +1,533 @@
1
- # turkiyem
1
+ <p align="center">
2
+ <img src="https://img.shields.io/npm/v/turkiyem?style=for-the-badge&logo=npm&logoColor=white&color=CB3837" alt="npm version" />
3
+ <img src="https://img.shields.io/badge/node-%3E%3D20-339933?style=for-the-badge&logo=node.js&logoColor=white" alt="node" />
4
+ <img src="https://img.shields.io/npm/l/turkiyem?style=for-the-badge&color=blue" alt="license" />
5
+ <img src="https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-lightgrey?style=for-the-badge" alt="platform" />
6
+ </p>
7
+
8
+ <h1 align="center">🇹🇷 turkiyem</h1>
9
+
10
+ <p align="center">
11
+ <strong>Türkiye'nin en kapsamlı terminal tabanlı toplu taşıma, deprem, hava durumu ve ekonomi CLI aracı.</strong>
12
+ </p>
13
+
14
+ <p align="center">
15
+ 6 şehrin toplu taşıma verileri, AFAD deprem bilgileri, Open-Meteo hava durumu, TCMB döviz kurları — hepsi tek bir <code>npm</code> paketi içinde.
16
+ </p>
17
+
18
+ ---
19
+
20
+ ## 📖 İçindekiler
21
+
22
+ - [Neden turkiyem?](#-neden-turkiyem)
23
+ - [Desteklenen Şehirler](#-desteklenen-şehirler)
24
+ - [Özellikler](#-özellikler)
25
+ - [Kurulum](#-kurulum)
26
+ - [Hızlı Başlangıç](#-hızlı-başlangıç)
27
+ - [Komut Referansı](#-komut-referansı)
28
+ - [Şehir Seçimi](#şehir-seçimi)
29
+ - [Hat Sorgulama](#hat-sorgulama)
30
+ - [Durak Sorgulama](#durak-sorgulama)
31
+ - [Canlı Konum](#canlı-konum)
32
+ - [Deprem (AFAD)](#deprem-afad)
33
+ - [Hava Durumu & Kalite](#hava-durumu--kalite)
34
+ - [Döviz Kurları (TCMB)](#döviz-kurları-tcmb)
35
+ - [Yardımcı Komutlar](#yardımcı-komutlar)
36
+ - [Veri Kaynakları & Lisanslar](#-veri-kaynakları--lisanslar)
37
+ - [Mimari & Proje Yapısı](#-mimari--proje-yapısı)
38
+ - [Yapılandırma & Önbellek](#-yapılandırma--önbellek)
39
+ - [Hata Yönetimi & Güvenilirlik](#-hata-yönetimi--güvenilirlik)
40
+ - [Geliştirme](#-geliştirme)
41
+ - [Yayınlama (npm)](#-yayınlama-npm)
42
+ - [Yol Haritası](#-yol-haritası)
43
+ - [Sık Karşılaşılan Sorunlar](#-sık-karşılaşılan-sorunlar)
44
+ - [Katkıda Bulunma](#-katkıda-bulunma)
45
+ - [Lisans](#-lisans)
46
+
47
+ ---
48
+
49
+ ## 🎯 Neden turkiyem?
50
+
51
+ Türkiye'de toplu taşıma verileri onlarca farklı belediye sitesi, API ve veri formatına dağılmış durumda. **turkiyem**, bu dağınık verileri tek bir CLI arayüzü altında birleştirir:
52
+
53
+ - 🔎 Tarayıcı açmadan **hat ve durak sorgulama**
54
+ - 📍 Terminal üzerinden **canlı araç takibi** (İstanbul, Bursa)
55
+ - 🌍 **Deprem bildirimleri** renkli uyarılarla
56
+ - ⛅ **Hava durumu** ve **hava kalitesi** API key gerektirmeden
57
+ - 💱 **TCMB döviz kurları** tek komutla
58
+ - 🖥️ Sunucu, Raspberry Pi veya herhangi bir terminal ortamında çalışır
59
+
60
+ ---
61
+
62
+ ## 🏙️ Desteklenen Şehirler
63
+
64
+ | Şehir | Kaynak | Hat | Durak | Canlı Konum | Sefer Saatleri |
65
+ |-------|--------|:---:|:-----:|:-----------:|:--------------:|
66
+ | **Ankara** | EGO Genel Müdürlüğü | ✅ | — | — | ✅ |
67
+ | **İstanbul** | IETT (GTFS + SOAP) | ✅ | — | ✅ | ✅ |
68
+ | **Adana** | Adana Büyükşehir Belediyesi | ✅ | ✅ | — | ✅ |
69
+ | **Antalya** | Antalya Büyükşehir Belediyesi | ✅ | ✅ | — | ✅ |
70
+ | **Bursa** | Burulaş (Bursakart API) | ✅ | ✅ | ✅ | ✅ |
71
+ | **İzmir** | ESHOT (GTFS Açık Veri) | ✅ | ✅ | — | ✅ |
72
+
73
+ > Yeni şehir entegrasyonları için [yol haritasına](#-yol-haritası) bakın.
74
+
75
+ ---
76
+
77
+ ## ✨ Özellikler
78
+
79
+ ### 🚌 Toplu Taşıma (6 Şehir)
80
+ - Hat numarası veya adıyla arama
81
+ - Durak listesi ve sıralı güzergah görüntüleme
82
+ - Sefer saatleri (gün tipi ve yöne göre)
83
+ - Durak bazlı geçen hat ve zaman sorgulama
84
+ - Birden fazla sonuçta interaktif seçim menüsü
85
+
86
+ ### 📍 Canlı Araç Takibi
87
+ - **İstanbul (IETT):** Anlık araç konumu, yön, yakın durak bilgisi
88
+ - **Bursa (Burulaş):** Plaka, hız, doluluk oranı gösterimi
89
+
90
+ ### 🌍 Deprem Bilgileri (AFAD)
91
+ - Son 24 saat / Son 7 gün deprem listesi
92
+ - Büyüklüğe göre filtreleme (`turkiyem deprem buyukluk 4.0`)
93
+ - ≥ 4.0 büyüklüğündeki depremler için kırmızı uyarı kutusu
94
+ - Sayfalı listeleme (15'erli)
95
+
96
+ ### ⛅ Hava Durumu & Kalite (Open-Meteo)
97
+ - Güncel sıcaklık, rüzgar, nem
98
+ - 1-7 günlük saatlik tahmin + ASCII sıcaklık grafiği
99
+ - Hava kalitesi: PM10, PM2.5, CO, NO₂
100
+ - Şehir adı veya koordinat ile sorgulama
101
+ - **API key gerektirmez**
102
+
103
+ ### 💱 Ekonomi (TCMB)
104
+ - Güncel döviz kurları (alış/satış)
105
+ - Popüler kurlar veya tüm kurlar gösterimi
106
+ - Doğrudan TCMB XML'den çekim
107
+
108
+ ### 🖥️ CLI Deneyimi
109
+ - Renkli ve tablo formatında çıktı (`cli-table3`, `chalk`)
110
+ - Komut bazlı spinner (`ora`)
111
+ - İnteraktif menü sistemi (argümansız `turkiyem` çalıştırıldığında)
112
+ - ASCII banner + gradient başlık
113
+ - Global şehir yapılandırması (`~/.turkiyem/config.json`)
114
+ - Bellek içi önbellek (`node-cache`) ile hızlı tekrar sorgulama
115
+
116
+ ---
117
+
118
+ ## 📦 Kurulum
119
+
120
+ ### Global Kurulum (önerilen)
2
121
 
3
- Turkiye Toplu Tasima ve Deprem CLI araci.
4
-
5
- AFAD deprem verileri, EGO (Ankara) otobus saatleri ve IETT (Istanbul) hat/saat bilgilerini terminalden sorgulayabilirsiniz.
6
- Open-Meteo ile API key gerektirmeden guncel hava, saatlik tahmin ve hava kalitesi sorgulayabilirsiniz.
122
+ ```bash
123
+ npm install -g turkiyem
124
+ ```
7
125
 
8
- ## Kurulum
126
+ Kurulumdan sonra herhangi bir terminalde:
9
127
 
10
128
  ```bash
11
- npm install -g turkiyem
129
+ turkiyem
12
130
  ```
13
131
 
14
- Veya yerel olarak:
132
+ ### Yerel Geliştirme
15
133
 
16
134
  ```bash
17
- git clone <repo-url>
18
- cd turkiyemCLI
135
+ git clone https://github.com/<kullanici>/turkiyem.git
136
+ cd turkiyem
19
137
  npm install
20
- npm link
138
+ npm link # Global olarak `turkiyem` komutunu aktif eder
21
139
  ```
22
140
 
23
- ## Gereksinimler
141
+ ### Gereksinimler
24
142
 
25
- - Node.js 20+
143
+ | Gereksinim | Minimum Versiyon |
144
+ |-----------|:----------------:|
145
+ | Node.js | `≥ 20.0.0` |
146
+ | npm | `≥ 9.0.0` |
26
147
 
27
- ## Kullanim
148
+ ---
28
149
 
29
- ### Banner ve Yardim
150
+ ## 🚀 Hızlı Başlangıç
30
151
 
31
152
  ```bash
153
+ # 1. İnteraktif menüyü aç
32
154
  turkiyem
33
- turkiyem help
155
+
156
+ # 2. Şehir seç
157
+ turkiyem sehir istanbul
158
+
159
+ # 3. Hat sorgula
160
+ turkiyem hat 34AS
161
+
162
+ # 4. Deprem kontrol
163
+ turkiyem deprem son24
164
+
165
+ # 5. Hava durumu
166
+ turkiyem hava guncel
167
+
168
+ # 6. Döviz kurları
169
+ turkiyem doviz
34
170
  ```
35
171
 
36
- ### Sehir Secimi
172
+ ---
37
173
 
38
- Hat sorgulama icin once sehir secmelisiniz:
174
+ ## 📚 Komut Referansı
175
+
176
+ ### Şehir Seçimi
39
177
 
40
178
  ```bash
41
- turkiyem sehir ankara
42
- turkiyem sehir istanbul
179
+ turkiyem sehir # Mevcut seçili şehri göster
180
+ turkiyem sehir ankara # Şehri Ankara olarak ayarla
181
+ turkiyem sehir istanbul # Şehri İstanbul olarak ayarla
182
+ turkiyem sehir adana # Şehri Adana olarak ayarla
183
+ turkiyem sehir antalya # Şehri Antalya olarak ayarla
184
+ turkiyem sehir bursa # Şehri Bursa olarak ayarla
185
+ turkiyem sehir izmir # Şehri İzmir olarak ayarla
43
186
  ```
44
187
 
45
- ### Hat Sorgulama
188
+ > 💡 `hat` ve `durak` komutları her zaman seçili şehre göre çalışır.
46
189
 
47
- Secili sehre gore hat bilgilerini sorgular:
190
+ ### Hat Sorgulama
48
191
 
49
192
  ```bash
50
- # Ankara (EGO)
193
+ # Ankara (EGO) — Hat bilgisi + gün tipine göre sefer saatleri
51
194
  turkiyem sehir ankara
52
195
  turkiyem hat 340
53
196
 
54
- # Istanbul (IETT)
197
+ # İstanbul (IETT) — GTFS özeti + SOAP planlanan saatler
55
198
  turkiyem sehir istanbul
56
199
  turkiyem hat 34AS
57
200
 
58
- # IETT canli arac konumu (ozet)
59
- turkiyem hat canli 34AS
201
+ # Adana Hat bilgisi + sefer saatleri + durak listesi
202
+ turkiyem sehir adana
203
+ turkiyem hat KM02
60
204
 
61
- # IETT canli arac konumu (detay)
62
- turkiyem hat canli 34AS --detay
205
+ # Antalya Hat güzergahı + gün ve yön bazlı tarife
206
+ turkiyem sehir antalya
207
+ turkiyem hat KC06
208
+
209
+ # Bursa (Burulaş) — Hat durakları + yön seçimi
210
+ turkiyem sehir bursa
211
+ turkiyem hat 17
212
+
213
+ # İzmir (ESHOT GTFS) — Hat durakları + sefer saatleri
214
+ turkiyem sehir izmir
215
+ turkiyem hat 34
63
216
  ```
64
217
 
65
- Ankara icin EGO web sitesinden sefer saatleri cekilir.
66
- Istanbul icin once IETT SOAP Planlanan Sefer Saati servisi ile kalkis saatleri getirilir.
67
- SOAP servisi gecici olarak erisilemezse otomatik olarak GTFS ozet verisine dusulur.
218
+ > Birden fazla eşleşen hat varsa interaktif bir seçim menüsü sunulur.
68
219
 
69
- Istanbul cikti sirasi:
70
- - Hat bilgileri (GTFS)
71
- - Planlanan sefer saatleri (SOAP)
72
- - SOAP hatasinda: yalnizca GTFS ozet + uyari
220
+ ### Durak Sorgulama
73
221
 
74
- Canli konum ozelligi:
75
- - `turkiyem hat canli <numara>` varsayilan olarak ozet verir
76
- - `--detay` ile arac bazli konum tablosu acilir
77
- - Sadece `istanbul` seciliyken kullanilir
222
+ ```bash
223
+ # Adana Durak detayı + geçen hatlar
224
+ turkiyem sehir adana
225
+ turkiyem durak 43681
78
226
 
79
- ### Deprem Sorgulama
227
+ # Antalya — Durak tarifesi (gün ve yön seçimli)
228
+ turkiyem sehir antalya
229
+ turkiyem durak 1234
80
230
 
81
- AFAD API uzerinden gercek zamanli deprem verileri:
231
+ # Bursa Durağa yaklaşan araçlar ve kalan süre
232
+ turkiyem sehir bursa
233
+ turkiyem durak 5678
82
234
 
83
- ```bash
84
- # Son 24 saat
85
- turkiyem deprem son24
235
+ # İzmir — Durak araması + geçecek hatlar ve saatler
236
+ turkiyem sehir izmir
237
+ turkiyem durak konak
238
+ ```
86
239
 
87
- # Son 7 gun
88
- turkiyem deprem 7gun
240
+ ### Canlı Konum
89
241
 
90
- # Buyukluge gore filtrele (ornegin >= 4.0)
91
- turkiyem deprem buyukluk 4.0
242
+ ```bash
243
+ # İstanbul (IETT) — Anlık araç konumları
244
+ turkiyem sehir istanbul
245
+ turkiyem hat canli 34AS # Özet (aktif araç sayısı, yön dağılımı)
246
+ turkiyem hat canli 34AS --detay # Detay (araç bazlı konum, yakın durak)
247
+
248
+ # Bursa (Burulaş) — Anlık araç bilgileri
249
+ turkiyem sehir bursa
250
+ turkiyem hat canli 17 # Plaka, hız, doluluk oranı
92
251
  ```
93
252
 
94
- Buyuklugu 4.0 ve ustu olan depremler kirmizi ile vurgulanir.
253
+ ### Deprem (AFAD)
95
254
 
96
- ### Hava Durumu ve Hava Kalitesi
255
+ ```bash
256
+ turkiyem deprem son24 # Son 24 saat depremleri
257
+ turkiyem deprem 7gun # Son 7 gün depremleri
258
+ turkiyem deprem buyukluk 4.0 # ≥ 4.0 büyüklüğündeki depremler
259
+ ```
97
260
 
98
- Open-Meteo uzerinden API key gerektirmeden sorgu yapar:
261
+ > ⚠️ Büyüklüğü 4.0 olan depremler kırmızı uyarı kutusuyla vurgulanır.
262
+
263
+ ### Hava Durumu & Kalite
99
264
 
100
265
  ```bash
101
- # Secili sehir icin guncel hava
102
- turkiyem hava guncel
266
+ # Seçili şehir
267
+ turkiyem hava guncel # Güncel hava
268
+ turkiyem hava saatlik # 2 günlük saatlik tahmin
269
+ turkiyem hava kalite # Hava kalitesi (PM10, PM2.5, CO, NO₂)
103
270
 
104
- # Sehir bazli guncel hava
271
+ # Şehir adıyla
105
272
  turkiyem hava guncel istanbul
273
+ turkiyem hava saatlik ankara --gun 5 # 5 günlük saatlik tahmin
274
+ turkiyem hava kalite izmir
106
275
 
107
- # Koordinat bazli guncel hava
276
+ # Koordinatla
108
277
  turkiyem hava guncel 41.0082,28.9784
278
+ ```
109
279
 
110
- # Saatlik tahmin (varsayilan 2 gun)
111
- turkiyem hava saatlik istanbul
280
+ ### Döviz Kurları (TCMB)
281
+
282
+ ```bash
283
+ turkiyem doviz # Popüler kurlar (USD, EUR, GBP vb.)
284
+ turkiyem doviz --tum # Tüm döviz kurları
285
+ ```
112
286
 
113
- # Saatlik tahmin gun sayisi (1-7)
114
- turkiyem hava saatlik istanbul --gun 3
287
+ ### Yardımcı Komutlar
115
288
 
116
- # Hava kalitesi
117
- turkiyem hava kalite ankara
289
+ ```bash
290
+ turkiyem # İnteraktif menü
291
+ turkiyem help # Yardım
292
+ turkiyem --version # Versiyon bilgisi
293
+ turkiyem temizle # Cache ve yapılandırmayı sıfırla
118
294
  ```
119
295
 
120
- ### Temizleme
296
+ ---
297
+
298
+ ## 📡 Veri Kaynakları & Lisanslar
299
+
300
+ | Kaynak | Veri Tipi | Şehir / Modül | Lisans |
301
+ |--------|-----------|---------------|--------|
302
+ | [AFAD](https://deprem.afad.gov.tr) | Deprem verileri | Tüm Türkiye | Kamu verisi |
303
+ | [EGO Genel Müdürlüğü](https://www.ego.gov.tr) | Hat / sefer saatleri | Ankara | Kamu verisi |
304
+ | [IETT GTFS](https://data.ibb.gov.tr) | Hat özeti / durak | İstanbul | İBB Açık Veri |
305
+ | [IETT SOAP](https://iett.istanbul) | Planlanan saatler, canlı konum | İstanbul | Kamu API |
306
+ | [Adana Büyükşehir](https://www.adana.bel.tr) | Hat / durak / tarife | Adana | Kamu verisi |
307
+ | [Antalya Büyükşehir](https://www.antalya.bel.tr) | Hat / tarife | Antalya | Kamu verisi |
308
+ | [Burulaş (Bursakart)](https://www.bursakart.com.tr) | Hat / durak / canlı konum | Bursa | Kamu API |
309
+ | [ESHOT GTFS](https://acikveri.bizizmir.com) | Hat / durak / sefer saatleri | İzmir | İzmir Açık Veri Lisansı |
310
+ | [Open-Meteo](https://open-meteo.com) | Hava durumu, hava kalitesi | Tüm dünya | CC BY 4.0 |
311
+ | [TCMB](https://www.tcmb.gov.tr) | Döviz kurları | — | Kamu verisi |
312
+
313
+ ---
314
+
315
+ ## 🏗️ Mimari & Proje Yapısı
316
+
317
+ ```text
318
+ turkiyem/
319
+ ├── src/
320
+ │ ├── index.js # Commander.js giriş noktası
321
+ │ ├── commands/
322
+ │ │ ├── sehir.js # Şehir seçim komutu
323
+ │ │ ├── hat.js # Hat sorgulama (6 şehir)
324
+ │ │ ├── durak.js # Durak sorgulama (4 şehir)
325
+ │ │ ├── deprem.js # AFAD deprem komutları
326
+ │ │ ├── hava.js # Hava durumu komutları
327
+ │ │ ├── doviz.js # TCMB döviz komutu
328
+ │ │ ├── menu.js # İnteraktif menü sistemi
329
+ │ │ └── temizle.js # Cache temizleme
330
+ │ ├── services/
331
+ │ │ ├── egoService.js # Ankara EGO API
332
+ │ │ ├── iettService.js # İstanbul IETT GTFS + SOAP
333
+ │ │ ├── adanaService.js # Adana belediye scraping
334
+ │ │ ├── antalyaService.js # Antalya belediye API
335
+ │ │ ├── bursaService.js # Bursa Burulaş API
336
+ │ │ ├── izmirService.js # İzmir ESHOT GTFS
337
+ │ │ ├── afadService.js # AFAD deprem API
338
+ │ │ ├── weatherService.js # Open-Meteo API
339
+ │ │ └── tcmbService.js # TCMB döviz XML
340
+ │ └── utils/
341
+ │ ├── display.js # Tablo oluşturma fonksiyonları
342
+ │ ├── config.js # Yapılandırma yönetimi
343
+ │ ├── cache.js # Bellek içi önbellek
344
+ │ └── banner.js # ASCII banner & yardım
345
+ ├── package.json
346
+ ├── TODO.md # Yol haritası
347
+ └── README.md # Bu dosya
348
+ ```
121
349
 
122
- Cache ve yapilandirmayi sifirlar:
350
+ ### Mimari Prensipler
123
351
 
124
- ```bash
125
- turkiyem temizle
352
+ | Prensip | Açıklama |
353
+ |---------|----------|
354
+ | **Katmanlı Ayrım** | `commands/` → kullanıcı etkileşimi, `services/` → veri çekimi, `utils/` → ortak yardımcılar |
355
+ | **Servis İzolasyonu** | Her şehir / veri kaynağı kendi servis dosyasında izole edilir |
356
+ | **Graceful Degradation** | SOAP başarısızsa GTFS'e fallback, ağ hatalarında kullanıcı dostu mesajlar |
357
+ | **Önbellek Stratejisi** | Bellek içi TTL tabanlı cache + disk tabanlı GTFS cache (haftalık) |
358
+ | **Sıfır Yapılandırma** | API key gerektirmez, kurun ve kullanın |
359
+
360
+ ---
361
+
362
+ ## ⚙️ Yapılandırma & Önbellek
363
+
364
+ ### Yapılandırma Dosyası
365
+
366
+ ```text
367
+ ~/.turkiyem/config.json
368
+ ```
369
+
370
+ ```json
371
+ {
372
+ "city": "istanbul"
373
+ }
126
374
  ```
127
375
 
128
- ### Versiyon
376
+ ### Önbellek Katmanları
377
+
378
+ | Katman | Konum | Süre | Kullanım |
379
+ |--------|-------|------|----------|
380
+ | **Bellek İçi** | RAM (`node-cache`) | Kaynak bazlı TTL | API yanıtları (hava, deprem vb.) |
381
+ | **Disk (GTFS)** | `~/.turkiyem/izmir_gtfs/` | 7 gün | İzmir ESHOT GTFS ZIP (~18 MB) |
382
+ | **Disk (IETT)** | `~/.turkiyem/` | Oturum bazlı | İstanbul IETT GTFS |
383
+
384
+ ### Temizleme
129
385
 
130
386
  ```bash
131
- turkiyem --version
387
+ turkiyem temizle # Tüm cache ve yapılandırmayı sıfırlar
132
388
  ```
133
389
 
134
- ## Yapilandirma
390
+ ---
135
391
 
136
- Secili sehir `~/.turkiyem/config.json` dosyasinda saklanir. Bu dosya otomatik olusturulur.
392
+ ## 🛡️ Hata Yönetimi & Güvenilirlik
137
393
 
138
- ## Veri Kaynaklari
394
+ - **Global hata yakalama:** `unhandledRejection` ve `uncaughtException` dinleyicileri
395
+ - **API timeout:** Tüm dış isteklerde timeout + anlamlı hata mesajı
396
+ - **Fallback mekanizması:** IETT SOAP erişilemezse GTFS özetine otomatik geçiş
397
+ - **Ağ hataları:** Bağlantı sorunlarında kullanıcı dostu açıklamalar
398
+ - **Veri doğrulama:** Boş veya hatalı veri döndüğünde bilgilendirme mesajı
399
+ - **Spinner durumu:** Hata anında spinner durum göstergesinin doğru güncellenmesi
139
400
 
140
- | Kaynak | Aciklama |
141
- |--------|----------|
142
- | AFAD | Deprem verileri (deprem.afad.gov.tr) |
143
- | EGO | Ankara otobus sefer saatleri (ego.gov.tr) |
144
- | IETT | Istanbul GTFS hat verileri (data.ibb.gov.tr) |
145
- | IETT SOAP | Planlanan sefer saatleri (api.ibb.gov.tr) |
146
- | IETT Live SOAP | Hat bazli canli arac konumu (api.ibb.gov.tr) |
147
- | Open-Meteo | Guncel hava ve saatlik tahmin (api.open-meteo.com) |
148
- | Open-Meteo AQ | Hava kalitesi (air-quality-api.open-meteo.com) |
401
+ ---
149
402
 
150
- ## npm Publish
403
+ ## 🔧 Geliştirme
151
404
 
152
- 1. npm hesabiniza giris yapin:
405
+ ### Ortam Hazırlığı
153
406
 
154
407
  ```bash
155
- npm login
408
+ git clone https://github.com/<kullanici>/turkiyem.git
409
+ cd turkiyem
410
+ npm install
411
+ npm link
156
412
  ```
157
413
 
158
- 2. package.json icindeki `name`, `version`, `author` alanlarini duzenleyin.
414
+ ### Geliştirme Komutları
159
415
 
160
- 3. Yayinlayin:
416
+ ```bash
417
+ # Doğrudan çalıştır
418
+ node src/index.js help
419
+ node src/index.js deprem son24
420
+ node src/index.js hava guncel istanbul
421
+ node src/index.js sehir izmir
422
+ node src/index.js hat 34
423
+
424
+ # npm start ile
425
+ npm start
426
+ ```
427
+
428
+ ### Yeni Şehir Ekleme Rehberi
429
+
430
+ 1. `src/services/<sehir>Service.js` — Veri çekme servisi oluştur
431
+ 2. `src/utils/display.js` — İlgili tablo fonksiyonlarını ekle
432
+ 3. `src/commands/hat.js` — `queryYeniSehir()` fonksiyonu ekle
433
+ 4. `src/commands/durak.js` — Durak desteği varsa `queryYeniSehirStop()` ekle
434
+ 5. `src/commands/sehir.js` — `SUPPORTED_CITIES` dizisine ekle
435
+ 6. `src/commands/menu.js` — İnteraktif menüye ekle
436
+ 7. `README.md` — Dokümantasyonu güncelle
437
+
438
+ ---
439
+
440
+ ## 📤 Yayınlama (npm)
161
441
 
162
442
  ```bash
163
- npm publish
443
+ # 1. Sürüm artır
444
+ npm version patch # 1.6.0 → 1.6.1 (hata düzeltme)
445
+ npm version minor # 1.6.0 → 1.7.0 (yeni özellik)
446
+ npm version major # 1.6.0 → 2.0.0 (breaking change)
447
+
448
+ # 2. Yayınla
449
+ npm publish --access public
450
+
451
+ # 3. Doğrula
452
+ npm view turkiyem version
164
453
  ```
165
454
 
166
- 4. Guncelleme icin versiyonu artirin:
455
+ ---
456
+
457
+ ## 🗺️ Yol Haritası
458
+
459
+ Detaylı yol haritası için [`TODO.md`](./TODO.md) dosyasına bakın.
460
+
461
+ | Özellik | Durum |
462
+ |---------|-------|
463
+ | Kocaeli GTFS Verileri | 📋 Planlandı |
464
+ | Konya GTFS Verileri | 📋 Planlandı |
465
+ | Mersin Ulaşım Tarifeleri | 📋 Planlandı |
466
+ | Samsun Otobüs Bilgileri | 📋 Planlandı |
467
+ | Trabzon Ulaşım Bilgileri | 📋 Planlandı |
468
+ | İzmir Nöbetçi Eczane | 📋 Planlandı |
469
+ | Kayseri Nöbetçi Eczane | 📋 Planlandı |
470
+ | e-Nabız / e-Sağlık | 📋 Planlandı |
471
+
472
+ ---
473
+
474
+ ## ❓ Sık Karşılaşılan Sorunlar
475
+
476
+ <details>
477
+ <summary><strong><code>npm publish</code> 403 — Aynı sürüm</strong></summary>
478
+
479
+ Önceden yayınlanmış bir sürüm numarasını tekrar gönderemezsiniz.
167
480
 
168
481
  ```bash
169
482
  npm version patch
170
- npm publish
483
+ npm publish --access public
171
484
  ```
485
+ </details>
486
+
487
+ <details>
488
+ <summary><strong><code>npm publish</code> 403 — 2FA / Token</strong></summary>
489
+
490
+ NPM hesabınız için 2FA veya granular token gereksinimi olabilir. NPM hesabında token/2FA ayarlarını tamamlayın.
491
+ </details>
492
+
493
+ <details>
494
+ <summary><strong>IETT canlı konum 500 hatası</strong></summary>
495
+
496
+ IETT SOAP servisi geçici olarak erişilemez olabilir. Kısa süre sonra tekrar deneyin.
497
+ </details>
498
+
499
+ <details>
500
+ <summary><strong>İzmir GTFS indirme uzun sürüyor</strong></summary>
501
+
502
+ İlk kullanımda ~18 MB'lık GTFS dosyası indirilir. Bu işlem internet hızınıza bağlı olarak 1-5 dakika sürebilir. İndirme tamamlandıktan sonra veriler 7 gün boyunca önbellekten okunur.
503
+ </details>
504
+
505
+ <details>
506
+ <summary><strong>Bursa API 400/415 hatası</strong></summary>
507
+
508
+ Burulaş API, `Origin` header'ı gerektirir. turkiyem bu header'ı otomatik olarak ekler. Eğer hata devam ediyorsa API tarafında geçici sorun olabilir.
509
+ </details>
510
+
511
+ ---
512
+
513
+ ## 🤝 Katkıda Bulunma
514
+
515
+ 1. Bu repoyu **fork** edin
516
+ 2. Yeni bir **feature branch** oluşturun (`git checkout -b feat/yeni-sehir`)
517
+ 3. Değişikliklerinizi **commit** edin (`git commit -m 'feat: yeni şehir desteği eklendi'`)
518
+ 4. Branch'inizi **push** edin (`git push origin feat/yeni-sehir`)
519
+ 5. Bir **Pull Request** açın
520
+
521
+ > Her yeni özellik için ilgili servis, komut ve tablo güncellemelerinin birlikte gelmesi beklenir. [Yeni Şehir Ekleme Rehberi](#yeni-şehir-ekleme-rehberi) bölümüne göz atın.
522
+
523
+ ---
524
+
525
+ ## 📄 Lisans
526
+
527
+ Bu proje [MIT Lisansı](https://opensource.org/licenses/MIT) altında lisanslanmıştır.
172
528
 
173
- ## Lisans
529
+ ---
174
530
 
175
- MIT
531
+ <p align="center">
532
+ <sub>Built with ❤️ for Türkiye 🇹🇷</sub>
533
+ </p>
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "turkiyem",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "description": "Türkiye Toplu Taşıma ve Deprem CLI aracı - AFAD deprem verileri, EGO hat saatleri ve IETT SOAP/GTFS bilgileri",
5
5
  "type": "module",
6
6
  "main": "./src/index.js",
7
7
  "bin": {
8
- "turkiyem": "./src/index.js"
8
+ "turkiyem": "src/index.js"
9
9
  },
10
10
  "scripts": {
11
11
  "start": "node src/index.js",
@@ -32,15 +32,20 @@
32
32
  "node": ">=20.0.0"
33
33
  },
34
34
  "dependencies": {
35
+ "adm-zip": "^0.5.16",
36
+ "asciichart": "^1.5.25",
35
37
  "axios": "^1.7.9",
38
+ "boxen": "^8.0.1",
36
39
  "chalk": "^5.4.1",
37
40
  "cheerio": "^1.0.0",
38
41
  "cli-table3": "^0.6.5",
39
42
  "commander": "^13.1.0",
40
43
  "csv-parse": "^5.6.0",
41
44
  "dotenv": "^16.4.7",
45
+ "gradient-string": "^3.0.0",
42
46
  "node-cache": "^5.1.2",
43
- "ora": "^8.2.0"
47
+ "ora": "^8.2.0",
48
+ "prompts": "^2.4.2"
44
49
  },
45
50
  "files": [
46
51
  "src/**/*",