Skip to content

Bu proje, bir telefon rehberi sistemini mikroservisler mimarisi ile geliştirmek amacıyla .NET Core kullanılarak hazırlanmıştır.(This project was prepared using .NET Core to develop a phone book system with microservices architecture.)

License

Notifications You must be signed in to change notification settings

erenmulkoglu/assessment-backend-net

Repository files navigation

PhoneBook Microservices Backend Assessment

Bu proje, bir telefon rehberi sistemini mikroservisler mimarisi ile geliştirmek amacıyla .NET Core kullanılarak hazırlanmıştır.

Kullanılan Teknolojiler:

  • .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

Projenin Özellikleri:

  • 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

Veri Yapıları

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

Teknik Gereksinimler ve Durum:

İ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ı

Projenin Çalıştırılması:

  1. Gerekli bağımlılıkların yüklenmesi
dotnet restore
  1. PostgreSQL ve Kafka'nın Docker üzerinden çalıştırılması
docker-compose -f docker-compose.yml -f docker-compose.kafka.yml up -d
  1. Veritabanı Migration işleminin yapılması
dotnet ef database update -p ReportService -s ReportService
  1. Uygulamanın Başlatılması
dotnet run --project ReportService
  1. Swagger Üzerinden Test Etmek
https://localhost:44393/swagger
  1. Arayüzden Uygulamayı İnceleyin
https://localhost:44393/index.html

Unit Test Çalıştırmak:

Projede yazılan xUnit testlerini çalıştırmak için:

dotnet test

API Özellikleri:

  • 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

Ekstra Özellikler:

  • 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

Not:

Bu proje, teknik değerlendirme süreci için sıfırdan inşa edilerek hazırlanmış bir mimaridir.

About

Bu proje, bir telefon rehberi sistemini mikroservisler mimarisi ile geliştirmek amacıyla .NET Core kullanılarak hazırlanmıştır.(This project was prepared using .NET Core to develop a phone book system with microservices architecture.)

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published