Bu proje, bir telefon rehberi sistemini mikroservisler mimarisi ile geliştirmek amacıyla .NET Core kullanılarak hazırlanmıştır.
- .NET Core 9
- PostgreSQL (Docker üzerinden çalıştırıldı)
- Apache Kafka (Docker üzerinden çalıştırıldı)
- Entity Framework Core
- xUnit (Unit Test)
- Git & GitHub
- Rehberde kişi oluşturma
- Rehberden kişi kaldırma
- Rehberdeki kişiye iletişim bilgisi ekleme
- Rehberdeki kişiden iletişim bilgisi kaldırma
- Rehberdeki kişilerin listelenmesi
- Kişi detaylarının iletişim bilgileri ile birlikte getirilmesi
- Konuma göre rapor talep edilmesi
- Oluşturulan raporların listelenmesi
- Bir raporun detay bilgilerinin getirilmesi
- Raporlar hem JSON hem CSV formatında oluşturulabilir ve indirilebilir
| Alan | Açıklama |
|---|---|
| Kişi (Person) | Kişiye özel bilgiler |
| UUID | Kişiye özel benzersiz ID |
| FirstName | İsim |
| LastName | Soyisim |
| Company | Çalıştığı Şirket |
| ContactInfos | İletişim Bilgileri |
| İletişim Bilgisi (ContactInfo) | İletişim Bilgileri |
| Type | Bilgi Tipi (Telefon Numarası, E-mail, Konum) |
| Content | Bilgi İçeriği (Numara, E-posta, Şehir) |
| Rapor (Report) | Rapor Bilgileri |
| UUID | Raporun benzersiz ID'si |
| RequestedAt | Raporun talep edildiği zaman |
| Status | Raporun Durumu (Preparing veya Completed) |
| CompletedAt | Raporun tamamlanma zamanı |
| FilePath | JSON dosya yolu |
| CsvPath | CSV dosya yolu |
| İstenilen Gereksinim | Durum |
|---|---|
| Projenin sık commitlerle geliştirilmesi | Yapıldı |
| Git üzerinde master, development branch kullanımı | Yapıldı |
| Git üzerinde sürüm taglemesi (v1.0.0) | Yapıldı |
| Minimum %60 unit testing code coverage | Yapıldı |
| Migration yapısının oluşturulması | Yapıldı |
| README.md dökümantasyonu oluşturulması | Yapıldı |
| Servislerin REST API ile iletişim kuruyor, HTTP REST üzerinden haberleşmesi | Yapıldı |
| Rapor kısmında Kafka ile asenkron yapı kullanımı | Yapıldı |
- Gerekli bağımlılıkların yüklenmesi
dotnet restore- PostgreSQL ve Kafka'nın Docker üzerinden çalıştırılması
docker-compose -f docker-compose.yml -f docker-compose.kafka.yml up -d- Veritabanı Migration işleminin yapılması
dotnet ef database update -p ReportService -s ReportService- Uygulamanın Başlatılması
dotnet run --project ReportService- Swagger Üzerinden Test Etmek
https://localhost:44393/swagger- Arayüzden Uygulamayı İnceleyin
https://localhost:44393/index.htmlProjede yazılan xUnit testlerini çalıştırmak için:
dotnet test- POST /api/person : Yeni kişi ekler
- DELETE /api/person/{id} : Kişiyi siler
- POST /api/person/{personId}/contactinfo : Kişiye iletişim bilgisi ekler
- DELETE /api/contactinfo/{id} : İletişim bilgisini siler
- GET /api/person : Tüm kişileri listeler
- GET /api/person/{id} : Bir kişinin iletişim detaylarını getirir
- POST /api/report : Rapor talebi başlatır (asenkron çalışır)
- GET /api/report : Tüm raporları listeler
- GET /api/report/{id} : Bir raporu ve detaylarını getirir
- GET /api/report/{id}/download : JSON rapor dosyasını indirir
- GET /api/report/{id}/download/csv : CSV rapor dosyasını indirir
- DELETE /api/report/{id} : Raporu ve dosyaları siler
- Swagger UI üzerinden test yapılabilir
- JSON ve CSV dosyaları wwwroot/reports klasörüne otomatik kaydedilir
- Arka planda Kafka consumer çalışarak asenkron rapor üretimi sağlar
Bu proje, teknik değerlendirme süreci için sıfırdan inşa edilerek hazırlanmış bir mimaridir.