Skip to content

tunadeveloper/OpenAI.Integrations-RestaurantAPIProject

Repository files navigation

🍽️ WebAPI Restoran Yönetim Sistemi

.NET C# Microsoft SQL Server SignalR OpenAI Entity Framework Core AutoMapper FluentValidation Swagger HTML5 CSS3 JavaScript

📖 Proje Hakkında

Proje, İstemci (Web UI) ve Sunucu (Web API) olmak üzere iki ana katmandan oluşuyor ve RESTful yapısına uygun çalışıyor. Temel veritabanı işlemlerinin (CRUD) yanı sıra, projeye SignalR ile anlık iletişim ve OpenAI API kullanarak yapay zeka özellikleri de ekledim. OpenAI'ı; müşterinin yazmış olduğu mesaja karşılık cevap üretimi, yemek tarifi önerisi ve SignalR ile entegreli anlık mesajlaşma sistemlerinde kullandım.

🚀 Kullanılan Teknolojiler ve Kütüphaneler

⚙️ Web API Katmanı

Veritabanı kayıtları, veri alışverişi ve sistemin arka plandaki tüm işlemlerinin yapıldığı sunucu kısmıdır;

  • Entity Framework Core: Veritabanı işlemlerini Code-First yaklaşımıyla, SQL yazmadan doğrudan C# nesneleri üzerinden güvenli bir şekilde yönetmek için ORM aracı olarak tercih ettim.
  • AutoMapper: Veritabanı Entity'lerim ile dışarıya açtığım DTO'lar (Data Transfer Object) arasındaki dönüştürme (mapping) işlemlerini otomatize ederek kod tekrarının önüne geçtim.
  • FluentValidation: Model sınıflarını Data Annotations ile kirletmeden, DTO'ların doğrulama (validation) işlemlerini temiz ve ayrı bir yapıda kurguladım.
  • Swashbuckle(Swagger): Geliştirdiğim Web API endpointleri test edebilmek amacıyla projeye entegre ettim.
  • Repository & Unit of Work Pattern: Veritabanı erişim katmanını soyutlamak (Generic Repository) ve tüm veritabanı işlemlerini tek bir işlem havuzunda (transaction) güvenle yönetmek için bu tasarım desenlerini uyguladım.

🎨 Web UI Katmanı

Kullanıcıların ve yöneticilerin sistemi kullandığı sayfalar;

  • IHttpClientFactory: Web UI katmanının, Web API projemle ve OpenAI gibi dış servislerle haberleşmesini sağlayan HTTP isteklerini optimize etmek için kullandım.
  • SignalR: Yöneticinin, projedeki yapay zeka (OpenAI) ile anlık olarak mesajlaşabilmek için sisteme ekledim.
  • OpenAI API: Müşterilerin yazdığı mesajlara cevap üretmek, yemek tarifi önermek ve SignalR ile birlikte anlık mesajlaşma sistemini çalıştırmak için kullandım.

📂 Dosya ve Mimari Yapısı

Projeyi, Separation of Concerns (Sorumlulukların Ayrılığı) prensibine sıkı sıkıya bağlı kalarak n-tier (çok katmanlı) bir yapıda tasarladım ve iki ana bağımsız projeye böldüm:

1- RestaurantProject.WebAPILayer (Sunucu / Backend)

Tüm iş mantığını, doğrulama süreçlerini ve veritabanı işlemlerini yürüttüğüm API katmanıdır.

  • Context/: Veritabanı bağlantı (ApiContext) ayarlarını yapılandırdığım klasör.
  • Entities/: Veritabanı tablolarının C# nesnesi olarak karşılıkları.
  • DTOs/: İstemci ile sunucu arasında veri taşımak için oluşturduğum hafifletilmiş nesneler.
  • Controllers/: Gelen HTTP isteklerini karşılayıp yanıt döndüğüm API uç noktaları.
  • Repositories/ ve UnitOfWorks/: Veritabanı işlemlerini soyutlayarak yönettiğim katman.
  • FluentValidation/: DTO nesneleri için yazdığım özel kural ve validasyon sınıfları.
  • AutoMapper/: Entity ve DTO eşleştirme profillerini tuttuğum klasör.
  • Migrations/: Code-First yaklaşımıyla oluşturduğum veritabanı yansımaları.

2- RestaurantProject.WebUILayer (İstemci / Frontend)

Son kullanıcının ve yöneticilerin etkileşime girdiği web arayüzünü bu katmanda MVC mimarisiyle kodladım.

  • Models/ ve DTOs/: UI tarafında kullandığım karşılama nesneleri.
  • ViewComponents/: Kod tekrarını önlemek ve temiz proje yapısı için sayfa içerisinde tekrar kullanılabilir, kendi iş mantığı olan UI parçacıkları.
  • Areas/: Yönetici (Admin) paneline ait modülleri, ana projeden bağımsız bir şekilde izole ettiğim klasör.
  • ChatHub / SignalR: Sistemdeki anlık mesajlaşma ve bildirimleri yönettiğim sınıflar.

🏠 Anasayfa

Image Image Image Image

🛠️ Admin Paneli

Image Image Image Image Image Image Image Image Image Image Image

📑 Swagger'da API Endpointleri

Image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors