Ana içeriğe geç

Backend Mimarisi

Katmanlar ve dosya sayıları

Dizin Dosya Sorumluluk
routers/ 7 Yol + metot tanımı
controllers/ 5 HTTP sınırı
services/ 17 İş kuralı
models/ 5 Veri şekli, izin verilen değerler
middlewares/ 5 Çapraz kesen davranış
utils/ 9 Saf yardımcılar
db/ 1 MongoDB bağlantısı

Uygulanan tasarım kuralları

  • Tek sorumluluk — not-found.middleware.ts 8 satır, sadece 404 döner; request-id.middleware.ts kimlik üretir ama hiçbir şey kaydetmez.
  • Açık/kapalı — izin verilen değerler as const dizilerde tutulur (API_DOC_ENGINE_TYPES, API_DOC_COUNT_FIELDS); yeni değer eklemek doğrulama mantığını değiştirmez.
  • Liskov — yalnızca iki sınıf vardır ve ikisi de Error'dan türer (HttpError, MailSendError). HttpError kurucusunda Object.setPrototypeOf çağrısı, ES5 hedefinde instanceof kontrolünün bozulmasını engeller.
  • Arayüz ayrımı — ham belge (ApiDocDocument) ile dışa verilen öğe (ApiDocListItem) ayrı tiplerdir.

Bilinen sınırlar

  • Bağımlılık enjeksiyonu konteyneri yoktur (inversify, tsyringe, awilix, typedi bağımlılıkları bulunmaz).
  • Servisler ile MongoDB arasında bir repository arayüzü yoktur; servisler koleksiyona doğrudan erişir.
  • db/mongodb.ts modül düzeyinde tekil durum tutar (client, database).

Bunlar gizlenmiş eksikler değil, bilinçli sadelik tercihinin sonucudur; ancak birim testte sahte bir depo koymayı zorlaştırır.