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.ts8 satır, sadece 404 döner;request-id.middleware.tskimlik üretir ama hiçbir şey kaydetmez. - Açık/kapalı — izin verilen değerler
as constdizilerde 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).HttpErrorkurucusundaObject.setPrototypeOfçağrısı, ES5 hedefindeinstanceofkontrolü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,typedibağımlılıkları bulunmaz). - Servisler ile MongoDB arasında bir repository arayüzü yoktur; servisler koleksiyona doğrudan erişir.
db/mongodb.tsmodü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.