İstenenler;
- docker-compose ile dockerize edilmesi
- Identity ve permissionların tek bir yerden yönetilmesi
- RabbitMQ / Kafka tarzı Queue sistemlerinin kullanılması
- API katmanında JWT güvenlik ve ekstralar
- UI Tarafında API ile JWT üzerinden iletişim
Notlar;
- Test/mülakat amaçlı olduğundan dolayı sadece Identiy katmanı N-Layer Clean Arc yapılmıştır.
- IK.UI katmanında örnek olması için router, store sistemleri kullanılmıştır.
- IK.UI'da hızlı çıkması için eksiklikler var. Back-end tarafında temelleri var. Bazı özellikler UI'a bağlanmadı.
- Test/mülakat amaçlı olduğu için her şey tekrarlayan işlerden arındırılarak yapılmıştır. Tam anlamıyla kusursuz çalışan bir sistem yapmak değil, mekanizmanın nasıl işlediğini göstermektir.
Farkında olunan eksikler;
- Identity katmanında validatörler arttırarak CRUD işlemlerde valid işlem kontrolü yapılabiir.
- Inventory.API katmanına EP'ler ekleneren envanter kaydı girmesi sağlanabilir. Identity'nin JWT içinde `permissions` olarak gömdüğü permissionlardan EP güvenliği sağlanabilir.
- IK.UI katmanında listeleme, filtreleme eknelebilir. Identity.API tarafı `/users/getAll` EP'si ile destekliyor. Sadece UI eklenmedi.
- RabbitMQ ile fırlatılanlar Inventory.API katmanında tutulunca bazı kontrollere girilerek işlem yapılabilir.
- RabbitMQ consumerlar channel'lar üzerinden CQRS gibi çalışarak Clean Arch sağlanabilir.
- API katmanlarına CORS güvenliği eklenebilir.
- SSO'dan profil bilgisi alınabiliyor ama UI'da yok. `/profile/get` EP'si JWT token'e ait kullanıcının güncel bilgilerini Identity.DB'den getiriyor.
- docker-compose içine isteği karşılaması için HAProxy veya Nginx ReverseProxy yapısı yapılarak hem LoadBalance hem de API Gateway yapılabilir.
Diagram;