Emlak İlan Sistemi

Emlakjet Spring Boot Bootcamp Final Project

nodejs spring postgresql postman

PROJE DIAGRAM

1 222 wedwf 4444444

 - Java 17
 - Maven
 - Java Spring Boot
 - Postman
 - PostgreSQL
 - RabbitMQ
 - Git Bash
 - Integration Test for User-Service
 - Eureka
 - Keycloak (OAuth2 Security)
 - Swagger UI 
 - SOLID
 - Exception Handle
 - Intellij Idea Ultimate
 - AutoCAD (for Diagram)

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

Local çalışacağı için , kullanılan SECURITY YÖNTEMİNDEN DOLAYI akışa göre hareket etmek önem arz etmektedir.R

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

8 eureka


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

k2 oauth2 token alma sasa

Swagger Üzerinden Aldığımız Endpointler

sasasasasa

1111


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ı

1 postman signup isteği konsolda new user saved yazısı

5 token kullanarak get isteği yapabilmemiz



6 ilan ekleme



Integration Test User Service tarafında yapıldı ve Test başarılı sonuçlandı.

7 test passed




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

A1 A2 A3 A4 A5



REFERENCES