[{"data":1,"prerenderedAt":54},["ShallowReactive",2],{"video-dosya-yukleme-aes-sifreleme-net-8-iformfile-cryptostream-bapativault-bolum-1112":3,"video-related-dosya-yukleme-aes-sifreleme-net-8-iformfile-cryptostream-bapativault-bolum-1112":22},{"videoId":4,"title":5,"slug":6,"description":7,"thumbnailUrl":8,"videoUrl":9,"videoProvider":10,"duration":11,"channel":10,"musicUrl":12,"transcript":12,"viewCount":13,"likeCount":13,"commentCount":13,"isPublished":14,"publishedAt":15,"categoryId":16,"categoryName":17,"isActive":14,"isDeleted":18,"createDate":19,"updatedDate":20,"deletedDate":12,"createdUserId":21,"updatedUserId":21,"deletedUserId":12},"f713f0d0-fdc5-4723-a650-f88da55d7e43","Dosya Yükleme + AES Şifreleme .NET 8 — IFormFile, CryptoStream | BapatiVault Bölüm 11/12","dosya-yukleme-aes-sifreleme-net-8-iformfile-cryptostream-bapativault-bolum-1112","BapatiVault serisinin 11. bölümünde gerçek bir güvenlik özelliği kuruyoruz: dosya yükleme + AES şifreleme. Kullanıcıların yüklediği hassas belgeler, diske yazılmadan önce AES ile şifreleniyor. Yani diskte duran şey, anahtar olmadan tamamen anlamsız bir veri.\n\nBu Bölüm 11'de:\n- Tehlike: düz saklanan belgeler (sunucuya/yedeğe sızan herkes okur)\n- IFormFile ile dosya yükleme, içeriğe Stream olarak erişim\n- AES nedir? Simetrik şifreleme (şifrele ve çöz için aynı anahtar)\n- FileEncryptionService: Aes.Create, CipherMode.CBC, CryptoStream\n- Akış: yüklerken şifrele, indirirken çöz; düz hali diske hiç değmez\n- En kritik: anahtar nerede saklanır? appsettings YANLIŞ → User Secrets / Azure Key Vault\n\n⏱️ İçindekiler\n00:00 Dosya + AES nedir? (Bölüm 10 özeti)\n00:32 Tehlike: düz saklanan belge\n01:06 IFormFile ile yükleme\n01:36 AES nedir? (simetrik şifreleme)\n02:12 FileEncryptionService (CryptoStream)\n02:49 Akış: şifrele / çöz\n03:21 Anahtar nerede saklanır?\n03:58 Özet\n04:28 Sıradaki: Unit Test + Docker (FİNAL)\n\n📌 Seri sırası:\n1. Clean Architecture'a Giriş\n2. Domain Katmanı: BaseEntity & Entity\n3. Application: Abstraction & DTO\n4. EF Core + Migration\n5. Generic Repository (Async)\n6. UnitOfWork\n7. API Controllers + DI\n8. FluentValidation\n9. CQRS + MediatR\n10. OperationResult Pattern\n11. ⭐ Dosya Yükleme + AES (bu video)\n12. Unit Test + Docker Deploy\n\n🎓 Kimler için: dosya yükleme/şifreleme öğrenenler • AES ve CryptoStream • güvenli belge saklama • Clean Architecture Infrastructure katmanı\n\n🌐 Beni takip et:\n🔗 Web: https://bapati.com\n🐦 X: https://x.com/FG_1903\n▶️ YouTube: https://youtube.com/@BapatiTech\n💼 LinkedIn: https://linkedin.com/in/fırat-gurkan\n💻 GitHub: https://github.com/FiratGurkan\n\n▶️ Tüm seri (oynatma listesi): https://www.youtube.com/playlist?list=PL5BQVzKdrnREqSb2zmgpT4xwVVN6x5aOZ\n\n📚 Serinin tüm bölümleri: https://bapati.com/news/bapativault-net8-clean-architecture-serisi","https://img.youtube.com/vi/teF6jvqe8o0/maxresdefault.jpg","https://youtu.be/teF6jvqe8o0",1,316,null,0,true,"2026-07-27T21:33:53","4eb9e083-8590-4687-9f0b-3636522833f2","BapatiVault — Clean Architecture Master Serisi (.NET 8)",false,"2026-06-02T11:06:17.1005617","2026-09-17T15:15:52.7145155","ea4ea297-567a-491b-ac52-37db0674498b",[23,33,44],{"videoId":24,"title":25,"slug":26,"description":27,"thumbnailUrl":28,"videoUrl":29,"videoProvider":10,"duration":30,"channel":10,"musicUrl":12,"transcript":12,"viewCount":13,"likeCount":13,"commentCount":13,"isPublished":14,"publishedAt":15,"categoryId":16,"categoryName":17,"isActive":14,"isDeleted":18,"createDate":31,"updatedDate":32,"deletedDate":12,"createdUserId":21,"updatedUserId":21,"deletedUserId":12},"650ada04-b9d8-4a28-91ea-b2ccce830ac6","Unit Test + Docker .NET 8 — xUnit, Moq, Deploy (SERİ FİNALİ) | BapatiVault Bölüm 12/12","unit-test-docker-net-8-xunit-moq-deploy-seri-finali-bapativault-bolum-1212","BapatiVault serisinin BÜYÜK FİNALİ! 12. bölümde projeyi üretime hazır hale getiriyoruz: xUnit ve Moq ile birim testleri, AAA deseni ve Docker ile paketleme/dağıtım. Sonunda 12 bölümde inşa ettiğimiz her şeye birlikte bakıyoruz.\n\nBu Bölüm 12'de:\n- Neden test? Testsiz (korkuyla deploy) vs testli (güvenle değiştir)\n- xUnit + Moq: gerçek veritabanı olmadan, Mock ile birim testi\n- AAA deseni: Arrange (hazırlık), Act (eylem), Assert (doğrulama)\n- Dockerfile: çok aşamalı (multi-stage) build ile küçük, taşınabilir imaj\n- docker build / docker run → konteynerde çalışan API → buluta deploy\n- 12 bölümün özeti: Clean Architecture'dan üretime tüm yolculuk\n\n⏱️ İçindekiler\n00:00 Final — bugün ne var?\n00:35 Neden test yazıyoruz?\n01:07 xUnit + Moq ile test\n01:44 AAA pattern (Arrange-Act-Assert)\n02:18 Dockerfile (multi-stage)\n02:50 docker build / run + bulut\n03:21 Bu bölüm özeti\n03:47 12 bölümde ne yaptık?\n04:39 Kapanış\n05:14 Veda\n\n📌 Tüm seri (oynatma listesi):\n1. Clean Architecture'a Giriş\n2. Domain Katmanı: BaseEntity & Entity\n3. Application: Abstraction & DTO\n4. EF Core + Migration\n5. Generic Repository (Async)\n6. UnitOfWork\n7. API Controllers + DI\n8. FluentValidation\n9. CQRS + MediatR\n10. OperationResult Pattern\n11. Dosya Yükleme + AES\n12. ⭐ Unit Test + Docker Deploy (bu video — FİNAL)\n\n🙏 12 bölüm boyunca izlediğin için teşekkürler. Bu seri sana bir şey kattıysa, bir arkadaşınla paylaş!\n\n🎓 Kimler için: xUnit + Moq öğrenenler • test yazma alışkanlığı edinmek isteyenler • Docker ile dağıtım • Clean Architecture'ı uçtan uca görmek isteyenler\n\n🌐 Beni takip et:\n🔗 Web: https://bapati.com\n🐦 X: https://x.com/FG_1903\n▶️ YouTube: https://youtube.com/@BapatiTech\n💼 LinkedIn: https://linkedin.com/in/fırat-gurkan\n💻 GitHub: https://github.com/FiratGurkan\n\n▶️ Tüm seri (oynatma listesi): https://www.youtube.com/playlist?list=PL5BQVzKdrnREqSb2zmgpT4xwVVN6x5aOZ\n\n📚 Serinin tüm bölümleri: https://bapati.com/news/bapativault-net8-clean-architecture-serisi","https://img.youtube.com/vi/eL7BMwsm9zs/maxresdefault.jpg","https://youtu.be/eL7BMwsm9zs",345,"2026-06-02T11:18:38.9131252","2026-09-17T15:15:52.3225023",{"videoId":34,"title":35,"slug":36,"description":37,"thumbnailUrl":38,"videoUrl":39,"videoProvider":10,"duration":40,"channel":10,"musicUrl":12,"transcript":12,"viewCount":13,"likeCount":13,"commentCount":13,"isPublished":14,"publishedAt":41,"categoryId":16,"categoryName":17,"isActive":14,"isDeleted":18,"createDate":42,"updatedDate":43,"deletedDate":12,"createdUserId":21,"updatedUserId":21,"deletedUserId":12},"ca7657a0-42f2-4145-a920-03550efef3f2","OperationResult / ApiResponse .NET 8 — Tutarlı Cevap Zarfı | BapatiVault Bölüm 10/12","operationresult-apiresponse-net-8-tutarli-cevap-zarfi-bapativault-bolum-1012","BapatiVault serisinin 10. bölümünde cevaplarımızı standartlaştırıyoruz: OperationResult deseni. Bir endpoint string, biri bool, biri exception döndüğünde frontend çıldırır. Çözüm: her cevabı tek ve tutarlı bir zarf (ApiResponse) içinde dönmek.\n\nBu Bölüm 10'da:\n- Problem: her endpoint farklı formatta cevap dönüyor (frontend kâbusu)\n- ApiResponse (T tipiyle): Success, Data, Message, Errors içeren tek generic zarf\n- Ok / Fail fabrika metotları ile tek satırda tutarlı cevap\n- Handler'da kullanım: hata da, başarı da aynı zarfta\n- Exception mı, Result mu? İstisnai durum vs beklenen hata\n- Frontend kazanır: tüm uygulamada tek cevap işleme kuralı\n\n⏱️ İçindekiler\n00:00 OperationResult nedir? (Bölüm 9 özeti)\n00:34 Problem: tutarsız cevaplar\n01:10 ApiResponse — tek generic zarf\n01:41 Ok / Fail fabrika metotları\n02:11 Handler'da kullanım\n02:44 Exception mı, Result mu?\n03:24 Frontend: tek işleme kuralı\n03:54 Özet\n04:27 Sıradaki: Dosya Yükleme + AES\n\n📌 Seri sırası:\n1. Clean Architecture'a Giriş\n2. Domain Katmanı: BaseEntity & Entity\n3. Application: Abstraction & DTO\n4. EF Core + Migration\n5. Generic Repository (Async)\n6. UnitOfWork\n7. API Controllers + DI\n8. FluentValidation\n9. CQRS + MediatR\n10. ⭐ OperationResult Pattern (bu video)\n11. Dosya Yükleme + AES\n12. Unit Test + Docker Deploy\n\n🎓 Kimler için: tutarlı API cevabı isteyenler • Result pattern öğrenenler • exception vs Result tartışmasına cevap arayanlar • frontend dostu backend yazanlar\n\n🌐 Beni takip et:\n🔗 Web: https://bapati.com\n🐦 X: https://x.com/FG_1903\n▶️ YouTube: https://youtube.com/@BapatiTech\n💼 LinkedIn: https://linkedin.com/in/fırat-gurkan\n💻 GitHub: https://github.com/FiratGurkan\n\n▶️ Tüm seri (oynatma listesi): https://www.youtube.com/playlist?list=PL5BQVzKdrnREqSb2zmgpT4xwVVN6x5aOZ\n\n📚 Serinin tüm bölümleri: https://bapati.com/news/bapativault-net8-clean-architecture-serisi","https://img.youtube.com/vi/du1vKyCLgSY/maxresdefault.jpg","https://youtu.be/du1vKyCLgSY",315,"2026-07-27T21:33:54","2026-06-02T10:36:09.7607219","2026-09-17T15:15:53.0953275",{"videoId":45,"title":46,"slug":47,"description":48,"thumbnailUrl":49,"videoUrl":50,"videoProvider":10,"duration":51,"channel":10,"musicUrl":12,"transcript":12,"viewCount":13,"likeCount":13,"commentCount":13,"isPublished":14,"publishedAt":41,"categoryId":16,"categoryName":17,"isActive":14,"isDeleted":18,"createDate":52,"updatedDate":53,"deletedDate":12,"createdUserId":21,"updatedUserId":21,"deletedUserId":12},"b65952e4-08ba-4bd5-9017-28f7a48eff5c","CQRS + MediatR .NET 8 — Command, Query, Handler Sıfırdan | BapatiVault Bölüm 9/12","cqrs-mediatr-net-8-command-query-handler-sifirdan-bapativault-bolum-912","BapatiVault serisinin 9. bölümünde projeyi profesyonel seviyeye taşıyoruz: CQRS ve MediatR. Şişen dev servisleri terk edip her işlemi kendi küçük handler'ına bölüyoruz. Okuma ve yazma ayrılıyor, Controller'lar tek satıra iniyor.\n\nBu Bölüm 9'da:\n- Problem: tek serviste her şey (1000+ satır) okunamaz, test edilemez\n- CQRS nedir: Command (yazma: oluştur/güncelle/sil) vs Query (okuma: getir/listele)\n- CreateDocumentCommand (record + IRequest) ve CommandHandler (IRequestHandler)\n- GetDocumentByIdQuery ve QueryHandler — AutoMapper ile DTO\n- MediatR: Controller sadece _mediator.Send() der, doğru Handler'a gider\n- CQRS overkill mi? Hangi proje büyüklüğünden itibaren gerekli?\n\n⏱️ İçindekiler\n00:00 CQRS + MediatR nedir? (Bölüm 8 özeti)\n00:34 Problem: şişen servisler\n01:08 CQRS = Command + Query ayrımı\n01:49 CreateDocumentCommand + Handler\n02:30 GetDocumentByIdQuery + Handler\n03:02 MediatR: Controller tek satır\n03:35 CQRS overkill mi?\n04:11 Özet\n04:44 Sıradaki: OperationResult\n\n📌 Seri sırası:\n1. Clean Architecture'a Giriş\n2. Domain Katmanı: BaseEntity & Entity\n3. Application: Abstraction & DTO\n4. EF Core + Migration\n5. Generic Repository (Async)\n6. UnitOfWork\n7. API Controllers + DI\n8. FluentValidation\n9. ⭐ CQRS + MediatR (bu video)\n10. OperationResult Pattern\n11. Dosya Yükleme + AES\n12. Unit Test + Docker Deploy\n\n🎓 Kimler için: CQRS ve MediatR öğrenenler • Command/Query/Handler yapısı • ince Controller • Clean Architecture'ı bir üst seviyeye taşımak isteyenler\n\n🌐 Beni takip et:\n🔗 Web: https://bapati.com\n🐦 X: https://x.com/FG_1903\n▶️ YouTube: https://youtube.com/@BapatiTech\n💼 LinkedIn: https://linkedin.com/in/fırat-gurkan\n💻 GitHub: https://github.com/FiratGurkan\n\n▶️ Tüm seri (oynatma listesi): https://www.youtube.com/playlist?list=PL5BQVzKdrnREqSb2zmgpT4xwVVN6x5aOZ\n\n📚 Serinin tüm bölümleri: https://bapati.com/news/bapativault-net8-clean-architecture-serisi","https://img.youtube.com/vi/SQfUIhGOHzk/maxresdefault.jpg","https://youtu.be/SQfUIhGOHzk",331,"2026-06-02T10:25:15.9879451","2026-09-17T15:15:53.4877655",1789725847257]