Emlak İlan Sistemi
Emlakjet Java Spring Boot Bootcamp Final Project
PROJE KONUSU
Emlak İlan Sistemi
Proje Konusu:
Bir ilan sistemi için, ilan bilgilerini alıp ilan kaydı oluşturan, belli kriterlere göre ilan sorgulamalarının
yapılabildiği restful bir uygulamanın Spring Boot framework kullanılarak yazılması
Gereksinimler:
- Kullanıcıdan ad-soyad, telefon, email, password bilgileri alınarak, kullanıcı kaydı
yapılmalıdır.
- Kaydedilen kullanıcının sisteme giriş yapabilmesi için bir authentication servisi
bulunmalıdır.
- Sistemde kayıtlı bir yönetici kullanıcı olmalıdır.
- Kullanıcıların ilan kaydı oluşturabildiği ve güncelleyebildiği bir servis bulunmalıdır.
- İlan kaydı oluşturulduktan sonra veya güncellendikten sonra pasif olmalı, yönetici
kullanıcı bu ilanı onaylamalı veya reddedebilmelidir. (Onay için servis bulunmalı bu
servis yalnızca yönetici kullanıcı tarafından çalıştırılabilmelidir.)
- Oluşturulan ve onaylanan son 10 ilanı listeleyen bir servis olmalıdır.
- Yönetici için, pasif ilanların görüntülenebildiği bir servis olmalıdır. (Görüntülenen
ilanları onaylayabilmek için ilan onay urlleri de döndürülebilir.)
- Onaylanan ilanlar message queue ya alınmalıdır.
- Message queue’daki ilanlar raporlama servisi tarafından alınarak her ilan için rapor
oluşturulmalıdır. (“... ilanı … kullanıcısı tarafından … gün önce oluşturulmuştur. İlan
… kere görüntülenmiştir.” Şeklinde bir metin oluşturulup veritabanına kaydedilebilir.
Görüntülenme sayısı için ilan servisinden bilgi alınabilir. Görüntülenme sayısı her
istekte bir artırılabilir. ”)
- Raporlama servisi rapor oluşturmak için bir api sunmalıdır. Ilan id ile istek
yapıldığında oluşturulan rapor güncellenmelidir.
- Uygulama docker üzerinde çalışmalıdır.
- Uygulama mikroservis mimarisi ile gerçekleştirilmeli ve haberleşmede message broker
kullanılmalıdır.

Proje Kullanım Akışı
- İlk etapta Discovery Server ayağa kaldırılır ve böylece Eureka yani bağlı olduğumuz microservislerin ayakta olanlarının portlarını rahat bir şekilde görebiliriz.

- İkinci olarak Api-Gateway ayağa kaldırılır ve biz bütün Security sistemimizi burası üzerinden yönetiriz. Security için OAuth2 ve Keycloack kullanmamız gereklidir. Keycloak ilk etapta terminalde
docker run -p 8181:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:18.0.2 start-dev
komutu ile açmamız gerekiyor. http://localhost:8181 üzerinden keycloack kısmına bağlanıp "defaul username" : "admin" / "defaul password" : "admin" olarak giriş yapılır. Arkasından yapılması gereken işlemler ilk etapta "realm" ismi oluşturup "Client" oluşturup Servisler kısmını "On" haline getirip daha sonra Token alıp diğer servislerimize postman üzerinden istek atabilmek adına bu tokenları kullanmayı sağlar. Aynı zamanda application.properties kısmına da token endpoint eklemesi yapılması gerekir. Adım adım fotoğraflar ektedir.


Swagger Üzerinden Aldığımız Endpointler


Postman Üzerinden Atılan İsteklere Örnekler, Kullanıcı ve İlan Ekleme Üzerine
- Postman Üzerinde User oluşturup Console kısmında "Kullanıcı {id} ile kaydedildi" mesajı alındı



Integration Test Altyapısı Denendi Ve Çalıştığı Test Edildi

BİRAZ DA "İŞİN KEYİFLİ TARAFLARI"NA DEĞİNELİM
