{"id":25828327,"url":"https://github.com/thecoderpinar/corexcrudapi","last_synced_at":"2025-02-28T17:36:10.684Z","repository":{"id":278218490,"uuid":"934905371","full_name":"ThecoderPinar/CoreXCrudAPI","owner":"ThecoderPinar","description":null,"archived":false,"fork":false,"pushed_at":"2025-02-18T15:51:32.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-18T16:37:07.045Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ThecoderPinar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-18T15:40:08.000Z","updated_at":"2025-02-18T15:51:37.000Z","dependencies_parsed_at":"2025-02-18T16:47:14.951Z","dependency_job_id":null,"html_url":"https://github.com/ThecoderPinar/CoreXCrudAPI","commit_stats":null,"previous_names":["thecoderpinar/corexcrudapi"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThecoderPinar%2FCoreXCrudAPI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThecoderPinar%2FCoreXCrudAPI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThecoderPinar%2FCoreXCrudAPI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ThecoderPinar%2FCoreXCrudAPI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ThecoderPinar","download_url":"https://codeload.github.com/ThecoderPinar/CoreXCrudAPI/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241190854,"owners_count":19925109,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-28T17:36:09.904Z","updated_at":"2025-02-28T17:36:10.676Z","avatar_url":"https://github.com/ThecoderPinar.png","language":"C#","readme":"# CoreXCrud Projesi - Kapsamlı API Geliştirme\r\n\r\n## 📌 **Proje Açıklaması**\r\n\r\nCoreXCrud, **modern, ölçeklenebilir ve güvenli** bir **ASP.NET Core Web API** uygulamasıdır. **CRUD işlemleri**, **JWT Authentication**, **Yetkilendirme**, **Rate Limiting**, **Serilog Loglama**, **Unit of Work \u0026 Repository Pattern**, **FluentValidation**, **AutoMapper**, **Mikroservis Mimarisine Uygun Yapı** gibi modern yazılım geliştirme standartlarını içeren kapsamlı bir API geliştirme projesidir.\r\n\r\nBu proje, **kurumsal seviyede API geliştirme süreçlerini** kapsayan **en iyi uygulamaları (best practices)** içermektedir. **Unit Testler ve Entegrasyon Testleri** gibi birçok ileri düzey özellik içermektedir.\r\n\r\n----------\r\n\r\n## 🚀 **Öne Çıkan Özellikler**\r\n\r\n-   ✅ **.NET 8 Web API** kullanılarak geliştirilmiştir.\r\n-   ✅ **JWT Authentication ve Role-based Authorization** desteği.\r\n-   ✅ **AutoMapper ile DTO kullanımı**.\r\n-   ✅ **FluentValidation ile model doğrulama**.\r\n-   ✅ **Serilog ile detaylı loglama (Dosya ve Konsol Destekli).**\r\n-   ✅ **AspNetCoreRateLimit ile Rate Limiting (İstek Sınırlandırma)**.\r\n-   ✅ **Unit of Work \u0026 Repository Pattern ile veri yönetimi**.\r\n-   ✅ **Mikroservis mimarisine uygun ölçeklenebilir yapı.**\r\n-   ✅ **Swagger UI ile Test Edilebilir API Geliştirme.**\r\n-   ✅ **RabbitMQ ile Event-Driven Mimarisi.**\r\n\r\n----------\r\n\r\n## 📁 **Proje Yapısı**\r\n\r\n```bash\r\nCoreXCrudSolution/\r\n│── CoreXCrud/                     # Ana API Projesi\r\n│   │── Controllers/               # API Controller dosyaları\r\n│   │── Data/                      # Veritabanı bağlantısı ve DbContext\r\n│   │── DTOs/                      # Veri transfer objeleri (DTO)\r\n│   │── Models/                    # Entity modelleri\r\n│   │── Repositories/              # Repository ve Unit of Work yapısı\r\n│   │── Services/                  # İş mantığı için servis katmanı\r\n│   │── Validators/                # FluentValidation ile model doğrulama\r\n│   │── logs/                      # Serilog log dosyaları\r\n│   │── appsettings.json           # Konfigürasyon ayarları\r\n│── CoreXCrud.UI/                  # Opsiyonel MVC UI Projesi (İptal Edildi)\r\n│── README.md                      # Proje dokümantasyonu\r\n\r\n```\r\n\r\n----------\r\n## 🎨 **Mimari Diyagram**\r\n\r\n```mermaid\r\ngraph TD;\r\n    Client(Kullanıcı) --\u003e|İstek| API_Gateway\r\n    API_Gateway --\u003e|Doğrulama| Authentication_Service\r\n    API_Gateway --\u003e|İstek Yönlendirme| Products_Service\r\n    API_Gateway --\u003e|İstek Yönlendirme| Orders_Service\r\n    API_Gateway --\u003e|İstek Yönlendirme| Users_Service\r\n    Authentication_Service --\u003e|JWT Token| API_Gateway\r\n    Products_Service --\u003e|CRUD| Database\r\n    Orders_Service --\u003e|CRUD| Database\r\n    Users_Service --\u003e|CRUD| Database\r\n    Database[(SQL Server, PostgreSQL, MongoDB)]\r\n\r\n    subgraph Kullanıcı Yönetimi\r\n        Users_Service\r\n    end\r\n\r\n    subgraph Ürün Yönetimi\r\n        Products_Service --\u003e Database[(Veritabanı)]\r\n    end\r\n\r\n    subgraph Sipariş Yönetimi\r\n        Orders_Service --\u003e Database[(Veritabanı)]\r\n    end\r\n\r\n    subgraph Kimlik Doğrulama\r\n        Authentication_Service\r\n    end\r\n\r\n```\r\n\r\n## 🗂 **Veri Akışı Diyagramı**\r\n\r\n```mermaid\r\ngraph TD;\r\n    User[End User] --\u003e|Login| AuthService[Authentication Service]\r\n    AuthService --\u003e|Token Generation| Token[JWT Token]\r\n    Token --\u003e|Authorized Request| APIGateway[API Gateway]\r\n    APIGateway --\u003e|Routes to| ProductService[Product Service]\r\n    APIGateway --\u003e|Routes to| OrderService[Order Service]\r\n    APIGateway --\u003e|Routes to| UserService[User Service]\r\n    ProductService --\u003e|Fetches| ProductDB[(Product Database)]\r\n    OrderService --\u003e|Fetches| OrderDB[(Order Database)]\r\n    UserService --\u003e|Fetches| UserDB[(User Database)]\r\n\r\n```\r\n\r\n## 📂 **Veritabanı Şema Diyagramı**\r\n\r\n```mermaid\r\ngraph TD;\r\n    DB[(Database)] --\u003e|Contains| UsersTable[Users Table]\r\n    DB --\u003e|Contains| ProductsTable[Products Table]\r\n    DB --\u003e|Contains| OrdersTable[Orders Table]\r\n    DB --\u003e|Contains| OrderDetailsTable[Order Details Table]\r\n    UsersTable --\u003e|Primary Key| UserId[User ID]\r\n    ProductsTable --\u003e|Primary Key| ProductId[Product ID]\r\n    OrdersTable --\u003e|Foreign Key| UserId[User ID]\r\n    OrdersTable --\u003e|Primary Key| OrderId[Order ID]\r\n    OrderDetailsTable --\u003e|Foreign Key| OrderId[Order ID]\r\n    OrderDetailsTable --\u003e|Foreign Key| ProductId[Product ID]\r\n    OrderDetailsTable --\u003e|Primary Key| OrderDetailId[Order Detail ID]\r\n\r\n```\r\n\r\n## 🔐 **Kimlik Doğrulama Akışı**\r\n\r\n```mermaid\r\ngraph TD;\r\n    Client --\u003e|Login Request| AuthService\r\n    AuthService --\u003e|Validates Credentials| UserStore[(User Store)]\r\n    AuthService --\u003e|Returns| JWTToken[JWT Token]\r\n    Client --\u003e|Attaches JWT| APIRequest[API Request]\r\n    APIRequest --\u003e|Validated by| APIGateway\r\n    APIGateway --\u003e|Sends Request| BackendServices[Backend Services]\r\n\r\n```\r\n\r\n## 🏗️ **Hizmet Tabanlı Mimarisi**\r\n\r\n```mermaid\r\ngraph TD;\r\n    API_Gateway --\u003e|Routes Requests| Auth_Service[Authentication Service]\r\n    API_Gateway --\u003e|Routes Requests| Product_Service[Product Service]\r\n    API_Gateway --\u003e|Routes Requests| Order_Service[Order Service]\r\n    Auth_Service --\u003e|Generates Tokens| Token_Storage[(Token Storage)]\r\n    Product_Service --\u003e|CRUD Operations| Product_Database[(Product Database)]\r\n    Order_Service --\u003e|CRUD Operations| Order_Database[(Order Database)]\r\n    Product_Service --\u003e|Validates Stock| Stock_Validation[(Stock Validation Service)]\r\n\r\n```\r\n----------\r\n\r\n## 🏗 **Kurulum ve Çalıştırma**\r\n\r\n### **1️⃣ Gerekli Bağımlılıkları Yükleyin**\r\n\r\nÖncelikle gerekli NuGet paketlerini yüklemek için aşağıdaki komutu çalıştırın:\r\n\r\n```sh\r\n dotnet restore\r\n\r\n```\r\n\r\n### **2️⃣ Veritabanını Güncelleyin**\r\n\r\nMigration ve veritabanı güncellemesini şu komutlarla yapabilirsiniz:\r\n\r\n```sh\r\n dotnet ef migrations add InitialCreate\r\n dotnet ef database update\r\n\r\n```\r\n\r\n### **3️⃣ Uygulamayı Çalıştırın**\r\n\r\nAşağıdaki komutla API’yi çalıştırabilirsiniz:\r\n\r\n```sh\r\n dotnet run\r\n\r\n```\r\n\r\nSwagger UI’ye erişmek için:\r\n\r\n```\r\nhttps://localhost:7252/swagger\r\n\r\n```\r\n\r\n----------\r\n\r\n## 📊 API Modülleri ve Uç Noktalar\r\n\r\n### 🧑‍💼 1️⃣ Kullanıcı Yönetimi (Users)\r\n\r\nKullanıcı yönetimi API'si, sistemdeki kullanıcıları yönetmek için kullanılır.\r\n\r\n**HTTP Metodu**\r\n\r\n**Uç Nokta**\r\n\r\n**Açıklama**\r\n\r\n`GET`\r\n\r\n`/api/Users`\r\n\r\n📌 Tüm kullanıcıları getir\r\n\r\n`POST`\r\n\r\n`/api/Users`\r\n\r\n➕ Yeni kullanıcı oluştur\r\n\r\n`GET`\r\n\r\n`/api/Users/{id}`\r\n\r\n🔍 Belirli bir kullanıcıyı getir\r\n\r\n`PUT`\r\n\r\n`/api/Users/{id}`\r\n\r\n✏️ Kullanıcıyı güncelle\r\n\r\n`DELETE`\r\n\r\n`/api/Users/{id}`\r\n\r\n❌ Kullanıcıyı sil\r\n\r\n----------\r\n\r\n### 📦 2️⃣ Ürün Yönetimi (Products)\r\n\r\nÜrün yönetimi API'si, sistemdeki ürünleri yönetmek için kullanılır.\r\n\r\n**HTTP Metodu**\r\n\r\n**Uç Nokta**\r\n\r\n**Açıklama**\r\n\r\n`GET`\r\n\r\n`/api/Products`\r\n\r\n📌 Tüm ürünleri getir\r\n\r\n`POST`\r\n\r\n`/api/Products`\r\n\r\n➕ Yeni ürün ekle\r\n\r\n`GET`\r\n\r\n`/api/Products/{id}`\r\n\r\n🔍 Belirli bir ürünü getir\r\n\r\n`PUT`\r\n\r\n`/api/Products/{id}`\r\n\r\n✏️ Ürünü güncelle\r\n\r\n`DELETE`\r\n\r\n`/api/Products/{id}`\r\n\r\n❌ Ürünü sil\r\n\r\n----------\r\n\r\n### 🛒 3️⃣ Sipariş Yönetimi (Orders)\r\n\r\nSipariş yönetimi API'si, müşterilerin siparişlerini yönetmek için kullanılır.\r\n\r\n**HTTP Metodu**\r\n\r\n**Uç Nokta**\r\n\r\n**Açıklama**\r\n\r\n`GET`\r\n\r\n`/api/Orders`\r\n\r\n📌 Tüm siparişleri getir\r\n\r\n`POST`\r\n\r\n`/api/Orders`\r\n\r\n➕ Yeni sipariş oluştur\r\n\r\n`GET`\r\n\r\n`/api/Orders/{id}`\r\n\r\n🔍 Belirli bir siparişi getir\r\n\r\n`PUT`\r\n\r\n`/api/Orders/{id}`\r\n\r\n✏️ Siparişi güncelle\r\n\r\n`DELETE`\r\n\r\n`/api/Orders/{id}`\r\n\r\n❌ Siparişi sil\r\n\r\n----------\r\n\r\n### 📑 4️⃣ Sipariş Detayları Yönetimi (Order Details)\r\n\r\nSipariş detayları API'si, siparişlerin içeriğini yönetmek için kullanılır.\r\n\r\n**HTTP Metodu**\r\n\r\n**Uç Nokta**\r\n\r\n**Açıklama**\r\n\r\n`GET`\r\n\r\n`/api/OrderDetails`\r\n\r\n📌 Tüm sipariş detaylarını getir\r\n\r\n`POST`\r\n\r\n`/api/OrderDetails`\r\n\r\n➕ Yeni sipariş detayı oluştur\r\n\r\n`GET`\r\n\r\n`/api/OrderDetails/{id}`\r\n\r\n🔍 Belirli bir sipariş detayını getir\r\n\r\n`PUT`\r\n\r\n`/api/OrderDetails/{id}`\r\n\r\n✏️ Sipariş detayını güncelle\r\n\r\n`DELETE`\r\n\r\n`/api/OrderDetails/{id}`\r\n\r\n❌ Sipariş detayını sil\r\n\r\n----------\r\n\r\n### 🔐 5️⃣ Kimlik Doğrulama (Authentication)\r\n\r\nKimlik doğrulama API'si, kullanıcı giriş işlemleri için kullanılır.\r\n\r\n**HTTP Metodu**\r\n\r\n**Uç Nokta**\r\n\r\n**Açıklama**\r\n\r\n`POST`\r\n\r\n`/api/Auth/login`\r\n\r\n🔐 Kullanıcı girişi yap ve JWT al\r\n\r\n#### 📝 Kullanıcı Girişi İçin Örnek JSON İsteği:\r\n\r\n```json\r\n{\r\n   \"username\": \"admin\",\r\n   \"password\": \"password\"\r\n}\r\n\r\n```\r\n\r\n### 🔑 **Swagger UI'de JWT Authentication Kullanımı**\r\n\r\n1.  **Swagger UI'yi açın** (`https://localhost:7252/swagger`).\r\n2.  **Önce `/api/Auth/login` endpointine kullanıcı adı ve şifre ile POST isteği gönderin**.\r\n3.  Dönen **JWT Token'ı kopyalayın**.\r\n4.  Sağ üst köşede bulunan **\"Authorize\" butonuna** tıklayın.\r\n5.  Açılan pencereye **\"Bearer {token}\"** formatında JWT'yi yapıştırın.\r\n6.  **Authorize butonuna basarak oturumu açın** ve artık yetkilendirilmiş API çağrıları yapabilirsiniz. 🚀\r\n----------\r\n## 🚨 Hata Durumları ve HTTP Status Kodları\r\n\r\nAPI kullanımı sırasında oluşabilecek hata durumlarını ve döndürülebilecek **HTTP status kodlarını** aşağıda görebilirsiniz.\r\n\r\n### 🔴 **Genel Hata Kodları**\r\n\r\n**Status Kodu**\r\n\r\n**Anlamı**\r\n\r\n`400 Bad Request`\r\n\r\n❌ Geçersiz veya eksik parametre gönderildi.\r\n\r\n`401 Unauthorized`\r\n\r\n🔒 Yetkilendirme başarısız oldu veya token eksik.\r\n\r\n`403 Forbidden`\r\n\r\n🚫 Yetkiniz olmayan bir kaynağa erişmeye çalışıyorsunuz.\r\n\r\n`404 Not Found`\r\n\r\n🔍 İstenilen kaynak bulunamadı.\r\n\r\n`405 Method Not Allowed`\r\n\r\n⛔ Geçersiz HTTP metodu kullanıldı.\r\n\r\n`409 Conflict`\r\n\r\n⚠️ Veri çakışması meydana geldi. (Örn: Kayıt zaten var)\r\n\r\n`415 Unsupported Media Type`\r\n\r\n📂 Geçersiz içerik türü (Örn: `application/json` beklenirken farklı bir format gönderildi).\r\n\r\n`422 Unprocessable Entity`\r\n\r\n❌ Doğrulama hatası, girilen veriler uygun değil.\r\n\r\n`429 Too Many Requests`\r\n\r\n⏳ İstek sınırı aşıldı, çok fazla istek yapıldı.\r\n\r\n`500 Internal Server Error`\r\n\r\n🔥 Sunucu tarafında beklenmeyen bir hata oluştu.\r\n\r\n`503 Service Unavailable`\r\n\r\n🚧 Sunucu şu an hizmet veremiyor, daha sonra tekrar deneyin.\r\n\r\n### 🔑 **Kimlik Doğrulama ve Yetkilendirme Hataları**\r\n\r\n**Status Kodu**\r\n\r\n**Anlamı**\r\n\r\n`401 Unauthorized`\r\n\r\n🔑 JWT token eksik veya geçersiz.\r\n\r\n`403 Forbidden`\r\n\r\n🔐 Yetkiniz olmayan bir işlemi gerçekleştirmeye çalışıyorsunuz.\r\n\r\n`419 Token Expired`\r\n\r\n⏳ JWT token süresi dolmuş. Yeni bir token ile giriş yapın.\r\n\r\n### 📦 **Ürün Yönetimi Hataları**\r\n\r\n**Status Kodu**\r\n\r\n**Anlamı**\r\n\r\n`404 Not Found`\r\n\r\n🛒 Belirtilen ürün bulunamadı.\r\n\r\n`400 Bad Request`\r\n\r\n❌ Eksik veya hatalı ürün bilgisi gönderildi.\r\n\r\n`409 Conflict`\r\n\r\n⚠️ Aynı ürün zaten mevcut.\r\n\r\n### 🛒 **Sipariş Yönetimi Hataları**\r\n\r\n**Status Kodu**\r\n\r\n**Anlamı**\r\n\r\n`404 Not Found`\r\n\r\n📦 Belirtilen sipariş bulunamadı.\r\n\r\n`400 Bad Request`\r\n\r\n❌ Eksik sipariş bilgisi gönderildi.\r\n\r\n`422 Unprocessable Entity`\r\n\r\n❌ Sipariş içeriği doğrulama hatası aldı.\r\n\r\n### 🛠 **Örnek Hata Yanıtı**\r\n\r\n```json\r\n{\r\n   \"status\": 400,\r\n   \"error\": \"Bad Request\",\r\n   \"message\": \"Ürün adı boş olamaz.\"\r\n}\r\n\r\n```\r\n----------\r\n\r\n## 📌 **Gelecekteki Geliştirmeler**\r\n\r\n1️⃣ **Sipariş Filtreleme ve Raporlama (Tarih, Durum, Kullanıcı Bazlı Raporlar)**  \r\n2️⃣ **Performans Optimizasyonu (Asenkron İşlemler, Caching)**  \r\n3️⃣ **CI/CD Pipeline (GitHub Actions ile Otomatik Deployment)**  \r\n4️⃣ **Event-Driven Mimari için Kafka Desteği** 5️⃣ **Yük Dengeleme için Kubernetes Autoscaling**\r\n\r\n\r\n----------\r\n\r\n## 🎯 **Sonuç**\r\n\r\nCoreXCrud, **modern, güvenli ve ölçeklenebilir bir API** olarak geliştirilmiştir. **.NET 8**, **JWT Authentication**, **FluentValidation**, **Serilog**, **AutoMapper** gibi en güncel teknolojilerle desteklenmiştir.\r\n\r\n🚀 **Her şey başarıyla tamamlandı, şimdi projenizi kullanmaya başlayabilirsiniz!** 🔥\r\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecoderpinar%2Fcorexcrudapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthecoderpinar%2Fcorexcrudapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecoderpinar%2Fcorexcrudapi/lists"}