Cakir QR Menu, restoranlar, kafeler ve diğer yiyecek-içecek işletmeleri için modern bir dijital menü yönetim sistemidir. QR kod teknolojisi kullanarak müşterilerin akıllı telefonlarından kolayca menülere erişmesini sağlar.
- Temassız menü deneyimi sunmak
- Menü yönetimini dijitalleştirmek
- Müşteri deneyimini iyileştirmek
- İşletmelere merkezi menü yönetimi sağlamak
- Çoklu şirket desteği
- Şirket tipi kategorilendirmesi
- Şirket profil bilgileri yönetimi
- İletişim bilgileri ve adres yönetimi
- Dinamik menü oluşturma ve düzenleme
- Birden fazla menü desteği
- Menü açıklamaları ve detayları
- Menü için QR kod üretimi
- Ürün kategorilendirmesi
- Kategori açıklamaları
- Şirkete özel kategoriler
- Detaylı ürün bilgileri
- Ürün açıklamaları
- Fiyat yönetimi
- Ürün görselleri (çoklu resim desteği)
- Ürün malzemeleri bilgisi
- Ürün müsaitlik durumu
- JWT tabanlı kimlik doğrulama
- Rol tabanlı yetkilendirme (RBAC)
- Email ile doğrulama
- OTP (One-Time Password) doğrulama
- İki faktörlü kimlik doğrulama (2FA)
- Güvenli token yönetimi
- Token iptal mekanizması
- Otomatik QR kod üretimi
- Menü bazlı QR kodlar
- QR kod görsellerinin saklanması
- CQRS pattern ile komut ve sorgu ayrımı
- MediatR ile istek-yanıt yönetimi
- Validation pipeline ile veri doğrulama
- Authorization pipeline ile yetki kontrolü
- Caching mekanizması
- Logging sistemi
- Transaction yönetimi
- Rate limiting
Proje Clean Architecture ve Domain-Driven Design (DDD) prensiplerine göre yapılandırılmıştır.
├── Core (Temel Altyapı Katmanı)
│ ├── Core.Application # CQRS, Pipelines, Base sınıflar
│ ├── Core.Persistence # Repository pattern, EF Core
│ ├── Core.Security # JWT, Hashing, Encryption
│ ├── Core.WebAPI # Base controller, Extensions
│ ├── Core.CrossCuttingConcerns # Exception handling, Logging
│ ├── Core.QrCodeGenerator # QR kod üretim servisi
│ ├── Core.Mailing # Email servisleri
│ ├── Core.ElasticSearch # Elasticsearch entegrasyonu
│ └── Core.Helpers # Yardımcı fonksiyonlar
│
└── QrMenu (İş Mantığı Katmanı)
├── QrMenu.Domain # Entity'ler, Domain modelleri
├── QrMenu.Application # Use cases, CQRS handlers
├── QrMenu.Persistence # Database context, Migrations
├── QrMenu.Infrastructure # External servisler
└── QrMenu.WebAPI # API Controllers, Endpoints
- Separation of Concerns: Her katman kendi sorumluluğuna odaklanır
- Dependency Inversion: Üst katmanlar alt katmanlara bağımlı değildir
- SOLID Principles: Tüm kod SOLID prensiplerine uygun yazılmıştır
- CQRS Pattern: Command ve Query işlemleri ayrılmıştır
- Repository Pattern: Veri erişimi soyutlanmıştır
- .NET 8.0 - Ana framework
- ASP.NET Core WebAPI - RESTful API
- Entity Framework Core - ORM
- MediatR - CQRS implementation
- AutoMapper - Object mapping
- FluentValidation - Validation
- MassTransit - Message broker
- JWT - Authentication
- SQL Server / PostgreSQL - İlişkisel veritabanı
- Entity Framework Core - Database provider
- BCrypt - Password hashing
- JWT Bearer - Token authentication
- AES Encryption - Data encryption
- QRCoder - QR kod üretimi
- Elasticsearch - Arama ve indexleme
- Swashbuckle - API documentation (Swagger)
- Serilog - Structured logging
- .NET 8.0 SDK veya üzeri
- SQL Server veya PostgreSQL
- Visual Studio 2022 veya Visual Studio Code
- Repository'yi klonlayın
git clone https://github.com/ahmetcakr/Cakir-Qr.git
cd Cakir-Qr- Bağımlılıkları yükleyin
dotnet restore QrMenu.sln-
Veritabanı bağlantı ayarlarını yapılandırın
src/QrMenu/QrMenu.WebAPI/appsettings.jsondosyasında ConnectionString'i güncelleyin. -
Veritabanını oluşturun
cd src/QrMenu/QrMenu.Persistence
dotnet ef database update- Uygulamayı çalıştırın
cd ../QrMenu.WebAPI
dotnet run- Swagger UI'a erişin
Tarayıcınızda
https://localhost:5001/swaggeradresine gidin.
Daha detaylı bilgi için aşağıdaki dokümantasyonlara göz atın:
- Mimari Dokümantasyonu - Detaylı mimari açıklamalar
- Özellikler ve Yetenekler - Tüm özelliklerin detaylı açıklaması
- İç Akış ve Veri Akışı - Sistem içindeki akışların detaylı açıklaması
- Geliştirici Kılavuzu - Geliştirme için rehber
Katkılarınızı bekliyoruz! Lütfen değişikliklerinizi pull request olarak gönderin.
Bu proje LICENSE.txt dosyasında belirtilen lisans altında lisanslanmıştır.
Proje Sahibi: Ahmet Çakır
- GitHub: @ahmetcakr