🟢 C1 · Kurulum: npm init, express, nodemon

C1 · Kurulum: npm init, express, nodemon: Bir Express projesi kurmak, **boş bir dükkan kiralamak** gibidir: Spring Boot'un "starter"ı sana döşenmiş bir mutfak verirken (Bölüm B1)

Bir Express projesi kurmak, **boş bir dükkan kiralamak** gibidir: Spring Boot'un "starter"ı sana döşenmiş bir mutfak verirken (Bölüm B1), Express sana sadece anahtarı verir — tezgahı, ocağı, tabelayı sen kurarsın. `npm init` boş bir sözleşme (package.json) açar, `npm install express` tek bir minik kütüphane ekler (yönlendirme + HTTP yardımcıları), gerisi (validation, ORM, loglama) senin seçimindir. Peki Spring'de tek satır her şeyi getirirken Express'te neden bu kadar "çıplak" başlıyoruz? Çünkü Node ekosisteminin felsefesi **un-opinionated**'dır — sana dayatma yapmaz, sen neye ihtiyacın olduğuna karar verirsin; küçük bir servis için bu hız kazandırır, büyük bir takımda ise disiplin gerektirir (herkes farklı bir validation kütüphanesi seçebilir). Java'da bunun en yakın karşılığı çıplak bir Servlet projesi kurmaktır — Spring Boot bunu senin için otomatikleştirir, Express otomatikleştirmez. Tester için sonuç aynı: kurulum kırıksa test edilecek bir sunucu yoktur; ilk smoke test yine "uygulama hatasız başlıyor ve bir portu dinliyor mu?" sorusudur.

İlk Sunucu: 5 Satırda Ayakta

**🐞 Defect Doğum Anı — `app.listen(...)` unutulursa** **Kod:** `app.get(...)` yazıldı, route tanımlandı, ama dosyanın sonunda `app.listen(PORT, ...)` satırı YOK. **Ne olur:** `node index.js` çalıştırılır, script hatasız biter, terminal sessizce komut istemine döner — hiçbir hata mesajı YOKTUR. Hiçbir port dinlenmediği için `curl http://localhost:3000/api/v1/bugs` `ECONNREFUSED` verir. **Neden sinsi:** Kodda syntax hatası yok, route doğru yazılmış, derleme/parse aşaması sorunsuz geçer. Bir stack trace bile yoktur — sadece "hiçbir şey olmaz". Yeni başlayan bir geliştirici bunu "sunucu çöktü" sanıp saatlerce route kodunda hata arayabilir. **Tester nerede yakalar:** Otomasyonun ilk request'inde bağlantı reddi (`ECONNREFUSED`) alınca — bu GRUP J'deki "sunucuya hiç ulaşılamıyor" hata kategorisinin köküdür.

🎬 Boş Dükkandan Dinleyen Sunucuya

`npm init -y` ile boş bir package.json açtın — henüz tek satır sunucu kodu yok.

`npm install express` — küçük ama yönlendirme + HTTP yardımcılarını getiren tek kütüphane eklendi.

`app.get('/api/v1/bugs', ...)` — bir yol tanımlandı, ama bu SADECE tanımdır, sunucu henüz hiçbir portu dinlemiyor.

`app.listen(PORT, ...)` çağrılmadan Express uygulaması "canlı" sayılmaz — bu satır olmadan tanımlı route'lar da erişilemez kalır.

Ders — `node index.js` hatasız bitmesi "çalışıyor" anlamına gelmez; tester ilk kanıtı gerçek bir request'le (`curl`/Postman) ister.

Boş Klasörden İlk Response'a

npm init -y ile boş package.json oluştur, npm install express ile kütüphaneyi ekle.

app.get('/api/v1/bugs', ...) ile ilk yolu tanımla — bu henüz sunucuyu ayağa kaldırmaz.

app.listen(PORT, ...) çağrısı olmadan hiçbir request sunucuya ulaşamaz.

Express API'sini sıfırdan ayağa kaldırma sırasını diz.