turkiyem 1.6.0 → 1.8.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,258 +1,533 @@
1
- # turkiyem
2
-
3
- Türkiye için modern, terminal tabanlı bir **toplu taşıma + deprem + hava durumu** CLI aracı.
4
-
5
- `turkiyem`; AFAD deprem verileri, EGO (Ankara) hat saatleri, IETT (İstanbul) hat bilgileri / planlanan sefer saatleri / canlı konum akışları ve Open-Meteo hava verilerini tek komutta toplar.
6
-
7
- ## İçindekiler
8
-
9
- - [Özellikler](#özellikler)
10
- - [Kurulum](#kurulum)
11
- - [Hızlı Başlangıç](#hızlı-başlangıç)
12
- - [Komut Referansı](#komut-referansı)
13
- - [Veri Kaynakları](#veri-kaynakları)
14
- - [Mimari ve Proje Yapısı](#mimari-ve-proje-yapısı)
15
- - [Yapılandırma ve Cache](#yapılandırma-ve-cache)
16
- - [Hata Yönetimi](#hata-yönetimi)
17
- - [Geliştirme](#geliştirme)
18
- - [Yayınlama (npm)](#yayınlama-npm)
19
- - [Sık Karşılaşılan Sorunlar](#sık-karşılaşılan-sorunlar)
20
- - [Lisans](#lisans)
21
-
22
- ## Özellikler
23
-
24
- - **Deprem (AFAD):**
25
- - Son 24 saat / son 7 gün deprem listesi
26
- - Büyüklüğe göre filtreleme
27
- - `>= 4.0` depremler için renkli vurgu
28
- - **Toplu taşıma (Ankara / EGO):**
29
- - Hat bilgileri
30
- - Gün tipine göre sefer saatleri (Hafta içi / Cumartesi / Pazar)
31
- - **Toplu taşıma (İstanbul / IETT):**
32
- - GTFS tabanlı hat özeti
33
- - SOAP tabanlı planlanan sefer saatleri
34
- - SOAP başarısız olduğunda GTFS özete otomatik fallback
35
- - `hat canli` ile canlı araç konumu (servis erişimine bağlı)
36
- - **Hava durumu (Open-Meteo):**
37
- - API key gerektirmeden güncel hava
38
- - Saatlik tahmin (1-7 gün)
39
- - Hava kalitesi (PM10, PM2.5, CO, NO2)
40
- - **Ekonomi:**
41
- - TCMB güncel döviz kurları listesi
42
- - **CLI UX:**
43
- - Komut bazlı spinner
44
- - Tablo tabanlı okunabilir terminal çıktısı
45
- - Global şehir ayarı (`~/.turkiyem/config.json`)
46
- - Bellek içi cache ile performans optimizasyonu
47
-
48
- ## Kurulum
49
-
50
- ### Global (önerilen)
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)
51
121
 
52
122
  ```bash
53
123
  npm install -g turkiyem
54
124
  ```
55
125
 
56
- ### Yerel geliştirme
126
+ Kurulumdan sonra herhangi bir terminalde:
57
127
 
58
128
  ```bash
59
- git clone <repo-url>
60
- cd turkiyemCLI
129
+ turkiyem
130
+ ```
131
+
132
+ ### Yerel Geliştirme
133
+
134
+ ```bash
135
+ git clone https://github.com/<kullanici>/turkiyem.git
136
+ cd turkiyem
61
137
  npm install
62
- npm link
138
+ npm link # Global olarak `turkiyem` komutunu aktif eder
63
139
  ```
64
140
 
65
- ### Gereksinim
141
+ ### Gereksinimler
66
142
 
67
- - Node.js `20+`
143
+ | Gereksinim | Minimum Versiyon |
144
+ |-----------|:----------------:|
145
+ | Node.js | `≥ 20.0.0` |
146
+ | npm | `≥ 9.0.0` |
68
147
 
69
- ## Hızlı Başlangıç
148
+ ---
149
+
150
+ ## 🚀 Hızlı Başlangıç
70
151
 
71
152
  ```bash
153
+ # 1. İnteraktif menüyü aç
72
154
  turkiyem
155
+
156
+ # 2. Şehir seç
73
157
  turkiyem sehir istanbul
158
+
159
+ # 3. Hat sorgula
74
160
  turkiyem hat 34AS
161
+
162
+ # 4. Deprem kontrol
75
163
  turkiyem deprem son24
164
+
165
+ # 5. Hava durumu
76
166
  turkiyem hava guncel
167
+
168
+ # 6. Döviz kurları
77
169
  turkiyem doviz
78
170
  ```
79
171
 
80
- ## Komut Referansı
81
-
82
- ### Genel
172
+ ---
83
173
 
84
- ```bash
85
- turkiyem
86
- turkiyem help
87
- turkiyem --version
88
- turkiyem temizle
89
- ```
174
+ ## 📚 Komut Referansı
90
175
 
91
- ### Şehir seçimi
176
+ ### Şehir Seçimi
92
177
 
93
178
  ```bash
94
- turkiyem sehir ankara
95
- 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
96
186
  ```
97
187
 
98
- > `hat` komutları seçili şehre göre çalışır.
188
+ > 💡 `hat` ve `durak` komutları her zaman seçili şehre göre çalışır.
99
189
 
100
- ### Hat sorgulama
190
+ ### Hat Sorgulama
101
191
 
102
192
  ```bash
103
- # Ankara (EGO)
193
+ # Ankara (EGO) — Hat bilgisi + gün tipine göre sefer saatleri
104
194
  turkiyem sehir ankara
105
195
  turkiyem hat 340
106
196
 
107
- # İstanbul (IETT)
197
+ # İstanbul (IETT) — GTFS özeti + SOAP planlanan saatler
108
198
  turkiyem sehir istanbul
109
199
  turkiyem hat 34AS
200
+
201
+ # Adana — Hat bilgisi + sefer saatleri + durak listesi
202
+ turkiyem sehir adana
203
+ turkiyem hat KM02
204
+
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
110
216
  ```
111
217
 
112
- İstanbul akışı:
113
- - 1) GTFS hat özeti
114
- - 2) SOAP planlanan sefer saatleri
115
- - 3) SOAP erişilemezse GTFS özeti + bilgilendirme mesajı
218
+ > Birden fazla eşleşen hat varsa interaktif bir seçim menüsü sunulur.
116
219
 
117
- ### IETT canlı konum
220
+ ### Durak Sorgulama
118
221
 
119
222
  ```bash
120
- # Özet çıktı
121
- turkiyem hat canli 34AS
223
+ # Adana — Durak detayı + geçen hatlar
224
+ turkiyem sehir adana
225
+ turkiyem durak 43681
226
+
227
+ # Antalya — Durak tarifesi (gün ve yön seçimli)
228
+ turkiyem sehir antalya
229
+ turkiyem durak 1234
230
+
231
+ # Bursa — Durağa yaklaşan araçlar ve kalan süre
232
+ turkiyem sehir bursa
233
+ turkiyem durak 5678
122
234
 
123
- # Detay çıktı
124
- turkiyem hat canli 34AS --detay
235
+ # İzmir — Durak araması + geçecek hatlar ve saatler
236
+ turkiyem sehir izmir
237
+ turkiyem durak konak
125
238
  ```
126
239
 
127
- > Not: Canlı konum sadece `istanbul` şehir seçiliyken anlamlıdır ve servis erişimine bağlıdır.
240
+ ### Canlı Konum
241
+
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ı
251
+ ```
128
252
 
129
253
  ### Deprem (AFAD)
130
254
 
131
255
  ```bash
132
- turkiyem deprem son24
133
- turkiyem deprem 7gun
134
- turkiyem deprem buyukluk 4.0
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
135
259
  ```
136
260
 
137
- ### Hava durumu ve hava kalitesi (Open-Meteo)
261
+ > ⚠️ Büyüklüğü 4.0 olan depremler kırmızı uyarı kutusuyla vurgulanır.
262
+
263
+ ### Hava Durumu & Kalite
138
264
 
139
265
  ```bash
140
266
  # Seçili şehir
141
- turkiyem hava guncel
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₂)
142
270
 
143
271
  # Şehir adıyla
144
272
  turkiyem hava guncel istanbul
145
- turkiyem hava saatlik ankara --gun 3
273
+ turkiyem hava saatlik ankara --gun 5 # 5 günlük saatlik tahmin
146
274
  turkiyem hava kalite izmir
147
275
 
148
276
  # Koordinatla
149
277
  turkiyem hava guncel 41.0082,28.9784
150
278
  ```
151
279
 
152
- ### Ekonomi (TCMB)
280
+ ### Döviz Kurları (TCMB)
153
281
 
154
282
  ```bash
155
- # Sık kullanılan kurlar (USD, EUR vb.)
156
- turkiyem doviz
283
+ turkiyem doviz # Popüler kurlar (USD, EUR, GBP vb.)
284
+ turkiyem doviz --tum # Tüm döviz kurları
285
+ ```
286
+
287
+ ### Yardımcı Komutlar
288
+
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
294
+ ```
295
+
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 |
157
312
 
158
- # Tüm kurlar listesi
159
- turkiyem doviz --tum
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
160
348
  ```
161
349
 
162
- ## Veri Kaynakları
350
+ ### Mimari Prensipler
163
351
 
164
- | Kaynak | Kullanım |
165
- |---|---|
166
- | AFAD | Deprem verileri |
167
- | EGO | Ankara hat/sefer saatleri |
168
- | IETT GTFS | İstanbul hat özeti |
169
- | IETT SOAP (PlanlananSeferSaati) | İstanbul planlanan sefer saatleri |
170
- | IETT SOAP (SeferGerceklesme) | İstanbul canlı araç konumu |
171
- | Open-Meteo Forecast | Güncel hava + saatlik tahmin |
172
- | Open-Meteo Air Quality | Hava kalitesi |
173
- | TCMB | Döviz kurları |
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 |
174
359
 
175
- ## Mimari ve Proje Yapısı
360
+ ---
361
+
362
+ ## ⚙️ Yapılandırma & Önbellek
363
+
364
+ ### Yapılandırma Dosyası
176
365
 
177
366
  ```text
178
- src/
179
- commands/ # CLI komut handler'ları
180
- services/ # Dış API / scraping / SOAP katmanı
181
- utils/ # Tablo, cache, config, banner yardımcıları
182
- index.js # Commander giriş noktası
367
+ ~/.turkiyem/config.json
183
368
  ```
184
369
 
185
- Mimari prensipleri:
186
- - Komut katmanı ile servis katmanı ayrımı
187
- - API bağımlılıklarının servis içinde izole edilmesi
188
- - Tekrarlanan işlerin util katmanına alınması
189
- - Tüm dış isteklerde timeout + anlamlı hata mesajı
370
+ ```json
371
+ {
372
+ "city": "istanbul"
373
+ }
374
+ ```
190
375
 
191
- ## Yapılandırma ve Cache
376
+ ### Önbellek Katmanları
192
377
 
193
- - Seçili şehir dosyası:
194
- - `~/.turkiyem/config.json`
195
- - Varsayılan cache:
196
- - Bellek içi (`node-cache`)
197
- - Kaynak bazlı TTL (ör. IETT SOAP, hava durumu vb.)
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 |
198
383
 
199
- Temizleme:
384
+ ### Temizleme
200
385
 
201
386
  ```bash
202
- turkiyem temizle
387
+ turkiyem temizle # Tüm cache ve yapılandırmayı sıfırlar
203
388
  ```
204
389
 
205
- ## Hata Yönetimi
390
+ ---
206
391
 
207
- Projede:
208
- - `unhandledRejection` ve `uncaughtException` yakalanır
209
- - API hataları kullanıcı dostu mesajlara çevrilir
210
- - Ağ timeout / bağlantı sorunları için özel açıklamalar verilir
211
- - Erişilemeyen kaynaklarda mümkün olan yerlerde fallback uygulanır
392
+ ## 🛡️ Hata Yönetimi & Güvenilirlik
212
393
 
213
- ## Geliştirme
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
400
+
401
+ ---
402
+
403
+ ## 🔧 Geliştirme
404
+
405
+ ### Ortam Hazırlığı
214
406
 
215
407
  ```bash
408
+ git clone https://github.com/<kullanici>/turkiyem.git
409
+ cd turkiyem
216
410
  npm install
217
- npm start
411
+ npm link
218
412
  ```
219
413
 
220
- Örnek geliştirme doğrulama komutları:
414
+ ### Geliştirme Komutları
221
415
 
222
416
  ```bash
417
+ # Doğrudan çalıştır
223
418
  node src/index.js help
224
419
  node src/index.js deprem son24
225
420
  node src/index.js hava guncel istanbul
226
- node src/index.js hat 34AS
421
+ node src/index.js sehir izmir
422
+ node src/index.js hat 34
423
+
424
+ # npm start ile
425
+ npm start
227
426
  ```
228
427
 
229
- ## Yayınlama (npm)
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)
230
441
 
231
442
  ```bash
232
- # 1) sürüm artır
233
- npm version patch
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)
234
447
 
235
- # 2) publish
448
+ # 2. Yayınla
236
449
  npm publish --access public
237
450
 
238
- # 3) kontrol
451
+ # 3. Doğrula
239
452
  npm view turkiyem version
240
453
  ```
241
454
 
242
- ## Sık Karşılaşılan Sorunlar
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.
480
+
481
+ ```bash
482
+ npm version patch
483
+ npm publish --access public
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.
243
522
 
244
- ### `npm publish` 403 (aynı sürüm)
245
- Önceden yayınlanmış bir sürüm numarasını tekrar gönderemezsiniz.
246
- Çözüm: `npm version patch|minor|major` sonrası tekrar publish.
523
+ ---
247
524
 
248
- ### `npm publish` 403 (2FA / token)
249
- NPM hesabınız için 2FA veya granular token gereksinimi olabilir.
250
- Çözüm: NPM hesabında token/2FA ayarlarını tamamlayın.
525
+ ## 📄 Lisans
251
526
 
252
- ### IETT canlı konum 500
253
- SOAP servis tarafı geçici olarak hata döndürebilir.
254
- Bu durumda kısa süre sonra tekrar deneyin.
527
+ Bu proje [MIT Lisansı](https://opensource.org/licenses/MIT) altında lisanslanmıştır.
255
528
 
256
- ## Lisans
529
+ ---
257
530
 
258
- MIT
531
+ <p align="center">
532
+ <sub>Built with ❤️ for Türkiye 🇹🇷</sub>
533
+ </p>