Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
100 changes: 15 additions & 85 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,90 +1,20 @@
# Backend (.NET) Assessment
Merhaba,

## Merhaba
Proje geliştirmesinde çoğu tekniği ve yapıları ilk kez kullanarak yaptım bu yönden öğrenme ve
uygulama sürecim daha zor olduğundan bazı kısımlarda eksiklikler ve yanlışlıklar olduğunun farkındayım.
İncelemenizde bunu göz önünde bulundurup eksik ve yanlış kısımları hakkında bana geri dönüşlerinizi
bildirirseniz yanlışlarımı ve eksiklerimi öğrenenerek kendimi geliştirmem konusunda bana yardımcı olursunuz.

Bu değerlendirme işe başvuru sürecindeki adaylar için hazırlanmış olup, katılacak kimselerin yaklaşım ve yetkinliklerini değerlendirmede bizlere yardımcı olmak için tasarlanmıştır.
Proje adımlarında ilk önce database'de iki tablo oluşturdum

Değerlendirme dahilinde; belirtilen süre içerisinde aşağıda kapsamı ve detayları belirlenmiş projeyi tamamlamanızı beklemekteyiz. Dikkat edebileceğiniz bir diğer husus ise, bizlerin doğru bir değerlendirme yapmamıza yardımcı olacak şekilde iletebileceğiniz en iyi çalışmayı bizlere teslim ediyor olmanız.
-dbo.Users : Kişi bilgilerinin tutulduğu tablo
-dbo.CantactInformation : Kişilere ailt iletişim bilgilerinin tutulduğu tablo

Visul Studio da .Net Core projesei oluşturarak db bağlantısını oluşturdum.
Controller a eklediğim
UsersController.cs ve CantactInformationsController.cs lerde GET/POST/PUT/DELETE metotlerını oluşturdum
metotların testti için Swagger kütüphanesini kullandım.

### Senaryo

Birbirleri ile haberleşen minimum iki microservice'in olduğu bir yapı tasarlayarak, basit bir telefon rehberi uygulaması oluşturulması sağlanacaktır.

Beklenen işlevler:
- Rehberde kişi oluşturma
- Rehberde kişi kaldırma
- Rehberdeki kişiye iletişim bilgisi ekleme
- Rehberdeki kişiden iletişim bilgisi kaldırma
- Rehberdeki kişilerin listelenmesi
- Rehberdeki bir kişiyle ilgili iletişim bilgilerinin de yer aldığı detay bilgilerin getirilmesi
- Rehberdeki kişilerin bulundukları konuma göre istatistiklerini çıkartan bir rapor talebi
- Sistemin oluşturduğu raporların listelenmesi
- Sistemin oluşturduğu bir raporun detay bilgilerinin getirilmesi


### Teknik Tasarım

**Kişiler:**
Sistemde teorik anlamda sınırsız sayıda kişi kaydı yapılabilecektir. Her kişiye bağlı iletişim bilgileri de yine sınırsız bir biçimde eklenebilmelidir.

Karşılanması beklenen veri yapısındaki gerekli alanlar aşağıdaki gibidir:

- UUID
- Ad
- Soyad
- Firma
- İletişim Bilgisi
- Bilgi Tipi: Telefon Numarası, E-mail Adresi, Konum
- Bilgi İçeriği

**Rapor:**
Rapor talepleri asenkron çalışacaktır. Kullanıcı bir rapor talep ettiğinde, sistem arkaplanda bu çalışmayı darboğaz yaratmadan sıralı bir biçimde ele alacak; rapor tamamlandığında ise kullanıcının "raporların listelendiği" endpoint üzerinden raporun durumunu "tamamlandı" olarak gözlemleyebilmesi gerekmektedir.

Rapor basitçe aşağıdaki bilgileri içerecektir:

- Konum Bilgisi
- O konumda yer alan rehbere kayıtlı kişi sayısı
- O konumda yer alan rehbere kayıtlı telefon numarası sayısı

Veri yapısı olarak da:

- UUID
- Raporun Talep Edildiği Tarih
- Rapor Durumu (Hazırlanıyor, Tamamlandı)


**NOT:** Değerlendirme ile ilgili beklentiler için *Teknik Beklentiler* bölümünü dikkatli okuyunuz.


### Teknik Beklentiler

- Kullanılacak Teknolojiler:
- .NET Core
- Git
- Postgres veya MongoDB
- Kafka v.b. Message Queue sistemi

- Kısıtlamalar ve Gereksinimler:
- Projenin sık commitlerle Git üzerinde geliştirilmesi
- Git üzerinde master, development branchleri ve sürüm taglemelerinin kullanımı
- Minimum %60 unit testing code coverage
- Projenin veritabanını oluşturacak migration yapısının oluşturulmuş olması
- Projenin nasıl çalıştırılacağına dair README.md dokümantasyonu
- Servislerin HTTP üzerinden REST veya GraphQL protokolleri üzerinden iletişimi sağlanmalı
- Rapor kısmındaki asenkron yapının sağlanması için message queue gibi sistemler kullanılmalıdır


### Çalışmanın Tamamlanması

Çalışma tamamlandığında bu codebase'i bir git repository'sine aktarmanız, çalışma bitiminde de bu repository adresiyle paylaşmanız beklenecektir.


## Sorularınız

Değerlendirmelerle ilgili sorularınızı [github@setur.com.tr](mailto:github@setur.com.tr) adresine iletebilirsiniz.


### Lisans

[Apache 2.0](LICENSE) ile lisanslanmıştır.
Projede yapabildiğim kısımlardan en çok Unit test kısmında zorlandım.
her iki tablonun servislerini Services folderı altında oluşturdum. Test projesinde iki ayrı cs içersinde (UserTest ve
CantactInformationTest) test metotlarını ekledim.
Binary file not shown.
Loading