Modern ve ölçeklenebilir bir cafe yönetim sistemi projesi.
- .NET Core 9: En son sürüm .NET Core. Platformlar arası uyumluluk ve performans sağlayan projenin temeli.
- MSSQL: İlişkisel veri tabanı yönetim sistemi.
- Entity Framework Core: Veri tabanı etkileşimleri için Object-Relational Mapping (ORM) aracı.
- LINQ: Veri koleksiyonlarını sorgulamak, verileri filtrelemek veya dönüştürmek gibi işlemleri kolaylaştıran teknoloji.
- Mapster: Farklı tipteki complex objeleri birbilerine otomatik dönüştüren kütüphane.
- FluentValidation: Model doğrulama işlemleri için güçlü ve esnek validasyon kütüphanesi.
- NewId: Benzersiz ID üretimi için performanslı kütüphane.
- Swagger: API'lerin açıklayıcı bir şekilde belgelenmesini sağlayan açık kaynaklı araç.
- Carter: Minimal API'lar için endpoint routing ve configuration sağlayan framework.
- Clean Architecture: Katmanlı mimari yapısı ile bağımlılıkları tersine çeviren, test edilebilir ve sürdürülebilir kod yapısı.
- Dependency Injection: Bağımlılıkları verimli bir şekilde yönetme ve çözme pattern'i.
- Repository Pattern: Veri erişim katmanını soyutlayan ve veri kaynağından bağımsız hale getiren tasarım deseni.
- Unit of Work Pattern: İş birimlerini yöneten ve transaction tutarlılığını sağlayan tasarım deseni.
- Makinenizde yüklü bir .NET Core 9 SDK
- Microsoft SQL Server 2022 Developer Edition kurulmuş ve yapılandırılmış olmalıdır
- Visual Studio 2022 veya Visual Studio Code
- Proje dizini altındaki
diagram.drawiodosyası ile draw.io sitesi üzerinde görüntülenebilir - Microsoft SQL Server Management Studio ile ilgili veri tabanı içinde
Database Diagramsaltında oluşturulabilir
Bu GitHub deposunu yerel makinenize klonlamak için aşağıdaki komutu kullanın:
git clone https://github.com/mirkankacan/IztekCafe.gitcd IztekCafedotnet restoreappsettings.Development.json dosyasındaki connection string'i kendi SQL Server bilgilerinize göre düzenleyin:
{
"ConnectionStrings": {
"SqlServer": "Data Source=MIRKANVICTUS;Initial Catalog=IztekCafeDb;User ID=sa;Password=123456aA*;Connect Timeout=30;Encrypt=False;Trust Server Certificate=True;Application Intent=ReadWrite;Multi Subnet Failover=False;"
}
}Veri tabanını oluşturmak ve tabloları kurmak için:
dotnet ef database updateNot: Eğer
dotnet efkomutu bulunamıyorsa, önce Entity Framework tools'u yükleyin:dotnet tool install --global dotnet-ef
dotnet builddotnet runProje http://localhost:5066 adresinde çalışacaktır.
Proje çalıştırıldıktan sonra Swagger UI'ya şu adresten erişebilirsiniz:
http://localhost:5066/swagger
Bu proje Clean Architecture prensiplerine uygun olarak katmanlı mimari ile tasarlanmıştır:
IztekCafe/
├── src/
│ ├── Api/
│ │ └── IztekCafe.WebApi/ # Presentation Layer
│ │ ├── Endpoints/ # Carter Minimal API Endpoints
│ │ ├── Extensions/ # Extension metotları
│ │ ├── Filters/ # Validation Filters
│ │ ├── appsettings.json # Konfigürasyon dosyası
│ │ └── Program.cs # Uygulama giriş noktası
│ ├── Core/
│ │ ├── IztekCafe.Application/ # Application Layer
│ │ │ ├── Contracts/ # Interface'ler
│ │ │ │ ├── Repositories/ # Repository Pattern Interface'leri
│ │ │ │ ├── Services/ # Service Interface'leri
│ │ │ │ └── UnitOfWork/ # Unit of Work Pattern
│ │ │ ├── Dtos/ # Data Transfer Objects
│ │ │ ├── MappingConfigs/ # Mapster Mapping Configurations
│ │ │ └── Validators/ # FluentValidation Rules
│ │ └── IztekCafe.Domain/ # Domain Layer
│ │ ├── Entities/ # Domain Entities
│ │ ├── Enums/ # Domain Enums
│ │ └── Extensions/ # Domain Extensions
│ └── Infrastructure/
│ └── IztekCafe.Persistance/ # Infrastructure Layer
│ ├── Data/
│ │ ├── Context/ # Entity Framework DbContext
│ │ ├── Configurations/ # EF Entity Configurations
│ │ └── Migrations/ # EF Core Migrations
│ ├── Repositories/ # Repository Pattern Implementations
│ ├── Services/ # Business Logic Services
│ └── UnitOfWork/ # Unit of Work Implementation
└── README.md
- Projeyi başlattıktan sonra
http://localhost:5066/swaggeradresine giderek API endpointlerini görüntüleyebilirsiniz - Swagger UI üzerinden API'ları test edebilirsiniz
- Postman veya benzeri araçlarla API'lara istek gönderebilirsiniz
Proje sahibi: mirkankacan
Herhangi bir sorunuz varsa issue açabilir veya email yoluyla iletişime geçebilirsiniz.