Elinizdeki içerik orijinal olarak Türkçe yazılmamıştır. Bu metin otomatik çeviri ile Türkçeye aktarılmıştır.
Bu projeyi, birden fazla kullanıcıya (veya “tenant”a) hizmet edebilen, erişim yetkilerini kontrol edebilen bir backend API’nin nasıl yazıldığını gerçekten öğrenmek için yaptım.
Neden Yaptım?
- Fastify (çok hızlı!), Drizzle ORM (TypeScript ile veritabanı işleri için harika) ve PostgreSQL gibi bazı modern araçları iyice öğrenmek istiyordum.
- Birden fazla uygulamanın aynı API'yi güvenli bir şekilde kullanabilmesi için veri izolasyonu nasıl sağlanır, bunu çözmem gerekiyordu.
- Kim ne yapabilir, hangi işlemlere erişebilir gibi yetkilendirme sistemini sağlam bir şekilde kurmak istiyordum (RBAC).
- Kodumu doğru şekilde test edebilmek benim için önemliydi. Bu yüzden hem birim testleri hem de entegrasyon testlerini (mini bir veritabanıyla bile) yapabilmek için Vitest kurdum.
- Aynı özellikleri gerektiren gelecek projelerime sağlam bir başlangıç noktası oluşturmak da hedeflerim arasındaydı.
Neler Öğrendim? (Gerçekten çok şey!)
- Fastify ve Drizzle harika araçlar! Fastify gerçekten hızlı, Drizzle ise veritabanı işlemlerini TypeScript ile daha güvenli ve kolay hale getiriyor.
- Çoklu tenant sistemlerinde verilerin birbirine karışmaması için nasıl yapı kurulması gerektiğini çok daha iyi kavradım.
- RBAC sistemini kurmak başlangıçta zordu ama sonunda çok işe yaradığını gördüm. Artık bir kullanıcının yetkilerine göre API endpoint'lerini nasıl koruyacağımı biliyorum.
- Test yazmak ciddi fark yaratıyor. Yazdığım testler sayesinde kodun düzgün çalıştığından çok daha emin olabiliyorum.
- Proje yapısını nasıl düzenlediğimden memnunum. Dosyalar arasında kaybolmadan çalışmak çok rahat oldu.
Bu proje, backend geliştirme yolculuğumda önemli bir adım oldu. Çok fazla şey öğrendim ve artık elimde sağlam bir altyapı var.