Skip to content

pelinhangisi/java-spring-bootcamp-final-project-add-system

Repository files navigation

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.

nodejs spring postgresql postman

  • Java (Programming Language)

  • Spring Boot (Application Platform)

  • Spring Data JPA (Data Persistance)

  • H2 Database

  • Swagger

  • RabbitMQ

  • Maven

  • Spring Security-Authentication (Keycloak)

  • Postman

  • JUnit ve Mockito (Unit Testing)

  • Docker ...future

    PROJE DIAGRAM

1 222 wedwf 4444444


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.

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 Altyapısı Denendi Ve Çalıştığı Test Edildi

7 test passed



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

A1 A2 A3 A4 A5